Skip to content

Commit

Permalink
Factorize test apps display functions.
Browse files Browse the repository at this point in the history
Signed-off-by: David Navarro <david.navarro@intel.com>
  • Loading branch information
David Navarro committed Apr 30, 2015
1 parent 55f6cbf commit 10e8149
Show file tree
Hide file tree
Showing 8 changed files with 322 additions and 338 deletions.
4 changes: 2 additions & 2 deletions tests/TLV/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,12 @@ project (tlvdecode)

SET(LIBLWM2M_DIR ${PROJECT_SOURCE_DIR}/../../core)

include_directories (${LIBLWM2M_DIR})
include_directories (${LIBLWM2M_DIR} ${PROJECT_SOURCE_DIR}/../utils)

add_definitions(-DLWM2M_LITTLE_ENDIAN)

add_subdirectory(${LIBLWM2M_DIR} ${CMAKE_CURRENT_BINARY_DIR}/core)

SET(SOURCES decode.c)
SET(SOURCES decode.c ../utils/commandline.c)

add_executable(tlvdecode ${SOURCES} ${CORE_SOURCES})
174 changes: 10 additions & 164 deletions tests/TLV/decode.c
Original file line number Diff line number Diff line change
Expand Up @@ -21,169 +21,15 @@
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
#include "commandline.h"

static void prv_output_buffer(uint8_t * buffer,
int length)
{
int i;
uint8_t array[16];

if (length == 0 || length > 16) printf("\n");

i = 0;
while (i < length)
{
int j;
printf(" ");

memcpy(array, buffer+i, 16);

for (j = 0 ; j < 16 && i+j < length; j++)
{
printf("%02X ", array[j]);
}
if (length > 16)
{
while (j < 16)
{
printf(" ");
j++;
}
}
printf(" ");
for (j = 0 ; j < 16 && i+j < length; j++)
{
if (isprint(array[j]))
printf("%c ", array[j]);
else
printf(". ");
}
printf("\n");

i += 16;
}
}

void print_indent(int num)
{
int i;

for ( i = 0 ; i< num ; i++)
printf("\t");
}

void dump_tlv(int size,
lwm2m_tlv_t * tlvP,
int indent)
{
int i;

for(i= 0 ; i < size ; i++)
{
print_indent(indent);
printf("type: ");
switch (tlvP[i].type)
{
case LWM2M_TYPE_OBJECT_INSTANCE:
printf("LWM2M_TYPE_OBJECT_INSTANCE\r\n");
break;
case LWM2M_TYPE_RESOURCE_INSTANCE:
printf("LWM2M_TYPE_RESOURCE_INSTANCE\r\n");
break;
case LWM2M_TYPE_MULTIPLE_RESOURCE:
printf("LWM2M_TYPE_MULTIPLE_RESOURCE\r\n");
break;
case LWM2M_TYPE_RESOURCE:
printf("LWM2M_TYPE_RESOURCE\r\n");
break;
default:
printf("unknown (%d)\r\n", (int)tlvP[i].type);
break;
}
print_indent(indent);
printf("id: %d\r\n", tlvP[i].id);
print_indent(indent);
printf("data (%d bytes): ", tlvP[i].length);
prv_output_buffer(tlvP[i].value, tlvP[i].length);
if (tlvP[i].type == LWM2M_TYPE_OBJECT_INSTANCE
|| tlvP[i].type == LWM2M_TYPE_MULTIPLE_RESOURCE)
{
dump_tlv(tlvP[i].length, (lwm2m_tlv_t *)(tlvP[i].value), indent+1);
}
else if (tlvP[i].length <= 8)
{
int64_t value;
if (0 != lwm2m_opaqueToInt(tlvP[i].value, tlvP[i].length, &value))
{
print_indent(indent);
printf(" as int: %ld\r\n", value);
}
}
}
}

void decode(char * buffer,
size_t buffer_len,
int indent)
{
lwm2m_tlv_type_t type;
uint16_t id;
size_t dataIndex;
size_t dataLen;
int length = 0;
int result;

while (0 != (result = lwm2m_decodeTLV(buffer + length, buffer_len - length, &type, &id, &dataIndex, &dataLen)))
{
print_indent(indent);
printf("type: ");
switch (type)
{
case LWM2M_TYPE_OBJECT_INSTANCE:
printf("LWM2M_TYPE_OBJECT_INSTANCE\r\n");
break;
case LWM2M_TYPE_RESOURCE_INSTANCE:
printf("LWM2M_TYPE_RESOURCE_INSTANCE\r\n");
break;
case LWM2M_TYPE_MULTIPLE_RESOURCE:
printf("LWM2M_TYPE_MULTIPLE_RESOURCE\r\n");
break;
case LWM2M_TYPE_RESOURCE:
printf("LWM2M_TYPE_RESOURCE\r\n");
break;
default:
printf("unknown (%d)\r\n", (int)type);
break;
}
print_indent(indent);
printf("id: %d\r\n", id);
print_indent(indent);
printf("data (%d bytes): ", dataLen);
prv_output_buffer(buffer + length + dataIndex, dataLen);
if (type == LWM2M_TYPE_OBJECT_INSTANCE || type == LWM2M_TYPE_MULTIPLE_RESOURCE)
{
decode(buffer + length + dataIndex, dataLen, indent+1);
}
else if (dataLen <= 8)
{
int64_t value;
if (0 != lwm2m_opaqueToInt(buffer + length + dataIndex, dataLen, &value))
{
print_indent(indent);
printf(" as int: %ld\r\n", value);
}
}

length += result;
}
}

