Как правильно преобразовать это значение полезной нагрузки в однозначное целое число в задаче C - PullRequest
0 голосов
/ 12 июня 2019

У меня есть два условия, которые преобразуют значение полезной нагрузки. Первый условно работает без проблем.

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 ???). Я также незнаком с преобразованием байтов, битов и т. Д.

...