大家好,
我想修改 p2p-Service 以发送 20 个字节的有效负载,而不是默认情况下仅发送 2 个字节。
我唯一做的就是改变文件“p2p_stm.c”中的通知特性,如下所示:
- COPY_P2P_NOtiFY_UUID(uuid16.Char_UUID_128);
- aci_gatt_add_char(aPeerToPeerContext.PeerToPeerSvcHdle,
- UUID_TYPE_128, &uuid16,
- 20,
- CHAR_PROP_NOTIFY,
- ATTR_PERMISSION_NONE,
- GATT_NOTIFY_ATTRIBUTE_WRITE, /* gattEvtMask */
- 10, /* encryKeySize */
- 1, /* isVariable: 1 */
- &(aPeerToPeerContext.P2PNotifyServerToClientCharHdle));
在那里,我只将第 4 行中的有效负载从 2 更改为 20。是否需要对任何文件中的代码进行进一步修改,以执行我想要的操作?这是我在“p2p_server_app.c”中的 typedef 结构:
- typedef struct{
- uint8_t Device_Led_Selection;
- uint8_t Led1;
- }P2P_LedCharValue_t;
- typedef struct{
- uint8_t Device_Selection;
- uint8_t Button_State;
- uint8_t Value_X_Axis_H;
- uint8_t Value_X_Axis_L;
- uint8_t Value_Y_Axis_H;
- uint8_t Value_Y_Axis_L;
- uint8_t Value_Z_Axis_H;
- uint8_t Value_Z_Axis_L;
- uint32_t Timestamp;
- }P2P_ButtonCharValue_t;
- typedef struct
- {
- uint8_t Notification_Status;
- P2P_LedCharValue_t LedControl;
- uint16_t Parameter;
- P2P_ButtonCharValue_t Acceleration;
- uint16_t ConnectionHandle;
- } P2P_Button_LED_App_Context_t;
正如您将看到的,我发送了 3 轴的加速度数据,还尝试以微秒为单位发送 32 位时间戳。发送加速数据效果很好,但时间戳不是。看起来,时间戳将大约每 15 秒发送一次。这是我发送数据的方式:
- void calculate_timestamp(void){
- uint8_t time_micro32_1 = time_micro32 & 0xFF;
- uint8_t time_micro32_2 = (time_micro32 >> 8) & 0xFF;
- uint8_t time_micro32_3 = (time_micro32 >> 16) & 0xFF;
- uint8_t time_micro32_4 = (time_micro32 >> 24) & 0xFF;
- P2P_Server_App_Context.Acceleration.Timestamp = time_micro32_1;
- P2P_Server_App_Context.Acceleration.Timestamp = time_micro32_2;
- P2P_Server_App_Context.Acceleration.Timestamp = time_micro32_3;
- P2P_Server_App_Context.Acceleration.Timestamp = time_micro32_4;
- }
- void get_acceleration(void){
- P2P_Server_App_Context.Acceleration.Value_X_Axis_H = sendbuf[0];
- P2P_Server_App_Context.Acceleration.Value_X_Axis_L = sendbuf[1];
- P2P_Server_App_Context.Acceleration.Value_Y_Axis_H = sendbuf[2];
- P2P_Server_App_Context.Acceleration.Value_Y_Axis_L = sendbuf[3];
- P2P_Server_App_Context.Acceleration.Value_Z_Axis_H = sendbuf[4];
- P2P_Server_App_Context.Acceleration.Value_Z_Axis_L = sendbuf[5];
我在每次运行中调用方法 get_acceleration() 和 calculate_timestamp()。
知道为什么发送时间戳不起作用吗?是像我想的那样是有效负载,还是有其他原因?
谢谢...