我有两个转换有效负载值的条件。第一个条件工程没有任何问题。
if (cmdType == GaiaCommand_GetCurrentBatteryLevel && requestPayload.length > 1)
{
uint16_t value = 0;
RCTLogInfo(@"batterey level %@", requestPayload);
[requestPayload getBytes:&value range:NSMakeRange(1, sizeof(uint16_t))];
NSInteger battery = CFSwapInt16BigToHost(value);
RCTLogInfo(@"inside the getcurrentbatterylevel if blocK %d", value);
RCTLogInfo(@"inside the battrey level %d", battery);
[self sendEventWithName:OLIVEDEVICE_BATTERY_CHANGED body:@{@"batteryLevel":[NSNumber numberWithInteger:battery]}];
return;
}
日志表明有效负载值是<000fbc>,而值是48143,作为返回值发送的batteryLevel是4028。eventListener然后可以获取该值并将其转换为2位数字值在0到99之间。
第二个条件如下:
else if (cmdType == GaiaCommand_GET_FBC && requestPayload.length > 1)
{
RCTLogInfo(@"this is before we try to read the int value FFFFFFFF");
uint16_t value = 0;
NSLog(@"requestPayload: %@", requestPayload);
// [requestPayload getBytes:&value range:NSMakeRange(1, sizeof(uint16_t))];
NSInteger feedbackCancellationMode = value ;
RCTLogInfo(@"lets see one more message before we try to see value");
[self sendEventWithName:FEEDBACK_CANCELLATION_MODE body:@{@"feedbackValue": [NSNumber numberWithInteger:feedbackCancellationMode]}];
return;
}
有效负载值为<0001>。我知道那行
[requestPayload getBytes:&value range:NSMakeRange(1, sizeof(uint16_t))];
导致错误。我想取值<0001>并返回一个值,以便接收到一个对象,该对象的键为feedbackvalue且值为1或0(因为模式为on或off)。
在我之前的post中,有人提到了一些事情,但是我不确定如何调整范围。.或使用哪种方法,因为我不确定最终值的长度应该是(应该是00 ..还是0?)。我也不熟悉转换字节,位等。