SEE 中的数据结构及之间的关系

sensor and sensor_instance

sensor表示一个物理或者虚拟的sensor, sensor instance是具体化了一个配置如采样率

数据结构sensor管理sensor instance, 使用sensor callback function(framework 实现)  调入到 sensor framework 去创建、删除sensor instance等;

数据结构sensor instance 管理sns_request , 使用sensor instance callback (framework实现)调入到 sensor framework 去add/remove/get client request等;

创建一个sensor用户需要实现的接口

按照SEE framework的需求,实现一个sensor用户需要实现

1. 接口:sns_sensor_api 和sns_sensor_instance_api.

2. 保存为处理数据而需要的状态,xxx_sensor_state and xxx_sensor_instance_state, state的内存由frameowork分配和管理,可以保存一些全局变量。

管理sensor依赖的其他sensor:sns_suid_lookup_data

标示一个sensor的字符串数据变量是datatype, 标示一个sensor的ID是

获得SUID的方法是通过sns_stream: suid_stream以datatype为参数。

在xxx_sensor.c中获得依赖sensor的suid, xxx_sensor_instance.c创建访问suid的sns_stream, 然后通过stream发送config请求。

sns_data_stream

在sns_data_stream上传输数据 

sns_request

      if(NULL != state->amd_stream)
      {   
          SNS_INST_PRINTF(LOW, this, "Accel cal Sending on-change reqest to AMD");
          sns_request sensor_req = (sns_request){
              .message_id = SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG,
              .request_len = 0,  
              .request = NULL };
          创建sns_reques, 赋值 messageID, 调用stream api: send_request
          state->amd_stream->api->send_request(state->amd_stream, &sensor_req);
      }

client发送的sns_request: client request, 由xxx_sensor.c的xxx_set_client_request函数处理,函数内部会调用处理messageID: , SNS_STD_SENSOR_MSGID_SNS_STD_ON_CHANGE_CONFIG进而调用xxx_sensor_instance.c的set_client_config.

  sns_sensor_instance*
  sns_xxxx_set_client_request(sns_sensor *const this,
      sns_request const *curr_req,
      sns_request const *new_req,
      bool remove) {
  #if 0
 

sns_sensor_event

sensor_event的发送

      if (!pb_send_event(this, sns_xxxx_event_fields, &event,//payload
          sns_get_system_time(), SNS_PEDOMETER_MSGID_SNS_STEP_EVENT,//messagID 
          &xxxx_suid)// 谁发送的
          ) { 
      } pb_encode

 sensor_event的接收

sensor_instance_api: notify_event

通过stream_api处理数据:pb_decode

  • 1
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值