Кодирование и декодирование uint8_t с использованием библиотеки TinyCbor C

Я реализую приложение на C ++ 11 и использую TinyCbor C библиотека для кодирования и декодирования специфических данных приложения, как показано ниже:

#include "cbor.h"#include <iostream>

using namespace std;

int main() {

struct MyTest {
uint8_t varA;
float vabB;
};

MyTest obj;
obj.varA = 100; // If I set it t0 below 20 then it works
obj.varB = 10.10;

uint8_t buff[100];

//Encode
CborEncode encoder;
CborEncode array;
cbor_encoder_init(&encoder, buff, sizeof(buff), 0);

cbor_encoder_create_array(&encode, &array, CborIndefiniteLength);
cbor_encode_simple_value(&array, obj.varA);
cbor_encode_float(&array, obj.varB);
cbor_encoder_close_container(&encoder, &array);

// Decode
CborParser parse;
CborValue value;
cbor_parser_init(buff, sizeof(buff), 0, &parser, &value);

CborValue array;
cbor_value_enter_container(&value, &array);

uint8_t val;
cbor_value_get_simple_type(&array, &val);
// This prints blank
cout << "uint8_t value: " << static_cast<int>(val) << endl;

float fval;
cbor_value_get_simple_type(&array, &fval);
cout << "float value: " << fval << endl;

return 0;
}

Выше код работает, когда я устанавливаю значение uint8_t varA ниже 20, я вижу, что 20 печатается на консоли, но если я установил больше 20, то иногда это дает ошибку CborErrorIllegalSimpleType, Или если установлено значение 21 тогда он возвращает мне тип как CborBooleanType или же CborNullType,

  1. Что не так с кодом

  2. Как кодировать и декодировать uint8_t используя TinyCbor.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector