fix logging so that we use printf during sim, and use logs when debug is defined
Project: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/commit/29a11be7 Tree: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/tree/29a11be7 Diff: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/diff/29a11be7 Branch: refs/heads/develop Commit: 29a11be746551e3c2b8c8f17407274669d739b5b Parents: 7f682f6 Author: Paul Dietrich <paulfdietr...@yahoo.com> Authored: Fri Sep 16 15:54:27 2016 -0700 Committer: Paul Dietrich <paulfdietr...@yahoo.com> Committed: Wed Sep 21 10:48:28 2016 -0700 ---------------------------------------------------------------------- libs/iotivity/pkg.yml | 1 + libs/iotivity/src/port/mynewt/ip_adaptor.c | 79 +++++++------------------ libs/iotivity/src/port/mynewt/log.c | 43 ++++++++++++++ libs/iotivity/src/port/oc_log.h | 27 ++++++++- 4 files changed, 90 insertions(+), 60 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/29a11be7/libs/iotivity/pkg.yml ---------------------------------------------------------------------- diff --git a/libs/iotivity/pkg.yml b/libs/iotivity/pkg.yml index e5c95fb..87b4b45 100644 --- a/libs/iotivity/pkg.yml +++ b/libs/iotivity/pkg.yml @@ -29,6 +29,7 @@ pkg.deps: - "@apache-mynewt-core/sys/mn_socket" - "@apache-mynewt-core/sys/log" +# remove debug option to save logging pkg.cflags: -std=c99 -DDEBUG=1 -DSECURE=0 http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/29a11be7/libs/iotivity/src/port/mynewt/ip_adaptor.c ---------------------------------------------------------------------- diff --git a/libs/iotivity/src/port/mynewt/ip_adaptor.c b/libs/iotivity/src/port/mynewt/ip_adaptor.c index dfb1f9c..9b8bbff 100644 --- a/libs/iotivity/src/port/mynewt/ip_adaptor.c +++ b/libs/iotivity/src/port/mynewt/ip_adaptor.c @@ -27,6 +27,7 @@ #include "../oc_network_events_mutex.h" #include "../oc_connectivity.h" #include "oc_buffer.h" +#include "../oc_log.h" #ifdef OC_SECURITY #error This implementation does not yet support security @@ -53,29 +54,6 @@ struct mn_socket *ucast; struct os_sem oc_read_sem; struct os_sem oc_write_sem; -/* logging data for this module. TODO, the application should - * define the logging strategy for this module */ -#define MAX_CBMEM_BUF (600) -static uint32_t *cbmem_buf; -static struct cbmem cbmem; -struct log oc_log; - -static int oc_log_init(void) { - - log_init(); - - cbmem_buf = malloc(sizeof(uint32_t) * MAX_CBMEM_BUF); - if (cbmem_buf == NULL) { - return -1; - } - - cbmem_init(&cbmem, cbmem_buf, MAX_CBMEM_BUF); - log_register("iot", &oc_log, &log_cbmem_handler, &cbmem); - - LOG_INFO(&oc_log, LOG_MODULE_IOTIVITY, "OC Init"); - return 0; -} - /* not sure if these semaphores are necessary yet. If we are running * all of this from one task, we may not need these */ static struct os_mutex oc_net_mutex; @@ -109,8 +87,7 @@ oc_send_buffer(oc_message_t *message) int rc; while (1) { - LOG_INFO(&oc_log, LOG_MODULE_IOTIVITY, - "attempt send buffer %u\n", message->length); + LOG("attempt send buffer %lu\n", message->length); to.msin6_len = sizeof(to); to.msin6_family = MN_AF_INET6; @@ -128,8 +105,7 @@ oc_send_buffer(oc_message_t *message) rc = mn_sendto(send_sock, &m, (struct mn_sockaddr *) &to); /* TODO what to do if this fails, we can't keep the buffer */ if (rc != 0) { - LOG_ERROR(&oc_log, LOG_MODULE_IOTIVITY, - "Failed sending buffer %u\n", message->length); + ERROR("Failed sending buffer %lu\n", message->length); } else { break; } @@ -146,7 +122,7 @@ oc_attempt_rx(struct mn_socket * rxsock) { oc_message_t *message = NULL; struct mn_sockaddr_in6 from; - LOG_DEBUG(&oc_log, LOG_MODULE_IOTIVITY, "attempt rx from %u\n", rxsock); + LOG("attempt rx from %p\n", rxsock); rc= mn_recvfrom(rxsock, &m, (struct mn_sockaddr *) &from); @@ -160,23 +136,22 @@ oc_attempt_rx(struct mn_socket * rxsock) { pkt = OS_MBUF_PKTHDR(m); - LOG_DEBUG(&oc_log, LOG_MODULE_IOTIVITY, - "rx from %u %p-%u\n", rxsock, pkt, pkt->omp_len); + LOG("rx from %p %p-%u\n", rxsock, pkt, pkt->omp_len); message = oc_allocate_message(); if (NULL == message) { - /* TODO log an error that we dropped a frame */ + ERROR("Could not allocate OC message buffer\n"); goto rx_attempt_err; } if (pkt->omp_len > MAX_PAYLOAD_SIZE) { - /* TODO what do we do with this */ + ERROR("Message to large for OC message buffer\n"); goto rx_attempt_err; } /* copy to message from mbuf chain */ rc = os_mbuf_copydata(m, 0, pkt->omp_len, message->data); if (rc != 0) { - /* TODO what do we do with this */ + ERROR("Failed to copy message from mbuf to OC message buffer \n"); goto rx_attempt_err; } @@ -189,9 +164,7 @@ oc_attempt_rx(struct mn_socket * rxsock) { message->endpoint.ipv6_addr.scope = from.msin6_scope_id; message->endpoint.ipv6_addr.port = ntohs(from.msin6_port); - LOG_INFO(&oc_log, LOG_MODULE_IOTIVITY, "rx from %u len %u\n", - rxsock, message->length); - + LOG("Successfully rx from %p len %lu\n", rxsock, message->length); return message; /* add the addr info to the message */ @@ -261,22 +234,19 @@ oc_init_net_task(void) { /* start this thing running to check right away */ rc = os_sem_init(&oc_read_sem, 1); if (0 != rc) { - LOG_ERROR(&oc_log, LOG_MODULE_IOTIVITY, - "Could not initialize oc read sem\n"); + ERROR("Could not initialize oc read sem\n"); return rc; } rc = os_sem_init(&oc_write_sem, 1); if (0 != rc) { - LOG_ERROR(&oc_log, LOG_MODULE_IOTIVITY, - "Could not initialize oc write sem\n"); + ERROR("Could not initialize oc write sem\n"); return rc; } oc_stack = (os_stack_t*) malloc(sizeof(os_stack_t)*OC_NET_TASK_STACK_SIZE); if (NULL == oc_stack) { - LOG_ERROR(&oc_log, LOG_MODULE_IOTIVITY, - "Could not malloc oc stack\n"); + ERROR("Could not malloc oc stack\n"); return -1; } @@ -285,7 +255,7 @@ oc_init_net_task(void) { oc_stack, OC_NET_TASK_STACK_SIZE); if (rc != 0) { - LOG_ERROR(&oc_log, LOG_MODULE_IOTIVITY, "Could not start oc task\n"); + ERROR("Could not start oc task\n"); free(oc_stack); } @@ -295,7 +265,7 @@ oc_init_net_task(void) { void oc_connectivity_shutdown(void) { - LOG_INFO(&oc_log, LOG_MODULE_IOTIVITY, "OC shutdown"); + LOG("OC shutdown"); if (ucast) { mn_close(ucast); @@ -317,21 +287,18 @@ oc_connectivity_init(void) rc = oc_log_init(); if ( rc != 0) { - LOG_ERROR(&oc_log, LOG_MODULE_IOTIVITY, - "Could not create oc logging\n"); + ERROR("Could not create oc logging\n"); return rc; } rc = mn_socket(&ucast, MN_PF_INET6, MN_SOCK_DGRAM, 0); if ( rc != 0 || !ucast ) { - LOG_ERROR(&oc_log, LOG_MODULE_IOTIVITY, - "Could not create oc unicast socket\n"); + ERROR("Could not create oc unicast socket\n"); return rc; } rc = mn_socket(&mcast, MN_PF_INET6, MN_SOCK_DGRAM, 0); if ( rc != 0 || !mcast ) { mn_close(ucast); - LOG_ERROR(&oc_log, LOG_MODULE_IOTIVITY, - "Could not create oc multicast socket\n"); + ERROR("Could not create oc multicast socket\n"); return rc; } mn_socket_set_cbs(ucast, ucast, &oc_sock_cbs); @@ -345,8 +312,7 @@ oc_connectivity_init(void) rc = mn_bind(ucast, (struct mn_sockaddr *)&sin); if (rc != 0) { - LOG_ERROR(&oc_log, LOG_MODULE_IOTIVITY, - "Could not bind oc unicast socket\n"); + ERROR("Could not bind oc unicast socket\n"); goto oc_connectivity_init_err; } @@ -369,20 +335,17 @@ oc_connectivity_init(void) rc = mn_setsockopt(mcast, MN_SO_LEVEL, MN_MCAST_JOIN_GROUP, &join); if (rc != 0) { - LOG_ERROR(&oc_log, LOG_MODULE_IOTIVITY, - "Could not join multicast group on %s\n", itf.mif_name); + ERROR("Could not join multicast group on %s\n", itf.mif_name); continue; } - LOG_INFO(&oc_log, LOG_MODULE_IOTIVITY, - "Joined Coap multicast grop on %s\n", itf.mif_name); + LOG("Joined Coap multicast grop on %s\n", itf.mif_name); } sin.msin6_port = htons(COAP_PORT_UNSECURED); rc = mn_bind(mcast, (struct mn_sockaddr *)&sin); if (rc != 0) { - LOG_ERROR(&oc_log, LOG_MODULE_IOTIVITY, - "Could not bind oc multicast socket\n"); + ERROR("Could not bind oc multicast socket\n"); goto oc_connectivity_init_err; } http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/29a11be7/libs/iotivity/src/port/mynewt/log.c ---------------------------------------------------------------------- diff --git a/libs/iotivity/src/port/mynewt/log.c b/libs/iotivity/src/port/mynewt/log.c new file mode 100644 index 0000000..8c76fc9 --- /dev/null +++ b/libs/iotivity/src/port/mynewt/log.c @@ -0,0 +1,43 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +#include <log/log.h> + +/* logging data for this module. TODO, the application should + * define the logging strategy for this module */ +#define MAX_CBMEM_BUF (600) +static uint32_t *cbmem_buf; +static struct cbmem cbmem; +struct log oc_log; + +int +oc_log_init(void) { + + log_init(); + + cbmem_buf = malloc(sizeof(uint32_t) * MAX_CBMEM_BUF); + if (cbmem_buf == NULL) { + return -1; + } + + cbmem_init(&cbmem, cbmem_buf, MAX_CBMEM_BUF); + log_register("iot", &oc_log, &log_cbmem_handler, &cbmem); + + LOG_INFO(&oc_log, LOG_MODULE_IOTIVITY, "OC Init"); + return 0; +} http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/29a11be7/libs/iotivity/src/port/oc_log.h ---------------------------------------------------------------------- diff --git a/libs/iotivity/src/port/oc_log.h b/libs/iotivity/src/port/oc_log.h index c03233e..6744499 100644 --- a/libs/iotivity/src/port/oc_log.h +++ b/libs/iotivity/src/port/oc_log.h @@ -23,6 +23,20 @@ #define PRINT(...) printf(__VA_ARGS__) #define PRINTipaddr(endpoint) \ + PRINT( \ + "[%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%" \ + "02x]:%d", \ + ((endpoint).ipv6_addr.address)[0], ((endpoint).ipv6_addr.address)[1], \ + ((endpoint).ipv6_addr.address)[2], ((endpoint).ipv6_addr.address)[3], \ + ((endpoint).ipv6_addr.address)[4], ((endpoint).ipv6_addr.address)[5], \ + ((endpoint).ipv6_addr.address)[6], ((endpoint).ipv6_addr.address)[7], \ + ((endpoint).ipv6_addr.address)[8], ((endpoint).ipv6_addr.address)[9], \ + ((endpoint).ipv6_addr.address)[10], ((endpoint).ipv6_addr.address)[11], \ + ((endpoint).ipv6_addr.address)[12], ((endpoint).ipv6_addr.address)[13], \ + ((endpoint).ipv6_addr.address)[14], ((endpoint).ipv6_addr.address)[15], \ + (endpoint).ipv6_addr.port) + +#define LogMynewtipaddr(endpoint) \ {\ char tmp_buf[16*3+6]; /* 16 octets plus port */ \ sprintf(tmp_buf, \ @@ -40,12 +54,21 @@ LOG_INFO(&oc_log, LOG_MODULE_IOTIVITY, "%s", tmp_buf); \ } -#if DEBUG -#define LOG(...) LOG_INFO(&oc_log, LOG_MODULE_IOTIVITY,__VA_ARGS__) +#if defined(ARCH_sim) +#define LOG(...) PRINT(__VA_ARGS__) +#define ERROR(...) LOG(__VA_ARGS__) #define LOGipaddr(endpoint) PRINTipaddr(endpoint) +#define oc_log_init() 0 +#elif defined(DEBUG) +int oc_log_init(void); +#define LOG(...) LOG_INFO(&oc_log, LOG_MODULE_IOTIVITY,__VA_ARGS__) +#define ERROR(...) LOG_ERROR(&oc_log, LOG_MODULE_IOTIVITY,__VA_ARGS__) +#define LOGipaddr(endpoint) LogMynewtipaddr(endpoint) #else #define LOG(...) +#define ERROR(...) #define LOGipaddr(endpoint) +#define oc_log_init() 0 #endif #endif /* OC_LOG_H */