mirror of git://git.sysmocom.de/ofono
mbim: Add support for 64-bit integers
This commit is contained in:
parent
c4bb058e40
commit
cc196e6503
|
@ -38,7 +38,7 @@
|
||||||
static const char CONTAINER_TYPE_ARRAY = 'a';
|
static const char CONTAINER_TYPE_ARRAY = 'a';
|
||||||
static const char CONTAINER_TYPE_STRUCT = 'r';
|
static const char CONTAINER_TYPE_STRUCT = 'r';
|
||||||
static const char CONTAINER_TYPE_DATABUF = 'd';
|
static const char CONTAINER_TYPE_DATABUF = 'd';
|
||||||
static const char *simple_types = "syqu";
|
static const char *simple_types = "syqut";
|
||||||
|
|
||||||
struct mbim_message {
|
struct mbim_message {
|
||||||
int ref_count;
|
int ref_count;
|
||||||
|
@ -96,6 +96,8 @@ static int get_alignment(const char type)
|
||||||
case 'u':
|
case 'u':
|
||||||
case 's':
|
case 's':
|
||||||
return 4;
|
return 4;
|
||||||
|
case 't':
|
||||||
|
return 4;
|
||||||
case 'a':
|
case 'a':
|
||||||
return 4;
|
return 4;
|
||||||
case 'v':
|
case 'v':
|
||||||
|
@ -114,6 +116,8 @@ static int get_basic_size(const char type)
|
||||||
return 2;
|
return 2;
|
||||||
case 'u':
|
case 'u':
|
||||||
return 4;
|
return 4;
|
||||||
|
case 't':
|
||||||
|
return 8;
|
||||||
default:
|
default:
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -236,6 +240,7 @@ static bool _iter_next_entry_basic(struct mbim_message_iter *iter,
|
||||||
uint8_t uint8_val;
|
uint8_t uint8_val;
|
||||||
uint16_t uint16_val;
|
uint16_t uint16_val;
|
||||||
uint32_t uint32_val;
|
uint32_t uint32_val;
|
||||||
|
uint64_t uint64_val;
|
||||||
uint32_t offset, length;
|
uint32_t offset, length;
|
||||||
const void *data;
|
const void *data;
|
||||||
size_t pos;
|
size_t pos;
|
||||||
|
@ -274,6 +279,14 @@ static bool _iter_next_entry_basic(struct mbim_message_iter *iter,
|
||||||
*(uint32_t *) out = uint32_val;
|
*(uint32_t *) out = uint32_val;
|
||||||
iter->pos = pos + 4;
|
iter->pos = pos + 4;
|
||||||
break;
|
break;
|
||||||
|
case 't':
|
||||||
|
if (pos + 8 > iter->len)
|
||||||
|
return false;
|
||||||
|
data = _iter_get_data(iter, pos);
|
||||||
|
uint64_val = l_get_le64(data);
|
||||||
|
*(uint64_t *) out = uint64_val;
|
||||||
|
iter->pos = pos + 8;
|
||||||
|
break;
|
||||||
case 's':
|
case 's':
|
||||||
/*
|
/*
|
||||||
* String consists of two uint32_t values:
|
* String consists of two uint32_t values:
|
||||||
|
@ -1454,6 +1467,15 @@ static bool append_arguments(struct mbim_message *message,
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case 't':
|
||||||
|
{
|
||||||
|
uint64_t u = va_arg(args, uint64_t);
|
||||||
|
|
||||||
|
if (!mbim_message_builder_append_basic(builder, *s, &u))
|
||||||
|
goto error;
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
case 'v': /* Structure with variable signature */
|
case 'v': /* Structure with variable signature */
|
||||||
{
|
{
|
||||||
if (stack_index == MAX_NESTING)
|
if (stack_index == MAX_NESTING)
|
||||||
|
|
Loading…
Reference in New Issue