6#ifndef CAFFEINE_SAL_DEV_GSM_H
7#define CAFFEINE_SAL_DEV_GSM_H
19#define CFN_SAL_DEV_TYPE_GSM CFN_SAL_TYPE('G', 'S', 'M')
83 cfn_sal_dev_gsm_t *driver, uint16_t index,
char *number_out,
char *message_out,
size_t max_len);
94 const uint8_t *payload,
106 uint32_t peripheral_id,
114 CFN_HAL_POPULATE_DRIVER(
115 driver,
CFN_SAL_DEV_TYPE_GSM, peripheral_id, NULL, dependency, api, phy, config, callback, user_arg);
130 return CFN_HAL_ERROR_BAD_PARAM;
132 driver->base.vmt = (
const struct cfn_hal_api_base_s *) driver->api;
140 return CFN_HAL_ERROR_BAD_PARAM;
150 return CFN_HAL_ERROR_BAD_PARAM;
152 driver->config = config;
159 if (!driver || !config || !driver->config)
161 return CFN_HAL_ERROR_BAD_PARAM;
163 *config = *(driver->config);
164 return CFN_HAL_ERROR_OK;
173 return CFN_HAL_ERROR_BAD_PARAM;
175 driver->cb = callback;
176 driver->cb_user_arg = user_arg;
177 return cfn_hal_base_callback_register(&driver->base,
CFN_SAL_DEV_TYPE_GSM, (cfn_hal_callback_t) callback, user_arg);
181 cfn_hal_power_state_t state)
185 return CFN_HAL_ERROR_BAD_PARAM;
194 return CFN_HAL_ERROR_BAD_PARAM;
203 return CFN_HAL_ERROR_BAD_PARAM;
212 return CFN_HAL_ERROR_BAD_PARAM;
221 return CFN_HAL_ERROR_BAD_PARAM;
230 return CFN_HAL_ERROR_BAD_PARAM;
239 return CFN_HAL_ERROR_BAD_PARAM;
248 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
255 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
262 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
269 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
270 CFN_HAL_CHECK_AND_CALL_FUNC_VARG(
CFN_SAL_DEV_TYPE_GSM, get_signal_quality, driver, error, rssi_dbm);
277 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
278 CFN_HAL_CHECK_AND_CALL_FUNC_VARG(
CFN_SAL_DEV_TYPE_GSM, get_network_status, driver, error, status);
286 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
296 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
297 CFN_HAL_CHECK_AND_CALL_FUNC_VARG(
CFN_SAL_DEV_TYPE_GSM, http_get, driver, error, url, response, len);
303 const uint8_t *payload,
306 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
307 CFN_HAL_CHECK_AND_CALL_FUNC_VARG(
CFN_SAL_DEV_TYPE_GSM, mqtt_publish, driver, error, topic, payload, len);
313 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
314 CFN_HAL_CHECK_AND_CALL_FUNC_VARG(
CFN_SAL_DEV_TYPE_GSM, get_imei, driver, error, imei_out, max_len);
320 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
321 CFN_HAL_CHECK_AND_CALL_FUNC_VARG(
CFN_SAL_DEV_TYPE_GSM, get_imsi, driver, error, imsi_out, max_len);
329 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
330 CFN_HAL_CHECK_AND_CALL_FUNC_VARG(
CFN_SAL_DEV_TYPE_GSM, get_iccid, driver, error, iccid_out, max_len);
338 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
339 CFN_HAL_CHECK_AND_CALL_FUNC_VARG(
CFN_SAL_DEV_TYPE_GSM, get_operator, driver, error, operator_out, max_len);
345 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
346 CFN_HAL_CHECK_AND_CALL_FUNC_VARG(
CFN_SAL_DEV_TYPE_GSM, get_signal_quality_csq, driver, error, csq_out);
350CFN_HAL_INLINE cfn_hal_error_code_t
353 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
354 CFN_HAL_CHECK_AND_CALL_FUNC_VARG(
361 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
368 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
375 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
Core definitions and macros for Caffeine SAL.
#define CFN_SAL_CREATE_DRIVER_TYPE(prefix, config_type, api_type, phy_type, cb_type)
Definition cfn_sal.h:38
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gsm_power_on(cfn_sal_dev_gsm_t *driver)
Definition cfn_sal_dev_gsm.h:246
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gsm_get_signal_quality_csq(cfn_sal_dev_gsm_t *driver, uint8_t *csq_out)
Definition cfn_sal_dev_gsm.h:343
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gsm_error_enable(cfn_sal_dev_gsm_t *driver, uint32_t error_mask)
Definition cfn_sal_dev_gsm.h:217
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gsm_error_get(cfn_sal_dev_gsm_t *driver, uint32_t *error_mask)
Definition cfn_sal_dev_gsm.h:235
cfn_sal_dev_gsm_net_status_t
Definition cfn_sal_dev_gsm.h:34
@ CFN_SAL_DEV_GSM_NET_UNKNOWN
Definition cfn_sal_dev_gsm.h:39
@ CFN_SAL_DEV_GSM_NET_REGISTERED_ROAMING
Definition cfn_sal_dev_gsm.h:40
@ CFN_SAL_DEV_GSM_NET_NOT_REGISTERED
Definition cfn_sal_dev_gsm.h:35
@ CFN_SAL_DEV_GSM_NET_SEARCHING
Definition cfn_sal_dev_gsm.h:37
@ CFN_SAL_DEV_GSM_NET_REGISTERED_HOME
Definition cfn_sal_dev_gsm.h:36
@ CFN_SAL_DEV_GSM_NET_REGISTRATION_DENIED
Definition cfn_sal_dev_gsm.h:38
cfn_hal_error_code_t cfn_sal_dev_gsm_destruct(cfn_sal_dev_gsm_t *driver)
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gsm_get_network_status(cfn_sal_dev_gsm_t *driver, cfn_sal_dev_gsm_net_status_t *status)
Definition cfn_sal_dev_gsm.h:274
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gsm_get_imsi(cfn_sal_dev_gsm_t *driver, char *imsi_out, size_t max_len)
Definition cfn_sal_dev_gsm.h:318
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gsm_answer(cfn_sal_dev_gsm_t *driver)
Definition cfn_sal_dev_gsm.h:366
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gsm_config_set(cfn_sal_dev_gsm_t *driver, const cfn_sal_dev_gsm_config_t *config)
Definition cfn_sal_dev_gsm.h:145
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gsm_callback_register(cfn_sal_dev_gsm_t *driver, cfn_sal_dev_gsm_callback_t callback, void *user_arg)
Definition cfn_sal_dev_gsm.h:167
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gsm_event_get(cfn_sal_dev_gsm_t *driver, uint32_t *event_mask)
Definition cfn_sal_dev_gsm.h:208
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gsm_power_off(cfn_sal_dev_gsm_t *driver)
Definition cfn_sal_dev_gsm.h:253
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gsm_get_signal_quality(cfn_sal_dev_gsm_t *driver, int32_t *rssi_dbm)
Definition cfn_sal_dev_gsm.h:267
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gsm_hangup(cfn_sal_dev_gsm_t *driver)
Definition cfn_sal_dev_gsm.h:373
void(* cfn_sal_dev_gsm_callback_t)(cfn_sal_dev_gsm_t *driver, uint32_t event, uint32_t error, void *user_arg)
Definition cfn_sal_dev_gsm.h:55
#define CFN_SAL_DEV_TYPE_GSM
Definition cfn_sal_dev_gsm.h:19
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gsm_get_imei(cfn_sal_dev_gsm_t *driver, char *imei_out, size_t max_len)
Definition cfn_sal_dev_gsm.h:311
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gsm_init(cfn_sal_dev_gsm_t *driver)
Definition cfn_sal_dev_gsm.h:126
CFN_HAL_VMT_CHECK(struct cfn_sal_dev_gsm_api_s)
struct cfn_sal_dev_gsm_s cfn_sal_dev_gsm_t
Definition cfn_sal_dev_gsm.h:52
cfn_sal_dev_gsm_event_t
Definition cfn_sal_dev_gsm.h:24
@ CFN_SAL_DEV_GSM_EVENT_SMS_RECEIVED
Definition cfn_sal_dev_gsm.h:28
@ CFN_SAL_DEV_GSM_EVENT_NONE
Definition cfn_sal_dev_gsm.h:25
@ CFN_SAL_DEV_GSM_EVENT_MQTT_CONNECTED
Definition cfn_sal_dev_gsm.h:30
@ CFN_SAL_DEV_GSM_EVENT_POWERED_ON
Definition cfn_sal_dev_gsm.h:26
@ CFN_SAL_DEV_GSM_EVENT_CALL_INCOMING
Definition cfn_sal_dev_gsm.h:29
@ CFN_SAL_DEV_GSM_EVENT_NETWORK_REGISTERED
Definition cfn_sal_dev_gsm.h:27
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gsm_power_state_set(cfn_sal_dev_gsm_t *driver, cfn_hal_power_state_t state)
Definition cfn_sal_dev_gsm.h:180
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gsm_send_sms(cfn_sal_dev_gsm_t *driver, const char *number, const char *text)
Definition cfn_sal_dev_gsm.h:282
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gsm_dial(cfn_sal_dev_gsm_t *driver, const char *number)
Definition cfn_sal_dev_gsm.h:359
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gsm_mqtt_publish(cfn_sal_dev_gsm_t *driver, const char *topic, const uint8_t *payload, size_t len)
Definition cfn_sal_dev_gsm.h:301
CFN_HAL_INLINE void cfn_sal_dev_gsm_populate(cfn_sal_dev_gsm_t *driver, uint32_t peripheral_id, void *dependency, const cfn_sal_dev_gsm_api_t *api, const cfn_sal_phy_t *phy, const cfn_sal_dev_gsm_config_t *config, cfn_sal_dev_gsm_callback_t callback, void *user_arg)
Definition cfn_sal_dev_gsm.h:105
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gsm_get_operator(cfn_sal_dev_gsm_t *driver, char *operator_out, size_t max_len)
Definition cfn_sal_dev_gsm.h:334
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gsm_deinit(cfn_sal_dev_gsm_t *driver)
Definition cfn_sal_dev_gsm.h:136
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gsm_http_get(cfn_sal_dev_gsm_t *driver, const char *url, uint8_t *response, size_t *len)
Definition cfn_sal_dev_gsm.h:291
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gsm_read_sms(cfn_sal_dev_gsm_t *driver, uint16_t index, char *number_out, char *message_out, size_t max_len)
Definition cfn_sal_dev_gsm.h:351
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gsm_event_disable(cfn_sal_dev_gsm_t *driver, uint32_t event_mask)
Definition cfn_sal_dev_gsm.h:199
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gsm_get_iccid(cfn_sal_dev_gsm_t *driver, char *iccid_out, size_t max_len)
Definition cfn_sal_dev_gsm.h:325
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gsm_error_disable(cfn_sal_dev_gsm_t *driver, uint32_t error_mask)
Definition cfn_sal_dev_gsm.h:226
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gsm_config_get(cfn_sal_dev_gsm_t *driver, cfn_sal_dev_gsm_config_t *config)
Definition cfn_sal_dev_gsm.h:156
cfn_hal_error_code_t cfn_sal_dev_gsm_construct(cfn_sal_dev_gsm_t *driver, const cfn_sal_dev_gsm_config_t *config, const cfn_sal_phy_t *phy, void *dependency, cfn_sal_dev_gsm_callback_t callback, void *user_arg)
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gsm_event_enable(cfn_sal_dev_gsm_t *driver, uint32_t event_mask)
Definition cfn_sal_dev_gsm.h:190
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_gsm_reset(cfn_sal_dev_gsm_t *driver)
Definition cfn_sal_dev_gsm.h:260
GSM Virtual Method Table (VMT).
Definition cfn_sal_dev_gsm.h:61
cfn_hal_error_code_t(* http_get)(cfn_sal_dev_gsm_t *driver, const char *url, uint8_t *response, size_t *len)
Definition cfn_sal_dev_gsm.h:91
cfn_hal_error_code_t(* hangup)(cfn_sal_dev_gsm_t *driver)
Definition cfn_sal_dev_gsm.h:88
cfn_hal_error_code_t(* power_on)(cfn_sal_dev_gsm_t *driver)
Definition cfn_sal_dev_gsm.h:65
cfn_hal_error_code_t(* get_operator)(cfn_sal_dev_gsm_t *driver, char *operator_out, size_t max_len)
Definition cfn_sal_dev_gsm.h:73
cfn_hal_error_code_t(* get_imei)(cfn_sal_dev_gsm_t *driver, char *imei_out, size_t max_len)
Definition cfn_sal_dev_gsm.h:76
cfn_hal_error_code_t(* get_signal_quality_csq)(cfn_sal_dev_gsm_t *driver, uint8_t *csq_out)
Definition cfn_sal_dev_gsm.h:71
cfn_hal_error_code_t(* get_iccid)(cfn_sal_dev_gsm_t *driver, char *iccid_out, size_t max_len)
Definition cfn_sal_dev_gsm.h:78
cfn_hal_error_code_t(* mqtt_publish)(cfn_sal_dev_gsm_t *driver, const char *topic, const uint8_t *payload, size_t len)
Definition cfn_sal_dev_gsm.h:92
cfn_hal_error_code_t(* dial)(cfn_sal_dev_gsm_t *driver, const char *number)
Definition cfn_sal_dev_gsm.h:86
cfn_hal_error_code_t(* get_signal_quality)(cfn_sal_dev_gsm_t *driver, int32_t *rssi_dbm)
Definition cfn_sal_dev_gsm.h:70
cfn_hal_error_code_t(* power_off)(cfn_sal_dev_gsm_t *driver)
Definition cfn_sal_dev_gsm.h:66
cfn_hal_error_code_t(* get_imsi)(cfn_sal_dev_gsm_t *driver, char *imsi_out, size_t max_len)
Definition cfn_sal_dev_gsm.h:77
cfn_hal_error_code_t(* answer)(cfn_sal_dev_gsm_t *driver)
Definition cfn_sal_dev_gsm.h:87
cfn_hal_error_code_t(* send_sms)(cfn_sal_dev_gsm_t *driver, const char *number, const char *text)
Definition cfn_sal_dev_gsm.h:81
cfn_hal_error_code_t(* get_network_status)(cfn_sal_dev_gsm_t *driver, cfn_sal_dev_gsm_net_status_t *status)
Definition cfn_sal_dev_gsm.h:72
cfn_hal_error_code_t(* reset)(cfn_sal_dev_gsm_t *driver)
Definition cfn_sal_dev_gsm.h:67
cfn_hal_error_code_t(* read_sms)(cfn_sal_dev_gsm_t *driver, uint16_t index, char *number_out, char *message_out, size_t max_len)
Definition cfn_sal_dev_gsm.h:82
cfn_hal_api_base_t base
Definition cfn_sal_dev_gsm.h:62
Definition cfn_sal_dev_gsm.h:46
void * custom
Definition cfn_sal_dev_gsm.h:49
const char * apn
Definition cfn_sal_dev_gsm.h:47
const char * sim_pin
Definition cfn_sal_dev_gsm.h:48
Generic physical mapping for services.
Definition cfn_sal_types.h:26