52 #define PRINTF(...) printf(__VA_ARGS__)
59 lwm2m_plain_text_read_int(
const uint8_t *inbuf,
size_t len, int32_t *value)
63 for(i = 0; i < len; i++) {
64 if(inbuf[i] >=
'0' && inbuf[i] <=
'9') {
65 *value = *value * 10 + (inbuf[i] -
'0');
66 }
else if(inbuf[i] ==
'-' && i == 0) {
79 lwm2m_plain_text_read_float32fix(
const uint8_t *inbuf,
size_t len,
80 int32_t *value,
int bits)
82 int i, dot = 0, neg = 0;
83 int32_t counter, integerpart, frac;
88 for(i = 0; i < len; i++) {
89 if(inbuf[i] >=
'0' && inbuf[i] <=
'9') {
90 counter = counter * 10 + (inbuf[i] -
'0');
92 }
else if(inbuf[i] ==
'.' && dot == 0) {
93 integerpart = counter;
97 }
else if(inbuf[i] ==
'-' && i == 0) {
104 integerpart = counter;
108 *value = integerpart << bits;
110 *value += ((counter << bits) / frac);
112 PRINTF(
"READ FLOATFIX: \"%.*s\" => int(%ld) frac(%ld) f=%ld Value=%ld\n",
113 (
int)len, (
char *)inbuf,
125 lwm2m_plain_text_write_float32fix(uint8_t *outbuf,
size_t outlen,
126 int32_t value,
int bits)
129 unsigned long integer_part;
130 unsigned long frac_part;
143 integer_part = (
unsigned long)(value >> bits);
144 v = value - (integer_part << bits);
145 v = (v * 100) >> bits;
146 frac_part = (
unsigned long)v;
148 n = snprintf((
char *)outbuf, outlen,
"%lu.%02lu", integer_part, frac_part);
149 if(n < 0 || n >= outlen) {
156 write_boolean(
const lwm2m_context_t *ctx, uint8_t *outbuf,
size_t outlen,
171 write_int(
const lwm2m_context_t *ctx, uint8_t *outbuf,
size_t outlen,
174 int n = snprintf((
char *)outbuf, outlen,
"%ld", (
long)value);
175 if(n < 0 || n >= outlen) {
182 write_float32fix(
const lwm2m_context_t *ctx, uint8_t *outbuf,
size_t outlen,
183 int32_t value,
int bits)
185 return lwm2m_plain_text_write_float32fix(outbuf, outlen, value, bits);
189 write_string(
const lwm2m_context_t *ctx, uint8_t *outbuf,
size_t outlen,
190 const char *value,
size_t stringlen)
192 int n = snprintf((
char *)outbuf, outlen,
"%.*s", (
int) stringlen, value);
193 if(n < 0 || n >= outlen) {
199 const lwm2m_writer_t lwm2m_plain_text_writer = {
207 read_int(
const lwm2m_context_t *ctx,
const uint8_t *inbuf,
size_t len,
210 return lwm2m_plain_text_read_int(inbuf, len, value);
214 read_string(
const lwm2m_context_t *ctx,
const uint8_t *inbuf,
size_t len,
215 uint8_t *value,
size_t stringlen)
217 if(stringlen <= len) {
221 memcpy(value, inbuf, len);
227 read_float32fix(
const lwm2m_context_t *ctx,
const uint8_t *inbuf,
size_t len,
228 int32_t *value,
int bits)
230 return lwm2m_plain_text_read_float32fix(inbuf, len, value, bits);
234 read_boolean(
const lwm2m_context_t *ctx,
const uint8_t *inbuf,
size_t len,
238 if(*inbuf ==
'1' || *inbuf ==
'0') {
239 *value = *inbuf ==
'1' ? 1 : 0;
246 const lwm2m_reader_t lwm2m_plain_text_reader = {
Header file for the Contiki OMA LWM2M object API
Header file for the Contiki OMA LWM2M plain text reader / writer