Firefly开源社区

标题: QUINTIC服务和uuid [打印本页]

作者: thong    时间: 2015-4-16 15:24
标题: QUINTIC服务和uuid
想问下这个QN9020如何添加UUID和服务?
作者: 安安    时间: 2015-4-16 15:45
在project中名为profile的group下的文件,有许多是以profile名称命名的C文件,这些就是建立服务的数据库的文件,UUID就是在这里定义的。
作者: thong    时间: 2015-4-17 14:26
安安 发表于 2015-4-16 15:45
在project中名为profile的group下的文件,有许多是以profile名称命名的C文件,这些就是建立服务的数据库的 ...

有没有这方面的文档或者笔记呢?
作者: 安安    时间: 2015-4-17 15:33
thong 发表于 2015-4-17 14:26
有没有这方面的文档或者笔记呢?

暂时还没有这方面的文档,不过我们已经在着手准备这些资料,如果有需要的话,预计下周可以发布一个如何创建server的教程。你可以先参考一下我对QPPS的profile分析理解去理解一下怎么去创建一个服务。
作者: 安安    时间: 2015-4-17 16:03
thong 发表于 2015-4-17 14:26
有没有这方面的文档或者笔记呢?

http://blog.csdn.net/haby77/article/details/45095159
作者: thong    时间: 2015-4-20 10:29
谢谢楼主
作者: FireBLE_blue    时间: 2015-4-20 14:51
hi,thong
以下代码为某一项目创建server 关键代码,希望能帮到你
  1. static int fireble_create_db_req_handler(ke_msg_id_t const msgid,
  2.                                       struct fireble_create_db_req const *param,
  3.                                       ke_task_id_t const dest_id,
  4.                                       ke_task_id_t const src_id)
  5. {
  6.     //Service Configuration Flag
  7.    volatile uint64_t cfg_flag = 0;//FIREBLE_MANDATORY_SUM_MASK;
  8.    volatile uint8_t  idx_nb = 0;//FIREBLE_MANDATORY_SUM_NUM;//base size of data base
  9.     //Database Creation Status
  10.    volatile uint8_t  status;

  11.     //Save Application ID
  12.     fireble_env.appid = src_id;
  13.        
  14.     /*---------------------------------------------------*
  15.      * fireble private Service Creation
  16.      *---------------------------------------------------*/
  17.     int i = 0;
  18.     struct atts_desc *fireble_db = NULL;
  19.     struct atts_char_desc *char_in_desc_def = NULL;
  20.     struct atts_char_desc *char_out_desc_def = NULL;
  21.     atts_svc_desc_t *service_desc_def = NULL;

  22.                 uint16_t sizeofdb = sizeof(struct atts_desc)+//for service
  23.                                                         FIREBLE_MANDATORY_IN_INCREASE_NUM * (FirebleRXNum) * sizeof(struct atts_desc)+
  24.                                                         FIREBLE_MANDATORY_OUT_INCREASE_NUM * (FirebleTXNum) * sizeof(struct atts_desc);

  25.     fireble_db = (struct atts_desc *)ke_malloc(sizeofdb);

  26.                 /* begin create service db */
  27.     service_desc_def = (atts_svc_desc_t *)ke_malloc(sizeof(atts_svc_desc_t));
  28.                 service_desc_def[0] = FIREBLE_SVC_PRIVATE_UUID;
  29.                 fireble_db[idx_nb].uuid = ATT_DECL_PRIMARY_SERVICE;                       
  30.                 fireble_db[idx_nb].perm = PERM(RD, ENABLE);
  31.                 fireble_db[idx_nb].max_length =        sizeof(service_desc_def[0]);
  32.                 fireble_db[idx_nb].length =        sizeof(service_desc_def[0]);
  33.                 fireble_db[idx_nb++].value = (uint8_t*)&service_desc_def[0];
  34.                 cfg_flag = 1;
  35.                 /* end create service db */


  36.     char_in_desc_def = (struct atts_char_desc *)ke_malloc((FirebleRXNum) * sizeof(struct atts_char_desc));
  37.     char_out_desc_def = (struct atts_char_desc *)ke_malloc((FirebleTXNum) * sizeof(struct atts_char_desc));

  38.     for (i = 0; i < FirebleTXNum; i++)
  39.     {
  40.                         const struct atts_char_desc value_char = ATTS_CHAR(ATT_CHAR_PROP_NTF , 0,
  41.                                                                                                          FIREBLE_DATA_OUT_UUID + i);
  42.                                         char_out_desc_def[i] = value_char;
  43.                        
  44.                         fireble_db[idx_nb].uuid = ATT_DECL_CHARACTERISTIC;                       
  45.                         fireble_db[idx_nb].perm =  PERM(RD, ENABLE);       
  46.                         fireble_db[idx_nb].max_length =  sizeof(char_out_desc_def[i]);
  47.                         fireble_db[idx_nb].length =  sizeof(char_out_desc_def[i]);
  48.                                         fireble_db[idx_nb++].value = (uint8_t*)&char_out_desc_def[i];

  49.                         fireble_db[idx_nb].uuid = FIREBLE_DATA_OUT_UUID + i;
  50.                         fireble_db[idx_nb].perm = PERM(NTF, ENABLE);       
  51.                         fireble_db[idx_nb].max_length =  FIREBLE_SEND_DATA_MAX_LEN;
  52.                         fireble_db[idx_nb].length =  0;
  53.                         fireble_db[idx_nb++].value = NULL;

  54.                         fireble_db[idx_nb].uuid = ATT_DESC_CLIENT_CHAR_CFG;
  55.                         fireble_db[idx_nb].perm = PERM(RD, ENABLE)|PERM(WR, ENABLE);       
  56.                         fireble_db[idx_nb].max_length =  sizeof(uint16_t);
  57.                         fireble_db[idx_nb].length =  0;
  58.                         fireble_db[idx_nb++].value = NULL;

  59.       cfg_flag = (cfg_flag << FIREBLE_MANDATORY_OUT_INCREASE_NUM) | FIREBLE_MANDATORY_OUT_INCREASE_MASK;
  60.     }
  61.     for (i = 0; i < FirebleRXNum; i++)
  62.     {               
  63.                         const struct atts_char_desc value_char = ATTS_CHAR(ATT_CHAR_PROP_WR | ATT_CHAR_PROP_WR_NO_RESP, 0,
  64.                                                                                                                                                                                          FIREBLE_DATA_IN_UUID + i);
  65.                         char_in_desc_def[i] = value_char;

  66.                         fireble_db[idx_nb].uuid = ATT_DECL_CHARACTERISTIC;                       
  67.                         fireble_db[idx_nb].perm =  PERM(RD, ENABLE);       
  68.                         fireble_db[idx_nb].max_length =  sizeof(char_in_desc_def[i]);
  69.                         fireble_db[idx_nb].length =  sizeof(char_in_desc_def[i]);
  70.                         fireble_db[idx_nb++].value = (uint8_t*)&char_in_desc_def[i];

  71.                         fireble_db[idx_nb].uuid = FIREBLE_DATA_IN_UUID + i;
  72.                         fireble_db[idx_nb].perm = PERM(WR, ENABLE);       
  73.                         fireble_db[idx_nb].max_length =  FIREBLE_REC_DATA_MAX_LEN;
  74.                         fireble_db[idx_nb].length =  0;
  75.                         fireble_db[idx_nb++].value = NULL;

  76.       cfg_flag = (cfg_flag << FIREBLE_MANDATORY_IN_INCREASE_NUM) | FIREBLE_MANDATORY_IN_INCREASE_MASK;
  77.     }

  78.     //Add Service Into Database
  79.     status = atts_svc_create_db(&fireble_env.shdl, (uint8_t *)&cfg_flag, idx_nb, NULL,
  80.                                dest_id, &fireble_db[0]);
  81.     ke_free(fireble_db);       
  82.     ke_free(char_in_desc_def);
  83.     ke_free(char_out_desc_def);
  84.           ke_free(service_desc_def);
  85.                
  86.     if(fireble_env.rx.pdata == NULL)
  87.         fireble_env.rx.pdata = (uint8_t*)ke_malloc(FirebleRXNum * FIREBLE_RX_CHAR_PER_VOLUME);

  88.     if(fireble_env.tx.pdata == NULL)
  89.         fireble_env.tx.pdata = (uint8_t*)ke_malloc(FirebleTXNum * FIREBLE_TX_CHAR_PER_VOLUME);
  90.     //Disable FIREBLE
  91.     attsdb_svc_set_permission(fireble_env.shdl, PERM(SVC, DISABLE));

  92.     //Go to Idle State
  93.     if (status == ATT_ERR_NO_ERROR)
  94.     {
  95.         //If we are here, database has been fulfilled with success, go to idle test
  96.         ke_state_set(TASK_FIREBLE, FIREBLE_IDLE);
  97.     }

  98.     //Send response to application
  99.     struct fireble_create_db_cfm * cfm = KE_MSG_ALLOC(FIREBLE_CREATE_DB_CFM, fireble_env.appid,
  100.                                                    TASK_FIREBLE, fireble_create_db_cfm);
  101.     cfm->status = status;
  102.     ke_msg_send(cfm);
  103.     return (KE_MSG_CONSUMED);
  104. }
复制代码


请具体分析,应能对理解UUID和服务有帮助


作者: thong    时间: 2015-4-23 13:57
安安 发表于 2015-4-17 15:33
暂时还没有这方面的文档,不过我们已经在着手准备这些资料,如果有需要的话,预计下周可以发布一个如何创 ...

你好,问你你们添加服务和特征值的文档好了没?
作者: zhang2005    时间: 2015-7-8 10:22
thong 发表于 2015-4-23 13:57
你好,问你你们添加服务和特征值的文档好了没?

同问
作者: 安安    时间: 2015-7-8 15:01
zhang2005 发表于 2015-7-8 10:22
同问

正在制作中{:3_45:}
作者: hiccchen    时间: 2015-8-20 10:33
话说,社区里面现在有关于添加服务的文档了吗?:o
作者: 安安    时间: 2015-8-21 15:05
hiccchen 发表于 2015-8-20 10:33
话说,社区里面现在有关于添加服务的文档了吗?

已经发表上去了哦亲
http://developer.t-firefly.com/thread-2163-1-1.html
作者: hiccchen    时间: 2015-8-21 19:11
:o好的




欢迎光临 Firefly开源社区 (https://dev.t-firefly.com/) Powered by Discuz! X3.1