37 #ifdef CONF_AUTOSHUTOFF
54 static const unsigned char *tx_ptr;
55 static const unsigned char *tx_verify;
56 static const unsigned char *tx_end;
78 #ifdef CONF_RCX_COMPILER
79 static void rx_handler(
void) __attribute__ ((rcx_interrupt));
80 static
void rxerror_handler(
void) __attribute__ ((rcx_interrupt));
81 static
void tx_handler(
void) __attribute__ ((rcx_interrupt));
84 void rx_handler(
void);
85 void rxerror_handler(
void);
86 void tx_handler(
void);
92 extern inline void carrier_init(
void) {
99 extern inline void carrier_shutdown(
void) {
106 #ifdef CONF_RCX_COMPILER
107 static void rx_handler(
void) {
118 if (new_tx > allow_tx) allow_tx = new_tx;
123 if(
S_RDR!=*tx_verify) {
126 }
else if( tx_end <= ++tx_verify ) {
140 #ifdef CONF_RCX_COMPILER
141 static void rxerror_handler(
void) {
144 void rxerror_core(
void) {
150 if (new_tx > allow_tx) allow_tx = new_tx;
161 #ifdef CONF_RCX_COMPILER
165 void txend_core(
void) {
176 #ifdef CONF_RCX_COMPILER
177 static void tx_handler(
void) {
269 #ifdef CONF_AUTOSHUTOFF
277 tx_verify=tx_ptr=buf;
292 ( ((
unsigned char) len)+
293 ((
unsigned char*)buf)[len-1]+
volatile unsigned char S_SR
serial status register
void lnp_timeout_reset(void)
reset the inter-byte timeout counter.
Internal Interface: H8/3297 processor registers.
Interface: memory data types.
void shutoff_restart(void)
void * tei_vector
TEI interrupt vector.
unsigned char T1_CORA
timer 1 constant A register
volatile unsigned char S_RDR
serial receive data register
ROM Interface: RCX registers cached by ROM functions.
Internal Interface: Powerdown Timer Routines.
int sem_wait(sem_t *sem)
Wait for semaphore (blocking)
int sem_destroy(sem_t *sem)
We're done with the semaphore, destroy it.
unsigned char PORT5_DDR
port 5 data direction register
Internal LNP Interface: link networking protocol logical layer.
time_t get_system_up_time(void)
retrieve the current system time
unsigned char S_BRR
serial baud rate register
void * txi_vector
TXI interrupt vector.
void lnp_integrity_byte(unsigned char b)
receive a byte from the physical layer, decoding integrity layer packets.
unsigned char PORT4_DDR
port 4 data direction register
volatile unsigned char T1_CSR
timer 1 control / status register
#define LNP_LOGICAL_PARITY
parity
atomic_t sem_t
the semaphore data-type
void * rxi_vector
RXI interrupt vector.
void lnp_logical_init(void)
Initialize the logical layer (IR port)
Interface: reduced UNIX standard library.
void txend_handler(void)
Callback: end of transmission.
unsigned char rom_port5_ddr
ROM shadow of port 5 DDR.
HANDLER_WRAPPER("lcd_refresh_next_byte","lcd_refresh_next_byte_core")
lcd refresh handler, called from system timer interrupt
unsigned char rom_port4_ddr
ROM shadow of port 4 DDR.
unsigned char S_MR
serial mode register
unsigned long wakeup_t
wakeup data area type
#define LNP_WAIT_COLL
delay after collision
void lnp_logical_range(int far)
Set the IR transmitter range.
Interface: POSIX 1003.1b semaphores for task synchronization.
unsigned char T1_CR
timer 1 control register
unsigned long time_t
time type
volatile signed char tx_state
transmit status
#define TX_COLL
not transmitting, last xmit was collision
int sem_post(sem_t *sem)
Post a semaphore.
void lnp_logical_shutdown(void)
Shutdown the logical layer (IR port)
#define LNP_LOGICAL_BAUD_RATE
baud rate
Internal LNP Interface: RCX redirected IRQ vectors.
#define TX_IDLE
not transmitting, last xmit OK
#define LNP_WAIT_TXOK
delay after good transmit
void * eri_vector
ERI interrupt vector.
unsigned char S_TDR
serial transmit data register
#define LNP_BYTE_SAFE
delay before transmitting a byte
Internal LNP Interface: link networking protocol.
int lnp_logical_write(const void *buf, size_t len)
Write buffer to IR port.
wakeup_t wait_event(wakeup_t(*wakeup)(wakeup_t), wakeup_t data)
#define TX_ACTIVE
currently transmitting
void lnp_integrity_reset(void)
reset the integrity layer on error or timeout.
unsigned char S_CR
serial control register
int sem_init(sem_t *sem, int pshared, unsigned int value)
Initialize a semaphore.