fprintf(stderr, " %02x", c);
dest += len;
if (*escape) {
+ *escape = false;
switch(c) {
case 0x0A:
*dest = 0x0C;
break;
switch (type) {
- case 0:
+ case 0x00:
blobmsg_add_u32(&status, "concat_ref", (uint32_t) val[0]);
blobmsg_add_u32(&status, "concat_part", (uint32_t) val[2]);
blobmsg_add_u32(&status, "concat_parts", (uint32_t) val[1]);
break;
+ case 0x08:
+ blobmsg_add_u32(&status, "concat_ref", (uint32_t) (val[0] << 8 | val[1]));
+ blobmsg_add_u32(&status, "concat_part", (uint32_t) val[3]);
+ blobmsg_add_u32(&status, "concat_parts", (uint32_t) val[2]);
+ break;
default:
break;
}
str++;
}
- return len;
+ return lower ? len : (len + 1);
}
static int
}
for (i = 0; str[i]; i++) {
- if (str[i] >= '0' || str[i] <= '9')
+ if (str[i] >= '0' && str[i] <= '9')
continue;
ascii = true;
dest[len++] = 0;
len += pdu_encode_7bit_str(&dest[len], str);
- dest[0] = len - 1;
+ dest[0] = strlen(str);
return len;
}
unsigned char protocol_id = 0x00;
unsigned char dcs = 0x00;
- if (!_send.smsc || !*_send.smsc || !_send.target || !*_send.target) {
+ if (!_send.target || !*_send.target) {
uqmi_add_error("Missing argument");
return QMI_CMD_EXIT;
}
- if (strlen(_send.smsc) > 16 || strlen(_send.target) > 16 || strlen(arg) > 160) {
+ if ((_send.smsc && strlen(_send.smsc) > 16) || strlen(_send.target) > 16 || strlen(arg) > 160) {
uqmi_add_error("Argument too long");
return QMI_CMD_EXIT;
}
if (_send.flash)
dcs |= 0x10;
- cur += pdu_encode_number(cur, _send.smsc, true);
+ if (!_send.smsc || !*_send.smsc)
+ *(cur++) = 0;
+ else
+ cur += pdu_encode_number(cur, _send.smsc, true);
+
*(cur++) = first_octet;
*(cur++) = 0; /* reference */