Go to the documentation of this file.
64 #include "custom_config.h"
72 #define CGMS_CONNECTION_MAX 10
73 #define CGMS_MEASUREMENT_VAL_LEN_MAX 15
74 #define CGMS_FEATURE_VAL_LEN_MAX 6
75 #define CGMS_STATUS_VAL_LEN_MAX 7
76 #define CGMS_RUN_TIME_VAL_LEN_MAX 4
77 #define CGMS_START_TIME_VAL_LEN_MAX 11
78 #define CGMS_RACP_VAL_LEN_MAX 7
79 #define CGMS_RACP_VAL_LEN_MIN 2
81 #define CGMS_ERROR_MISSING_CRC 0x80
82 #define CGMS_ERROR_INVALID_CRC 0x81
83 #define CGMS_ERROR_CCCD_NOT_CFG 0xFD
84 #define CGMS_ERROR_PRO_IN_PROCESS 0xFE
91 #define CGMS_FEAT_CALIBRATION (0x01 << 0)
92 #define CGMS_FEAT_PATIENT_HIGH_LOW_ALERT (0x01 << 1)
93 #define CGMS_FEAT_HYPO_ALERT (0x01 << 2)
94 #define CGMS_FEAT_HYPER_ALERT (0x01 << 3)
95 #define CGMS_FEAT_RATE_INC_DEC_ALERT (0x01 << 4)
96 #define CGMS_FEAT_DEV_SPEC_ALERT (0x01 << 5)
97 #define CGMS_FEAT_SENSOR_MAL_DET (0x01 << 6)
98 #define CGMS_FEAT_TEMP_HIGH_LOW_DET (0x01 << 7)
99 #define CGMS_FEAT_RESULT_HIGH_LOW_DET (0x01 << 8)
100 #define CGMS_FEAT_LOW_BATTERY_DET (0x01 << 9)
101 #define CGMS_FEAT_SENSOR_TYPE_ERR_DET (0x01 << 10)
102 #define CGMS_FEAT_GENERAL_DEV_FAULT_DET (0x01 << 11)
103 #define CGMS_FEAT_E2E_CRC (0x01 << 12)
104 #define CGMS_FEAT_MULTIPLE_BOND (0x01 << 13)
105 #define CGMS_FEAT_MULTIPLE_SESSION (0x01 << 14)
106 #define CGMS_FEAT_TREND_INFORMATION (0x01 << 15)
107 #define CGMS_FEAT_QUALITY (0x01 << 16)
108 #define CGMS_FEAT_FULL (0x1ffff)
117 #define CGMS_MEAS_FLAG_TREND_INFO_PRESENT (0x01 << 0)
118 #define CGMS_MEAS_FLAG_QUALITY_PRESENT (0x01 << 1)
119 #define CGMS_MEAS_FLAG_WARING_PRESENT (0x01 << 5)
120 #define CGMS_MEAS_FLAG_CAL_TEMP_PRESENT (0x01 << 6)
121 #define CGMS_MEAS_FLAG_STATUS_PRESENT (0x01 << 7)
122 #define CGMS_MEAS_FLAG_FULL (0xe3)
130 #define CGMS_ANN_STATUS_SESSION_STOPPED (0x01 << 0)
131 #define CGMS_ANN_STATUS_DEV_BATTERY_LOW (0x01 << 1)
132 #define CGMS_ANN_STATUS_SENSOR_TYPE_INCORRECT (0x01 << 2)
133 #define CGMS_ANN_STATUS_SENSOR_MALFUNCTION (0x01 << 3)
134 #define CGMS_ANN_STATUS_DEV_SPEC_ALERT (0x01 << 4)
135 #define CGMS_ANN_STATUS_GEN_DEV_FAULT (0x01 << 5)
137 #define CGMS_ANN_CAL_TEMP_TIME_SYNC_REQ (0x01 << 0)
138 #define CGMS_ANN_CAL_TEMP_CAL_NOT_ALLOWED (0x01 << 1)
139 #define CGMS_ANN_CAL_TEMP_CAL_RECOMMENED (0x01 << 2)
140 #define CGMS_ANN_CAL_TEMP_CAL_REQ (0x01 << 3)
141 #define CGMS_ANN_CAL_TEMP_TEMP_TOO_HIGH (0x01 << 4)
142 #define CGMS_ANN_CAL_TEMP_TEMP_TOO_LOW (0x01 << 5)
143 #define CGMS_ANN_CAL_TEMP_CAL_PROCESS_PENDING (0x01 << 6)
145 #define CGMS_ANN_WARN_RESULT_LOWER_THAN_PATIENT_LOW_LVL (0x01 << 0)
146 #define CGMS_ANN_WARN_RESULT_HIGHER_THAN_PATIENT_HIGH_LVL (0x01 << 1)
147 #define CGMS_ANN_WARN_RESULT_LOWER_THAN_HYPO_LVL (0x01 << 2)
148 #define CGMS_ANN_WARN_RESULT_HIGHER_THAN_HYPER_LVL (0x01 << 3)
149 #define CGMS_ANN_WARN_RATE_OF_DECREASE_EXCEEDED (0x01 << 4)
150 #define CGMS_ANN_WARN_RATE_OF_INCREASE_EXCEEDED (0x01 << 5)
151 #define CGMS_ANN_WARN_RESULT_LOWER_THAN_DEV_CAN_PROCESS (0x01 << 6)
152 #define CGMS_ANN_WARN_RESULT_HIGHER_THAN_DEV_CAN_PROCESS (0x01 << 7)
cgms_cal_value_t cal_value
@ CGMS_CP_CODE_GET_HYPO_LVL
cgms_ann_status_t ann_status
@ CGMS_GET_INFO_SES_START_TIME
@ CGMS_CP_CODE_GET_PATIENT_LOW_LVL
uint16_t(* cgms_rec_num_get_func_t)(void)
cgms_rec_num_get_func_t rec_num_get_func
cgms_cal_value_t cal_value
@ CGMS_CMD_RET_CODE_SUCESS
@ CGMS_GET_INFO_SES_RUN_TIME
@ CGMS_CP_CODE_SET_SES_START_TIME
void(* cgms_db_rec_get_func_t)(uint8_t rec_idx, cgms_meas_rec_t *p_rec)
int16_t glucose_concentration
@ CGMS_MEAS_TYPE_CAP_PLASMA
@ CGMS_CCCD_STATUS_MEAS_DISABLED
void(* cgms_cp_cmd_req_handler_t)(uint8_t conn_idx, cgms_cp_cmd_req_t *req)
uint16_t cal_data_record_num
@ CGMS_CMD_RET_CODE_RESERVED
@ CGMS_CCCD_STATUS_FEAT_DISABLED
@ CGMS_CP_CODE_SET_RATE_OF_DEC_LVL
Glucose Measurement structure. This contains glucose measurement value.
@ CGMS_MEAS_TYPE_CAP_BLOOD
@ CGMS_MEAS_TYPE_VEN_PLASMA
void(* cgms_db_rec_delete_func_t)(uint8_t rec_idx)
@ CGMS_CP_CODE_STOP_THE_SESSION
int16_t patient_high_alert_level
@ CGMS_CP_CODE_SET_RATE_OF_INC_LVL
uint16_t since_start_time_minutes
@ CGMS_MEAS_TYPE_ART_PLASMA
int16_t rate_of_inc_alert_level
@ CGMS_CP_CODE_SET_PATIENT_LOW_LVL
cgms_get_info_req_handler_t get_info_req_handler
sdk_err_t cgms_meas_val_send(uint8_t conn_idx, cgms_meas_rec_t *p_rec)
Send cgms measurement value.
@ CGMS_CP_CODE_START_THE_SESSION
@ CGMS_MEAS_TYPE_VEN_BLOOD
@ CGMS_CCCD_STATUS_SPCP_DISABLED
@ CGMS_CCCD_STATUS_RACP_ENABLED
cgms_db_rec_get_func_t rec_get_func
int16_t patient_low_alert_level
cgms_ann_status_t ann_status
@ CGMS_CCCD_STATUS_FEAT_ENABLED
@ CGMS_CP_CODE_SET_HYPER_LVL
@ CGMS_CP_CODE_SET_CAL_VALUE
sdk_err_t cgms_service_init(cgms_init_t *p_cgms_init)
Initialize a Continuous Glucose Monitoring Service instance and add in the DB.
cgms_racp_req_handler_t racp_req_handler
@ CGMS_MEAS_TYPE_UNDET_BLOOD
@ CGMS_CAL_STATUS_OUT_OF_RANGE
@ CGMS_CMD_RET_CODE_NOT_SUPPORT
int16_t rate_of_dec_alert_level
void(* cgms_cccd_change_handler_t)(uint8_t conn_idx, cgms_cccd_status_t cccd_status)
@ CGMS_CP_CODE_GET_CAL_VALUE
@ CGMS_CMD_RET_CODE_PARAM_OUT_OF_RANGE
Continuous Glucose Monitoring Recoerd Access Control Point request value.
uint8_t comm_interval_in_minutes
@ CGMS_CCCD_STATUS_RACP_DISABLED
@ CGMS_CMD_RET_CODE_INVALID_OPERAND
uint16_t sdk_err_t
SDK API result type.
cgms_cp_cmd_code_t cp_code
@ CGMS_CMD_RET_CODE_PROCEDURE_NOT_COMPLETED
@ CGMS_CP_CODE_GET_RATE_OF_INC_LVL
@ CGMS_MEAS_LOC_SUB_TISSUE
@ CGMS_CP_CODE_SET_COM_INTERVAL
Continuous Continuous Glucose Monitoring Monitoring Service Record Access Control Point API.
int16_t rate_of_inc_alert_level
@ CGMS_CP_CODE_SET_HYPO_LVL
@ CGMS_CP_CODE_GET_COM_INTERVAL
cgms_cp_cmd_code_t cp_code
uint8_t comm_interval_in_minutes
uint16_t next_cal_time_minutes
int16_t patient_low_alert_level
@ CGMS_CAL_STATUS_PROCESS_PENGDING
int16_t rate_of_dec_alert_level
@ CGMS_CP_CODE_RESET_DEV_SPEC_ALERT
sdk_err_t cgms_cp_cmd_rsp_send(uint8_t conn_idx, cgms_cp_cmd_rsp_t *p_rsp)
Send cgms control point cmd response.
@ CGMS_CP_CODE_SET_PATIENT_HIGHT_LVL
@ CGMS_GET_INFO_ANN_STATUS
cgms_meas_type_t
CGM measurement type.
cgms_db_rec_delete_func_t rec_delete_func
cgms_cp_cmd_req_handler_t cp_cmd_req_handler
@ CGMS_MEAS_TYPE_ART_BLOOD
void(* cgms_get_info_req_handler_t)(uint8_t conn_idx, cgms_get_info_code_t code, cgms_get_info_req_t *data_out)
cgms_cccd_change_handler_t cccd_change_handler
int16_t hyper_alert_level
@ CGMS_CCCD_STATUS_MEAS_ENABLED
int16_t patient_high_alert_level
sdk_err_t cgms_feature_update(uint32_t feature)
Update cgms feature.
struct __attribute__((packed))
Electronic Shelf Label Service display information format.
@ CGMS_CP_CODE_GET_RATE_OF_DEC_LVL
@ CGMS_CP_CODE_GET_PATIENT_HIGHT_LVL
int16_t hyper_alert_level
@ CGMS_CCCD_STATUS_SPCP_ENABLED
void(* cgms_racp_req_handler_t)(uint8_t conn_idx, cgms_racp_req_t *req)
@ CGMS_MEAS_TYPE_UNDET_PLASMA
cgms_meas_loc_t
CGM measurement location.
@ CGMS_CP_CODE_GET_HYPER_LVL
CGM Service init stucture. This contains all option and data needed for initialization of the service...
cgms_meas_type_t meas_type