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