From ad51e4943c2551ae6b6e7c28f54ad7a67f240e2c Mon Sep 17 00:00:00 2001 From: Jake Read <jake.read@cba.mit.edu> Date: Thu, 7 Dec 2017 21:57:17 -0500 Subject: [PATCH] ready to packet handle integrate --- embedded/README.md | 7 ++- .../.vs/atsams70-tinyrouter/v14/.atsuo | Bin 97280 -> 90624 bytes .../atsams70-tinyrouter/src/main.c | 51 ++++++++++-------- .../atsams70-tinyrouter/src/packet_handling.c | 4 +- .../atsams70-tinyrouter/src/tinyport.c | 6 +-- js/serialterminal.js | 2 +- 6 files changed, 39 insertions(+), 31 deletions(-) diff --git a/embedded/README.md b/embedded/README.md index 6b147e3..ce67d76 100644 --- a/embedded/README.md +++ b/embedded/README.md @@ -1,11 +1,10 @@ # 'API' -Currently: test packet parsing w/ 'real' packet ... try py terminal? loop return - - need healthy tx transmit side of ringbuffer output... - - need to increment hop count ... in packet handler? +[start][destination][destination][hopcount][source][source][#bytestotal][byte_7][byte_6]...[byte_n] 0-255 bytes +Packet Loops ... -[start][destination][destination][hopcount][source][source][#bytestotal][byte_7][byte_6]...[byte_n] 0-255 bytes +do Packet Handle cleanup / integrate with new node-> incl. ports # Interrupts diff --git a/embedded/atsams70-tinyrouter/.vs/atsams70-tinyrouter/v14/.atsuo b/embedded/atsams70-tinyrouter/.vs/atsams70-tinyrouter/v14/.atsuo index edbe47cf14888b7b780a959c3b96a96b3d0fc492..1d7b2859a7922a00d97e2b43467f0c7ca1707b89 100644 GIT binary patch delta 2851 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 delta 10903 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 diff --git a/embedded/atsams70-tinyrouter/atsams70-tinyrouter/src/main.c b/embedded/atsams70-tinyrouter/atsams70-tinyrouter/src/main.c index bd0add5..91ee4d1 100644 --- a/embedded/atsams70-tinyrouter/atsams70-tinyrouter/src/main.c +++ b/embedded/atsams70-tinyrouter/atsams70-tinyrouter/src/main.c @@ -203,21 +203,7 @@ void setallstatus(void){ pin_set(&p4lb); } -int main (void){ - /* - node_t* n = (node_t*)malloc(sizeof(node_t)); - n->myAddress = ADDRESS; - n->portBufferSizes = (uint8_t*)malloc(32); - for (int port = 0; port < 4; port++) { - n->portBufferSizes[port] = 0; - } - n->LUT = (uint8_t**)malloc(4096); - for (int i = 0; i < 4; i++) { - for (int port = 0; port < 4; port++) { - n->LUT[i][port] = 255; - } - } - */ +int main (void){ board_init(); // asf sysclk_init(); // asf clock @@ -236,8 +222,6 @@ int main (void){ tp_init(&tp3); tp_init(&tp4); - tinyport_t ports[4] = {tp1, tp2, tp3, tp4}; - setupinterrupts(); // turns interrupt NVICs on setallstatus(); // lights off @@ -248,6 +232,23 @@ int main (void){ tp_testlights(&tp3); tp_testlights(&tp2); tp_testlights(&tp4); + + tinyport_t ports[4] = {tp1, tp2, tp3, tp4}; + + /* + node_t* n;// = (node_t*)malloc(sizeof(node_t)); + n->myAddress = ADDRESS; + n->portBufferSizes = (uint8_t*)malloc(32); + for (int port = 0; port < 4; port++) { + n->portBufferSizes[port] = 0; + } + n->LUT = (uint8_t**)malloc(4096); + for (int i = 0; i < 1024; i++) { + for (int port = 0; port < 4; port++) { + n->LUT[i][port] = 255; // MD w/ malloc ? we want [1024][4], no? + } + } + */ packet_t packetlooper; @@ -266,12 +267,12 @@ int main (void){ packet_clean(&ports[i].packet); // reset packet states ports[i].haspacket = TP_NO_PACKET; - tp_putdata(&ports[i], packetlooper.raw, packetlooper.size + 1); // non-blocking put + //handle_packet(n, &packetlooper, i); + tp_putdata(&ports[i], packetlooper.raw, packetlooper.size); // non-blocking put packet_clean(&packetlooper); - pin_set(ports[i].stlb); // for debugging: we have seen a packet on this port + pin_set(ports[i].stlb); - //handle_packet(); } } } // end while @@ -285,7 +286,6 @@ void UART2_Handler(){ if(UART2->UART_SR & UART_SR_RXRDY){ tp_rxhandler(&tp1); } - if(UART2->UART_SR & UART_SR_TXRDY){ tp_txhandler(&tp1); } @@ -295,16 +295,25 @@ void UART0_Handler(){ if(UART0->UART_SR & UART_SR_RXRDY){ tp_rxhandler(&tp2); } + if(UART0->UART_SR & UART_SR_TXRDY){ + tp_txhandler(&tp2); + } } void UART1_Handler(){ if(UART1->UART_SR & UART_SR_RXRDY){ tp_rxhandler(&tp3); } + if(UART1->UART_SR & UART_SR_TXRDY){ + tp_txhandler(&tp3); + } } void UART4_Handler(){ if(UART4->UART_SR & UART_SR_RXRDY){ tp_rxhandler(&tp4); } + if(UART4->UART_SR & UART_SR_TXRDY){ + tp_txhandler(&tp4); + } } diff --git a/embedded/atsams70-tinyrouter/atsams70-tinyrouter/src/packet_handling.c b/embedded/atsams70-tinyrouter/atsams70-tinyrouter/src/packet_handling.c index 0a22465..45502be 100644 --- a/embedded/atsams70-tinyrouter/atsams70-tinyrouter/src/packet_handling.c +++ b/embedded/atsams70-tinyrouter/atsams70-tinyrouter/src/packet_handling.c @@ -15,7 +15,7 @@ void update_LUT(node_t* n, uint16_t src, uint8_t hopCount, uint8_t port) { } void send_packet(packet_t* p, uint8_t port) { - // TODO: + //tp_putdata() // need global ports[]; } void broadcast_packet(packet_t* p, uint8_t exclude) { @@ -32,7 +32,7 @@ int in_table(node_t* n, uint8_t dest) { void handle_packet(node_t* n, packet_t* p, uint8_t port) { if (p->hopcount > MAX_HOPCOUNT) { - //free((void*)p); + free((void*)p); return; } diff --git a/embedded/atsams70-tinyrouter/atsams70-tinyrouter/src/tinyport.c b/embedded/atsams70-tinyrouter/atsams70-tinyrouter/src/tinyport.c index fbf2ae9..5238793 100644 --- a/embedded/atsams70-tinyrouter/atsams70-tinyrouter/src/tinyport.c +++ b/embedded/atsams70-tinyrouter/atsams70-tinyrouter/src/tinyport.c @@ -94,7 +94,7 @@ void tp_packetparser(tinyport_t *tp){ // writing to packet // check for size byte // check for end of packet w/ counter (counter is _current_ byte, is incremented at end of handle) - if(tp->packet.counter >= tp->packet.size){ // check counter against packet size to see if @ end of packet + if(tp->packet.counter >= tp->packet.size - 1){ // check counter against packet size to see if @ end of packet tp->haspacket = TP_HAS_PACKET; // this data is final byte, we have packet, this will be last tick in loop tp->packetstate = TP_PACKETSTATE_OUTSIDE; // and we're outside again pin_clear(tp->stlb); @@ -114,11 +114,11 @@ void tp_packetparser(tinyport_t *tp){ void tp_txhandler(tinyport_t *tp){ if(!rb_empty(tp->rbtx)){ - pin_clear(tp->stlr); + pin_clear(tp->stlg); tp->uart->UART_THR = rb_get(tp->rbtx); } else { tp->uart->UART_IDR = UART_IER_TXRDY; // if nothing left to tx, turn isr off - pin_set(tp->stlr); + pin_set(tp->stlg); } //while(!(tp->uart->UART_SR & UART_SR_TXRDY)); // blocking } diff --git a/js/serialterminal.js b/js/serialterminal.js index dc3f520..445afd2 100644 --- a/js/serialterminal.js +++ b/js/serialterminal.js @@ -17,7 +17,7 @@ const rl = readline.createInterface({ rl.on('line', parseLineIn); // [type][destination][destination][hopcount][source][source][#bytestotal][byte_7][byte_6]...[byte_n] -var buf = Buffer.from([255,1,2,3,4,5,9,10,11,12]) +var buf = Buffer.from([255,2,3,4,5,6,12,8,9,10,11,12]) function parseLineIn(data) { if (debug) { -- GitLab