31 lines
677 B
C
Executable File
31 lines
677 B
C
Executable File
#include <rb2/regbus.h>
|
|
|
|
void rb2_loop_rx()
|
|
{
|
|
list_t *i;
|
|
cpustate_t state;
|
|
|
|
spinlock_lock_irq( &(&__rb2_instance)->links.lock, &state );
|
|
|
|
for_each_list_entry(i,&((&__rb2_instance)->links.list)){
|
|
RB2_LINK *link = list_entry(i,RB2_LINK,list);
|
|
|
|
spinlock_release_irq( &(&__rb2_instance)->links.lock, &state );
|
|
|
|
if (link->receive)
|
|
{
|
|
rb2_telegram_buffer_t *telegram = link->receive( link );
|
|
|
|
while (telegram){
|
|
telegram->link = link;
|
|
rb2_route_listed( telegram );
|
|
telegram = link->receive( link );
|
|
};
|
|
};
|
|
|
|
spinlock_lock_irq( &(&__rb2_instance)->links.lock, &state );
|
|
};
|
|
spinlock_release_irq( &(&__rb2_instance)->links.lock, &state );
|
|
};
|
|
|