WizziCom Modem command handling library.
WizziComModem.h
- Committer:
- Jeej
- Date:
- 2017-05-09
- Revision:
- 0:e3f3d9ec19fb
File content as of revision 0:e3f3d9ec19fb:
#ifndef _WIZZI_MODEM_H_ #define _WIZZI_MODEM_H_ #include "mbed.h" #include "rtos.h" #include "WizziCom.h" #include "WizziDebug.h" #define TYPEDEF_STRUCT_PACKED typedef struct __attribute__((packed)) typedef enum { WM_ERR_NONE = 0, WM_ERR_NOT_READY = 1, WM_ERR_COM_LINK = 2, WM_ERR_ILLEGAL_FID = 3, WM_ERR_ILLEGAL_FILE_DEF = 4, WM_ERR_UNKNOWN = 0xff } wm_error_code_t; typedef union { uint32_t w; struct { uint32_t cause : 8; uint32_t rfu : 8; uint32_t nb_boot :16; } bf; } boot_status_t; typedef struct { union { uint8_t b[8]; uint32_t w[2]; } uid; uint8_t calib; } wm_status_t; TYPEDEF_STRUCT_PACKED { uint8_t fid; uint8_t type; uint8_t afid; uint8_t ifid; uint8_t prop; uint8_t perm; uint32_t size; uint32_t alloc; } register_file_param_t; typedef union { uint32_t w; struct { uint32_t fid : 8; uint32_t offset : 12; uint32_t size : 12; } bf; } notify_file_param_t; class WizziComModem { typedef void (*WizziComModemBootCallback)(boot_status_t); typedef void (*WizziComModemErrorCallback)(int8_t); private: WizziCom* _com; PinName _reset_pin; Semaphore _modem_ready; Callback<void(boot_status_t)> _boot_callback; Callback<void(int8_t)> _error_callback; void _modem_command(WizziCom* com, WizziComPacket_t* pkt); public: WizziComModem(WizziCom* com, PinName reset_pin = NC); ~WizziComModem(); void attach_boot(WizziComModemBootCallback function); template<class T> void attach_boot(T* object, void (T::*member)(boot_status_t)) { _boot_callback = callback(object, member); } void attach_error(WizziComModemErrorCallback function); template<class T> void attach_error(T* object, void (T::*member)(boot_status_t)) { _error_callback = callback(object, member); } void start_dash7(void); void stop_dash7(void); void software_reset(void); void hardware_reset(void); }; #endif