Changeset 582

Show
Ignore:
Timestamp:
05/17/08 10:06:33 (5 months ago)
Author:
npereira
Message:

Signal handling in widom fix

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • nano-RK/src/net/widom/hal/atmega1281/wd_timer.c

    r244 r582  
    221221#endif 
    222222{  
    223   bool do_alarm_callback=false; 
    224223 
    225224//  nrk_gpio_toggle(NRK_DEBUG_0);   
  • nano-RK/src/net/widom/radio/cc2420/wd_rf.c

    r244 r582  
    378378  wd_timer_start_periodic(TIME_UNTIL_START_TX); // start periodic sampling 
    379379 
    380  
    381380        txSeqNumber++;  
    382381 
     
    399398int8_t wdrf_polling_rx_packet() 
    400399{ 
     400  fifop_ind=false; 
    401401        // it is safe to call rf_polling_rx_packet from basic_rf... 
    402402        // (with RADIO_PRIORITY_CEILING off) 
     
    424424        if (!(FIFO_IS_1)) { // FIFO overflow 
    425425                         wdrf_flush_rx_fifo();  
     426                         fifop_ind == true; 
    426427                  } else { 
    427428                    fifop_ind=true; 
  • nano-RK/src/net/widom/widom.c

    r244 r582  
    9292// signal to indicate a packet tx 
    9393nrk_sig_t wd_tx_pkt_info_signal; 
    94  
     94   
    9595// timeouts constants (rounded up to clock ticks) 
    9696const uint32_t E        = ( E_us / 1000000.0) / WD_CLOCK_TICK_TIME + 1;  
     
    451451                                case MSG_TYPE_MAC_WAIT_TIME_ETG:  // ended waiting after winning the tournament 
    452452                                        wd_timer_set_alarm(2*H+G+(G+H)*(NPRIOBITS-1) + ETG + CMSG, MSG_TYPE_MAC_WAIT_TIME_ENDTXRX); // next state transition 
    453  
    454                 if (wdrf_tx_packet (&tx_pkt_info) == NRK_OK) { // tx packet 
    455 #ifndef CONTINUOUS_SEND                  
    456                         tx_packet=false; 
    457 #endif 
    458                       } 
     453                wdrf_tx_packet (&tx_pkt_info); // tx packet 
    459454          toState(10); 
    460455                                        break; 
     
    466461          break; 
    467462        case MSG_TYPE_RADIO_END_TX: 
     463          wd_timer_cancel_alarm(); // cancel MAC_WAIT_TIME_ENDTXRX timeout         
    468464          nrk_event_signal ( wd_tx_pkt_info_signal );   // signal packet transmission 
    469465                                case MSG_TYPE_MAC_WAIT_TIME_ENDTXRX:// ended waiting message tx 
     466#ifndef CONTINUOUS_SEND                  
     467                        tx_packet=false; 
     468#endif 
    470469          wdrf_stp();                             // stop                                        
    471470                                        toState(0);                               // go back to state 0 
     
    629628        nrk_sig_mask_t event; 
    630629 
    631   nrk_signal_register(wd_tx_pkt_info_signal);  
    632   event=nrk_event_wait (SIG(wd_tx_pkt_info_signal)); 
    633  
    634   // Check if it was a time out instead of packet RX signal 
     630  nrk_signal_register(wd_tx_pkt_info_signal);    
     631  event=nrk_event_wait (SIG(wd_tx_pkt_info_signal) | SIG(nrk_wakeup_signal)); 
     632 
     633  // Check if packet TX signal was OK 
    635634  if((event & SIG(wd_tx_pkt_info_signal)) == 0 ) return NRK_ERROR; 
    636635 
     
    648647{ 
    649648  nrk_sig_mask_t event; 
    650    
     649 
    651650  nrk_signal_register(wd_rx_pkt_info_signal);  
    652   event=nrk_event_wait (SIG(wd_rx_pkt_info_signal)); 
    653  
    654   // Check if it was a time out instead of packet RX signal 
    655   if((event & SIG(wd_rx_pkt_info_signal)) == 0 ) return NRK_ERROR; 
     651  event=nrk_event_wait (SIG(wd_rx_pkt_info_signal) | SIG(nrk_wakeup_signal)); 
     652 
     653  // Check if packet RX signal was OK 
     654  if( (event & SIG(wd_rx_pkt_info_signal)) == 0 ) return NRK_ERROR; 
    656655 
    657656        return NRK_OK;