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

non-blocking put

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