У меня есть два условия, которые преобразуют значение полезной нагрузки. Первый условно работает без проблем.
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 может затем принять это значение и преобразовать его в двузначное числовое значение. от 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> и вернуть значение, чтобы я получил объект, который имеет ключ обратной связи и значение либо 1, либо 0 (поскольку режим включен или выключен).
В моем предыдущем посте кто-то упоминал, что несколько вещей, но я не был уверен в том, как настроить диапазон ... или какой метод использовать, потому что я не уверен, какую длину конечное значение должно быть (должно быть 00 .. или просто 0 ???). Я также незнаком с преобразованием байтов, битов и т. Д.