123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252 |
- #include "aicare_profile.h"
- #include <stdio.h>
- #include <string.h>
- #include "co_printf.h"
- #include "gap_api.h"
- #include "gatt_api.h"
- #include "gatt_sig_uuid.h"
- #include "co_log.h"
-
- #include "aicare_handler.h"
- static uint8_t user_ntf_enable_flag=0;
- const static uint8_t user_svc_uuid[] = AICARE_SVC_UUID;
- #define AICARE_CHAR1_VALUE_LEN 600
- #define AICARE_CHAR2_VALUE_LEN 600
- static uint8_t user_char1_value[AICARE_CHAR1_VALUE_LEN] = {0};
- #define AICARE_CHAR1_DESC_LEN 6
- #define AICARE_CHAR_CCC_LEN 2
- static uint8_t aicare_svc_id = 0;
- static uint8_t conn_svc_idx = 0;
- static gatt_service_t aicare_profile_svc;
- const gatt_attribute_t aicare_profile_att_table[AICARE_IDX_NB] =
- {
-
- [AICARE_IDX_SERVICE]={
- { UUID_SIZE_2, UUID16_ARR(GATT_PRIMARY_SERVICE_UUID) },
- GATT_PROP_READ,
- UUID_SIZE_16,
- (uint8_t*)user_svc_uuid,
- },
-
- [AICARE_IDX_CHAR1_DECLARATION] = {
- { UUID_SIZE_2, UUID16_ARR(GATT_CHARACTER_UUID) },
- GATT_PROP_READ,
- 0,
- NULL,
- },
-
- [AICARE_IDX_CHAR1_VALUE] = {
- { UUID_SIZE_16,AICARE_CHAR1_UUID },
- GATT_PROP_WRITE,
- AICARE_CHAR1_VALUE_LEN,
- NULL,
- },
-
-
- [AICARE_IDX_CHAR2_DECLARATION] = {
- { UUID_SIZE_2, UUID16_ARR(GATT_CHARACTER_UUID) },
- GATT_PROP_READ,
- 0,
- NULL,
- },
-
- [AICARE_IDX_CHAR2_VALUE] = {
- { UUID_SIZE_16,AICARE_CHAR2_UUID },
- GATT_PROP_READ|GATT_PROP_NOTI,
- AICARE_CHAR2_VALUE_LEN,
- NULL,
- },
-
- [AICARE_IDX_CHAR2_CFG] = {
- { UUID_SIZE_2, UUID16_ARR(GATT_CLIENT_CHAR_CFG_UUID) },
- GATT_PROP_READ | GATT_PROP_WRITE,
- 0,
- NULL,
- },
- };
-
- void aicare_send_notify(uint8_t *p_data,uint16_t len)
- {
-
- {
- gatt_ntf_t ntf_att;
- ntf_att.att_idx = AICARE_IDX_CHAR2_VALUE;
- ntf_att.conidx = conn_svc_idx;
- ntf_att.svc_id = aicare_svc_id;
- ntf_att.data_len = len ;
- ntf_att.p_data = p_data;
- gatt_notification(ntf_att);
-
- }
-
-
- }
- static void aicare_gatt_read_cb(uint8_t *p_read, uint16_t *len, uint16_t att_idx)
- {
- switch (att_idx)
- {
- case AICARE_IDX_CHAR1_VALUE:
-
- break;
- case AICARE_IDX_CHAR2_VALUE:
-
- break;
-
- default:
- break;
- }
- co_printf("\r\n Read request idx:%d \r\n", att_idx);
-
-
- }
- static void aicare_gatt_write_cb(uint8_t *write_buf, uint16_t len, uint16_t att_idx)
- {
- co_printf("\r\n Write request idx:%d \r\n", att_idx);
- switch(att_idx)
- {
- case AICARE_IDX_CHAR1_VALUE:
- show_reg(write_buf,len,1);
- aicare_app_data_recv(write_buf,len);
-
- break;
- case AICARE_IDX_CHAR2_VALUE:
-
- show_reg(write_buf,len,1);
- break;
-
- case AICARE_IDX_CHAR2_CFG:
- co_printf("AICARE_IDX_CHAR2_CFG\r\n");
- show_reg(write_buf,len,1);
- break;
-
- }
-
-
- }
- static uint16_t aicare_gatt_msg_handler(gatt_msg_t *p_msg)
- {
- co_printf("\r\naicare_gatt_msg_handler evt:%d conn_idx:%d\r\n",p_msg->msg_evt,p_msg->conn_idx);
- conn_svc_idx = p_msg->conn_idx;
- switch(p_msg->msg_evt)
- {
- case GATTC_MSG_READ_REQ:
- aicare_gatt_read_cb((uint8_t *)(p_msg->param.msg.p_msg_data), &(p_msg->param.msg.msg_len), p_msg->att_idx);
- break;
-
- case GATTC_MSG_WRITE_REQ:
- aicare_gatt_write_cb((uint8_t*)(p_msg->param.msg.p_msg_data), (p_msg->param.msg.msg_len), p_msg->att_idx);
- break;
- case GATTC_MSG_NTF_REQ:
- user_ntf_enable_flag=0;
- break;
- default:
- break;
- }
-
- return p_msg->param.msg.msg_len;
- }
- void aicare_gatt_add_service(void)
- {
- aicare_profile_svc.p_att_tb = aicare_profile_att_table;
- aicare_profile_svc.att_nb = AICARE_IDX_NB;
- aicare_profile_svc.gatt_msg_handler = aicare_gatt_msg_handler;
-
- aicare_svc_id = gatt_add_service(&aicare_profile_svc);
-
- co_printf("aicare_svc_id:%d",aicare_svc_id);
- }
|