diff --git a/board/msba2-common/drivers/msba2-uart0.c b/board/msba2-common/drivers/msba2-uart0.c index 31a9870aaf..ccfc6d8e04 100644 --- a/board/msba2-common/drivers/msba2-uart0.c +++ b/board/msba2-common/drivers/msba2-uart0.c @@ -202,7 +202,6 @@ bl_uart_init(void) /* irq */ install_irq(UART0_INT, UART0_IRQHandler, 6); -// U0IER |= BIT0 | BIT1; // enable RX+TX irq U0IER |= BIT0; // enable only RX irq return 1; } diff --git a/core/msg.c b/core/msg.c index 349caf7c54..acfdceaf96 100644 --- a/core/msg.c +++ b/core/msg.c @@ -105,7 +105,7 @@ int msg_send_int(msg_t* m, unsigned int target_pid) { tcb_t *target = (tcb_t*)sched_threads[target_pid]; if (target->status == STATUS_RECEIVE_BLOCKED) { - DEBUG("msg_send_int: direct msg copy.\n"); + DEBUG("msg_send_int: direct msg copy from %i to %i.\n", thread_getpid(), target_pid); m->sender_pid = target_pid; diff --git a/drivers/cc110x_ng/cc110x-rx.c b/drivers/cc110x_ng/cc110x-rx.c index d8299644da..bd4035b96a 100644 --- a/drivers/cc110x_ng/cc110x-rx.c +++ b/drivers/cc110x_ng/cc110x-rx.c @@ -14,10 +14,11 @@ #ifdef DBG_IGNORE #include +#include #define IGN_MAX (10) -uint8_t ignored_addr[IGN_MAX]; -static uint8_t is_ignored(uint8_t addr); +radio_address_t ignored_addr[IGN_MAX]; +static uint8_t is_ignored(radio_address_t addr); #endif static uint8_t receive_packet_variable(uint8_t *rxBuffer, uint8_t length); @@ -60,6 +61,7 @@ void cc110x_rx_handler(void) { #ifdef DBG_IGNORE if (is_ignored(cc110x_rx_buffer[rx_buffer_next].packet.phy_src)) { + LED_RED_TOGGLE; return; } #endif @@ -114,8 +116,6 @@ static uint8_t receive_packet_variable(uint8_t *rxBuffer, uint8_t length) { /* Any bytes available in RX FIFO? */ if ((cc110x_read_status(CC1100_RXBYTES) & BYTES_IN_RXFIFO)) { - //LED_GREEN_TOGGLE; - //LED_RED_TOGGLE; // Read length byte (first byte in RX FIFO) cc110x_read_fifo((char*) &packetLength, 1); // Read data from RX FIFO and store in rxBuffer @@ -153,7 +153,6 @@ static uint8_t receive_packet_variable(uint8_t *rxBuffer, uint8_t length) { } /* no bytes in RX FIFO */ else { - //LED_RED_TOGGLE; // RX FIFO get automatically flushed if return value is false return 0; } @@ -172,28 +171,23 @@ static uint8_t receive_packet(uint8_t *rxBuffer, uint8_t length) { #ifdef DBG_IGNORE void cc110x_init_ignore(void) { - uint8_t i; - - for (i = 0; i < IGN_MAX; i++) { - ignored_addr[i] = 0; - } + memset(ignored_addr, 0, IGN_MAX*sizeof(radio_address_t)); } -uint8_t cc110x_add_ignored(uint8_t addr) { +uint8_t cc110x_add_ignored(radio_address_t addr) { uint8_t i = 0; while ((i < IGN_MAX) && ignored_addr[i++]) { printf("i: %hu\n", i); } - printf("Adding %hu to ignore list at position %hu\n", addr, i); - if (i >= IGN_MAX) { + if (i > IGN_MAX) { return 0; } ignored_addr[i-1] = addr; return 1; } -static uint8_t is_ignored(uint8_t addr) { +static uint8_t is_ignored(radio_address_t addr) { uint8_t i; for (i = 0; i < IGN_MAX; i++) { diff --git a/drivers/cc110x_ng/include/cc110x_ng.h b/drivers/cc110x_ng/include/cc110x_ng.h index e504a86bde..5774cd5aea 100644 --- a/drivers/cc110x_ng/include/cc110x_ng.h +++ b/drivers/cc110x_ng/include/cc110x_ng.h @@ -145,7 +145,7 @@ void cc110x_init_ignore(void); * @return 0 if list is full, 1 otherwise * */ -uint8_t cc110x_add_ignored(uint8_t addr); +uint8_t cc110x_add_ignored(radio_address_t addr); #endif diff --git a/sys/chardev_thread.c b/sys/chardev_thread.c index d307829267..84fb97a3b4 100644 --- a/sys/chardev_thread.c +++ b/sys/chardev_thread.c @@ -29,14 +29,16 @@ void chardev_loop(ringbuffer_t *rb) { while (1) { msg_receive(&m); - if (m.sender_pid == pid) { - } else { + if (m.sender_pid != pid) { + DEBUG("Receiving message from another thread"); switch (m.type) { case OPEN: if (reader_pid == -1) { reader_pid = m.sender_pid; - m.content.value = 0; // no error - } else { + /* no error */ + m.content.value = 0; + } + else { m.content.value = -EBUSY; } msg_reply(&m,&m); @@ -44,8 +46,10 @@ void chardev_loop(ringbuffer_t *rb) { case READ: if (m.sender_pid != reader_pid) { m.content.value = -EINVAL; + r = NULL; msg_reply(&m, &m); - } else { + } + else { r = (struct posix_iop_t *)m.content.ptr; } break; @@ -55,7 +59,8 @@ void chardev_loop(ringbuffer_t *rb) { reader_pid = -1; r = NULL; m.content.value = 0; - } else { + } + else { m.content.value = -EINVAL; } msg_reply(&m,&m); @@ -69,7 +74,7 @@ void chardev_loop(ringbuffer_t *rb) { if (rb->avail && (r != NULL)) { int state = disableIRQ(); int nbytes = min(r->nbytes, rb->avail); - DEBUG("uart0_thread: sending %i bytes to pid %i\n", nbytes, reader_pid); + DEBUG("uart0_thread [%i]: sending %i bytes received from %i to pid %i\n", pid, nbytes, m.sender_pid, reader_pid); rb_get_elements(rb, r->buffer, nbytes); r->nbytes = nbytes; @@ -78,7 +83,6 @@ void chardev_loop(ringbuffer_t *rb) { m.content.ptr = (char*)r; msg_reply(&m, &m); - // DEBUG("uart0_thread: sending res=%i\n", res); r = NULL; restoreIRQ(state); diff --git a/sys/shell/shell.c b/sys/shell/shell.c index efebc5d025..1635f428d4 100644 --- a/sys/shell/shell.c +++ b/sys/shell/shell.c @@ -136,7 +136,8 @@ int readline(shell_t *shell, char* buf, int size) { if (c == 10) { *line_buf_ptr = '\0'; return 0; - } else { + } + else { *line_buf_ptr++ = c; } }