int main(int argc, char *argv[])
{
lwm2m_tlv_t * tlvP;
int size;
int length;
char * buffer;
uint8_t * buffer;

char buffer1[] = {0x03, 0x0A, 0xC1, 0x01, 0x14, 0x03, 0x0B, 0xC1, 0x01, 0x15, 0x03, 0x0C, 0xC1, 0x01, 0x16};
char buffer2[] = {0xC8, 0x00, 0x14, 0x4F, 0x70, 0x65, 0x6E, 0x20, 0x4D, 0x6F, 0x62, 0x69, 0x6C, 0x65, 0x20,
Expand All @@ -196,10 +42,10 @@ int main(int argc, char *argv[])
0x0D, 0x51, 0x82, 0x42, 0x8F, 0xC6, 0x0E, 0x2B, 0x30, 0x32, 0x3A, 0x30, 0x30, 0xC1, 0x0F, 0x55};

printf("Buffer 1:\n");
decode(buffer1, sizeof(buffer1), 0);
output_tlv(stdout, buffer1, sizeof(buffer1), 0);
printf("\n\nBuffer 1 using lwm2m_tlv_t:\n");
size = lwm2m_tlv_parse(buffer1, sizeof(buffer1), &tlvP);
dump_tlv(size, tlvP, 0);
dump_tlv(stdout, size, tlvP, 0);
length = lwm2m_tlv_serialize(size, tlvP, &buffer);
if (length != sizeof(buffer1))
{
Expand All @@ -208,9 +54,9 @@ int main(int argc, char *argv[])
else if (memcmp(buffer, buffer1, length) != 0)
{
printf("\n\nSerialize Buffer 1 failed:\n");
prv_output_buffer(buffer, length);
output_buffer(stdout, buffer, length, 0);
printf("\ninstead of:\n");
prv_output_buffer(buffer1, length);
output_buffer(stdout, buffer1, length, 0);
}
else
{
Expand All @@ -219,10 +65,10 @@ int main(int argc, char *argv[])
lwm2m_tlv_free(size, tlvP);

printf("\n\n============\n\nBuffer 2: \r\r\n");
decode(buffer2, sizeof(buffer2), 0);
output_tlv(stdout, buffer2, sizeof(buffer2), 0);
printf("\n\nBuffer 2 using lwm2m_tlv_t: \r\r\n");
size = lwm2m_tlv_parse(buffer2, sizeof(buffer2), &tlvP);
dump_tlv(size, tlvP, 0);
dump_tlv(stdout, size, tlvP, 0);
length = lwm2m_tlv_serialize(size, tlvP, &buffer);
if (length != sizeof(buffer2))
{
Expand All @@ -231,9 +77,9 @@ int main(int argc, char *argv[])
else if (memcmp(buffer, buffer2, length) != 0)
{
printf("\n\nSerialize Buffer 2 failed:\n");
prv_output_buffer(buffer, length);
output_buffer(stdout, buffer, length, 0);
printf("\ninstead of:\n");
prv_output_buffer(buffer2, length);
output_buffer(stdout, buffer2, length, 0);
}
else
{
Expand Down
22 changes: 11 additions & 11 deletions tests/client/lwm2mclient.c
Original file line number Diff line number Diff line change
Expand Up @@ -236,7 +236,7 @@ static void * prv_connect_server(uint16_t secObjInstID, void * userData)
goto exit;
}

fprintf(stdout, "Trying to connect to LWM2M Server at %s:%d\r\n", host, port);
fprintf(stderr, "Trying to connect to LWM2M Server at %s:%d\r\n", host, port);
newConnP = connection_create(dataP->connList, dataP->sock, host, port);
if (newConnP == NULL) {
fprintf(stderr, "Connection creation failed.\r\n");
Expand Down Expand Up @@ -475,28 +475,28 @@ static void prv_display_bootstrap_state(lwm2m_bootstrap_state_t bootstrapState)
{
switch (bootstrapState) {
case NOT_BOOTSTRAPPED:
fprintf(stdout, "NOT BOOTSTRAPPED\r\n");
fprintf(stderr, "NOT BOOTSTRAPPED\r\n");
break;
case BOOTSTRAP_REQUESTED:
fprintf(stdout, "DI BOOTSTRAP REQUESTED\r\n");
fprintf(stderr, "DI BOOTSTRAP REQUESTED\r\n");
break;
case BOOTSTRAP_CLIENT_HOLD_OFF:
fprintf(stdout, "DI BOOTSTRAP CLIENT HOLD OFF\r\n");
fprintf(stderr, "DI BOOTSTRAP CLIENT HOLD OFF\r\n");
break;
case BOOTSTRAP_INITIATED:
fprintf(stdout, "DI BOOTSTRAP INITIATED\r\n");
fprintf(stderr, "DI BOOTSTRAP INITIATED\r\n");
break;
case BOOTSTRAP_PENDING:
fprintf(stdout, "DI BOOTSTRAP PENDING\r\n");
fprintf(stderr, "DI BOOTSTRAP PENDING\r\n");
break;
case BOOTSTRAP_FINISHED:
fprintf(stdout, "DI BOOTSTRAP FINISHED\r\n");
fprintf(stderr, "DI BOOTSTRAP FINISHED\r\n");
break;
case BOOTSTRAP_FAILED:
fprintf(stdout, "DI BOOTSTRAP FAILED\r\n");
fprintf(stderr, "DI BOOTSTRAP FAILED\r\n");
break;
case BOOTSTRAPPED:
fprintf(stdout, "BOOTSTRAPPED\r\n");
fprintf(stderr, "BOOTSTRAPPED\r\n");
break;
default:
break;
Expand Down Expand Up @@ -973,7 +973,7 @@ int main(int argc, char *argv[])
/*
* Display it in the STDERR
*/
output_buffer(stderr, buffer, numBytes);
output_buffer(stderr, buffer, numBytes, 0);

connP = connection_find(data.connList, &addr, addrLen);
if (connP != NULL)
Expand Down Expand Up @@ -1001,7 +1001,7 @@ int main(int argc, char *argv[])
if (numBytes > 1)
{
buffer[numBytes] = 0;
fprintf(stdout, "STDIN %d bytes '%s'\r\n> ", numBytes, buffer);
fprintf(stderr, "STDIN %d bytes '%s'\r\n> ", numBytes, buffer);

/*
* We call the corresponding callback of the typed command passing it the buffer for further arguments
Expand Down
Loading

0 comments on commit 10e8149

Please sign in to comment.