Skip to content
Snippets Groups Projects
Commit a0001db1 authored by Jake Read's avatar Jake Read
Browse files

non-blocking put

parent 144bcab0
No related branches found
No related tags found
No related merge requests found
jake/ jake/
**.elf **.elf
**.hex **.hex
**.bin
**.lss **.lss
**.map **.map
**.srec **.srec
......
File deleted
...@@ -203,8 +203,7 @@ void setallstatus(void){ ...@@ -203,8 +203,7 @@ void setallstatus(void){
pin_set(&p4lb); pin_set(&p4lb);
} }
int main (void) int main (void){
{
/* /*
node_t* n = (node_t*)malloc(sizeof(node_t)); node_t* n = (node_t*)malloc(sizeof(node_t));
n->myAddress = ADDRESS; n->myAddress = ADDRESS;
...@@ -267,50 +266,29 @@ int main (void) ...@@ -267,50 +266,29 @@ int main (void)
packet_clean(&ports[i].packet); // reset packet states packet_clean(&ports[i].packet); // reset packet states
ports[i].haspacket = TP_NO_PACKET; ports[i].haspacket = TP_NO_PACKET;
for(int c = 0; c <= packetlooper.size; c ++){ // blocking echo tp_putdata(&ports[i], packetlooper.raw, packetlooper.size + 1); // non-blocking put
tp_putchar(&ports[i], packetlooper.raw[c]);
}
packet_clean(&packetlooper); packet_clean(&packetlooper);
pin_set(ports[i].stlb); // for debugging: we have seen a packet on this port pin_set(ports[i].stlb); // for debugging: we have seen a packet on this port
//handle_packet(); //handle_packet();
// put data in block, error if returns 0 b/c overfull ringbuffer
/*
if(!tp_putdata(&ports[i], packetlooper.raw, packetlooper.size)){
pin_clear(ports[i].stlr);
} }
*/
} }
} // end while
// packet handler delay_cycles(1); // one clock tick to relax interrupt scheduler
// pull a packet from the buffer,
// handle_packet()
/*
if(!rb_empty(ports[i].rbrx)){
tp_putchar(&ports[i], rb_get(ports[i].rbrx));
}
*/
}
// loop over packet buffer and handle packets } // end main
delay_cycles(1); // one clock tick to relax interrupt scheduler
//pin_set(&stlb);
}
}
void UART2_Handler(){ void UART2_Handler(){
if(UART2->UART_SR & UART_SR_RXRDY){ if(UART2->UART_SR & UART_SR_RXRDY){
tp_rxhandler(&tp1); tp_rxhandler(&tp1);
} }
/*
if(UART2->UART_SR & UART_SR_TXRDY){ if(UART2->UART_SR & UART_SR_TXRDY){
tp_txhandler(&tp1); tp_txhandler(&tp1);
} }
*/
} }
void UART0_Handler(){ void UART0_Handler(){
......
...@@ -59,7 +59,7 @@ void tp_putchar(tinyport_t *tp, uint8_t data){ ...@@ -59,7 +59,7 @@ void tp_putchar(tinyport_t *tp, uint8_t data){
int tp_putdata(tinyport_t *tp, uint8_t *data, uint8_t size){ int tp_putdata(tinyport_t *tp, uint8_t *data, uint8_t size){
// drops block of mems into ringbuffer (need to update rb for this) // drops block of mems into ringbuffer (need to update rb for this)
rb_putdata(tp->rbtx, data, size); rb_putdata(tp->rbtx, data, size);
tp_txout(tp); tp->uart->UART_IER |= UART_IER_TXRDY;
} }
void tp_rxhandler(tinyport_t *tp){ void tp_rxhandler(tinyport_t *tp){
...@@ -112,14 +112,15 @@ void tp_packetparser(tinyport_t *tp){ ...@@ -112,14 +112,15 @@ void tp_packetparser(tinyport_t *tp){
} // end while } // end while
} // end packetparser } // end packetparser
void tp_txout(tinyport_t *tp){
// set txready interrupt on
// handler puts chars on ports until no chars left
}
void tp_txhandler(tinyport_t *tp){ void tp_txhandler(tinyport_t *tp){
while(!(tp->uart->UART_SR & UART_SR_TXRDY)); // blocking if(!rb_empty(tp->rbtx)){
pin_clear(tp->stlr);
tp->uart->UART_THR = rb_get(tp->rbtx); 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);
}
//while(!(tp->uart->UART_SR & UART_SR_TXRDY)); // blocking
} }
void tp_testlights(tinyport_t *tp){ void tp_testlights(tinyport_t *tp){
......
...@@ -16,7 +16,8 @@ const rl = readline.createInterface({ ...@@ -16,7 +16,8 @@ const rl = readline.createInterface({
rl.on('line', parseLineIn); rl.on('line', parseLineIn);
var buf = Buffer.from([255,8,8,8,8,8,8,10,11]) // [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])
function parseLineIn(data) { function parseLineIn(data) {
if (debug) { if (debug) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment