cc3000 driver with expanded buffers.
Fork of cc3000_hostdriver_mbedsocket by
Revision 56:9ab991c1d2db, committed 2014-05-06
- Comitter:
- heroic
- Date:
- Tue May 06 22:38:34 2014 +0000
- Parent:
- 55:3d640d25a7ec
- Child:
- 57:8caf996d7b6a
- Commit message:
- Stop hci event handler from locking up in the situation where the micro thinks there's an event about to happen and the cc3000 disagrees.
Changed in this revision
--- a/cc3000_event.cpp Tue May 06 21:22:41 2014 +0000 +++ b/cc3000_event.cpp Tue May 06 22:38:34 2014 +0000 @@ -198,8 +198,6 @@ #endif } -DigitalOut led1(p3); - uint8_t *cc3000_event::hci_event_handler(void *ret_param, uint8_t *from, uint8_t *fromlen) { uint8_t *received_data, argument_size; uint16_t length; @@ -208,11 +206,16 @@ uint32_t return_value; uint8_t * RecvParams; uint8_t *RetParams; + int escapeCounter; + escapeCounter = 100000000; while (1) { + escapeCounter--; + if (!escapeCounter) + return NULL; + if (_simple_link.get_data_received_flag() != 0) { - led1=0; received_data = _simple_link.get_received_data(); if (*received_data == HCI_TYPE_EVNT) { @@ -406,7 +409,6 @@ } } - led1=1; if (received_op_code == _simple_link.get_op_code()) { _simple_link.set_op_code(0);
--- a/cc3000_socket.cpp Tue May 06 21:22:41 2014 +0000 +++ b/cc3000_socket.cpp Tue May 06 22:38:34 2014 +0000 @@ -465,7 +465,7 @@ else _event.simplelink_wait_event(HCI_EVNT_SEND, &tSocketSendEvent); - return (len); + return (len); } int32_t cc3000_socket::send(int32_t sd, const void *buf, int32_t len, int32_t flags) {
--- a/cc3000_spi.cpp Tue May 06 21:22:41 2014 +0000 +++ b/cc3000_spi.cpp Tue May 06 22:38:34 2014 +0000 @@ -122,9 +122,7 @@ // If the magic number is overwitten - buffer overrun occurred - we will be stuck here forever! uint8_t *transmit_buffer = _simple_link.get_transmit_buffer(); if (transmit_buffer[CC3000_TX_BUFFER_SIZE - 1] != CC3000_BUFFER_MAGIC_NUMBER) { - // we're probably going to die anyway, if a real buffer overrun has happened. - // try to fix it up and go anyway. - jls - transmit_buffer[CC3000_TX_BUFFER_SIZE - 1] = CC3000_BUFFER_MAGIC_NUMBER; + NVIC_SystemReset(); } if (_spi_info.spi_state == eSPI_STATE_POWERUP) { @@ -242,7 +240,7 @@ if (received_buffer[CC3000_RX_BUFFER_SIZE - 1] != CC3000_BUFFER_MAGIC_NUMBER) { // we're probably going to die anyway, if a real buffer overrun has happened. // try to fix it up and go anyway. - jls - received_buffer[CC3000_RX_BUFFER_SIZE - 1] = CC3000_BUFFER_MAGIC_NUMBER; + NVIC_SystemReset(); } _spi_info.spi_state = eSPI_STATE_IDLE;