Symbol Timer Control#

See symbol-timer.h for source code.

Symbol Timer Functions#

void

Initializes the symbol timer. When a dedicated symbol timer peripheral exists (e.g. EM2xx, EM3xx) this initialization is generally performed directly by the PHY, so this routine may be a no-op.

uint32_t

Returns the current symbol time in symbol ticks (units are platform-dependent, but typically on the order of microseconds).

bool
halStackInt32uSymbolTickGTorEqual(uint32_t st1, uint32_t st2)

Returns true if symbol tick time st1 is greater than symbol tick time st2, as determined by half the range of the symbol timer. Can only account for 1 wrap around between st1 and st2 before it is wrong.

uint32_t

Obtains the number of symtol timer ticks in one second of real time. Can be used for conversion between real time and symbol ticks.

MAC Timer Support Functions#

These functions are used for MAC layer timing and symbol-based delays.Applications should not directly call these functions. They are used internally by the operation of the stack.

enum
EM_HAL_SYMBOL_DELAY_CHANNEL_A
EM_HAL_SYMBOL_DELAY_CHANNEL_B
EM_HAL_SYMBOL_DELAY_CHANNELS
}

Specifies two independent channels for symbol delay operations.

typedef void(*
EmHalSymbolDelayCallback_t)(EmHalSymbolDelayChannel_t delayChan)

Specifies the callback API triggered when the symbol timer channel expires.

uint32_t
halStackOrderSymbolDelay(EmHalSymbolDelayChannel_t delayChan, EmHalSymbolDelayCallback_t callback, uint32_t microseconds)

Sets up a delay timer to call the indicated interrupt-context callback when it expires.

void
halStackCancelSymbolDelay(EmHalSymbolDelayChannel_t delayChan, EmHalSymbolDelayCallback_t callback)

Cancels the delay set up by an earlier halStackOrderSymbolDelay() call.

void

Sets up a timer and calls an interrupt-context callback when it expires.

void
void

This is the interrupt level callback into the stack that is called when the timers set by halStackOrderInt16uSymbolDelayA expire.

Symbol Timer Functions Documentation#

halInternalStartSymbolTimer#

void halInternalStartSymbolTimer (void )

Initializes the symbol timer. When a dedicated symbol timer peripheral exists (e.g. EM2xx, EM3xx) this initialization is generally performed directly by the PHY, so this routine may be a no-op.

Parameters
TypeDirectionArgument NameDescription
voidN/A

halStackGetInt32uSymbolTick#

uint32_t halStackGetInt32uSymbolTick (void )

Returns the current symbol time in symbol ticks (units are platform-dependent, but typically on the order of microseconds).

Parameters
TypeDirectionArgument NameDescription
voidN/A

Returns

  • The least significant 32 bits of the current symbol time in symbol timer ticks.


halStackInt32uSymbolTickGTorEqual#

bool halStackInt32uSymbolTickGTorEqual (uint32_t st1, uint32_t st2)

Returns true if symbol tick time st1 is greater than symbol tick time st2, as determined by half the range of the symbol timer. Can only account for 1 wrap around between st1 and st2 before it is wrong.

Parameters
TypeDirectionArgument NameDescription
uint32_tN/Ast1
uint32_tN/Ast2

halStackGetSymbolTicksPerSecond#

uint32_t halStackGetSymbolTicksPerSecond (void )

Obtains the number of symtol timer ticks in one second of real time. Can be used for conversion between real time and symbol ticks.

Parameters
TypeDirectionArgument NameDescription
voidN/A

Returns

  • How many symbol ticks occur in a second.


MAC Timer Support Functions Documentation#

EmHalSymbolDelayChannel_t#

EmHalSymbolDelayChannel_t

Specifies two independent channels for symbol delay operations.

Enumerator
EM_HAL_SYMBOL_DELAY_CHANNEL_A
EM_HAL_SYMBOL_DELAY_CHANNEL_B
EM_HAL_SYMBOL_DELAY_CHANNELS

EmHalSymbolDelayCallback_t#

typedef void(* EmHalSymbolDelayCallback_t) (EmHalSymbolDelayChannel_t delayChan) )(EmHalSymbolDelayChannel_t delayChan)

Specifies the callback API triggered when the symbol timer channel expires.


halStackOrderSymbolDelay#

uint32_t halStackOrderSymbolDelay (EmHalSymbolDelayChannel_t delayChan, EmHalSymbolDelayCallback_t callback, uint32_t microseconds)

Sets up a delay timer to call the indicated interrupt-context callback when it expires.

Parameters
TypeDirectionArgument NameDescription
EmHalSymbolDelayChannel_tN/AdelayChan

The symbol timer delay channel to use.

EmHalSymbolDelayCallback_tN/Acallback

The callback to call in interrupt context when the delay expires. If NULL, the timer is not actually started, but the return value is accurate; useful for polling.

uint32_tN/Amicroseconds

The delay, in units of microseconds.

Used by the MAC to request an interrupt callback at a specified number of symbol timer ticks in the future.

Returns

  • The absolute symbol tick value of the delay (usually in the future).

Note

  • Internal conversion of microseconds to symbol ticks will use a rounding function.

  • No minimum delay is enforced; short delays may trigger the callback immediately, before this routine returns to its caller.


halStackCancelSymbolDelay#

void halStackCancelSymbolDelay (EmHalSymbolDelayChannel_t delayChan, EmHalSymbolDelayCallback_t callback)

Cancels the delay set up by an earlier halStackOrderSymbolDelay() call.

Parameters
TypeDirectionArgument NameDescription
EmHalSymbolDelayChannel_tN/AdelayChan

The symbol timer delay channel specified in the earlier halStackOrderSymbolDelay() call.

EmHalSymbolDelayCallback_tN/Acallback

The callback specified in the earlier halStackOrderSymbolDelay() call.

Note

  • If cancelled prior to the delay expiring, the original callback will not be called.


halStackOrderInt16uSymbolDelayA#

void halStackOrderInt16uSymbolDelayA (uint16_t symbols)

Sets up a timer and calls an interrupt-context callback when it expires.

Parameters
TypeDirectionArgument NameDescription
uint16_tN/Asymbols

The delay, in symbols.

Used by the MAC to request an interrupt callback at a specified amount of time in the future.


halStackCancelSymbolDelayA#

void halStackCancelSymbolDelayA (void )

Cancels the timer set up by halStackOrderInt16uSymbolDelayA().

Parameters
TypeDirectionArgument NameDescription
voidN/A

halStackSymbolDelayAIsr#

void halStackSymbolDelayAIsr (void )

This is the interrupt level callback into the stack that is called when the timers set by halStackOrderInt16uSymbolDelayA expire.

Parameters
TypeDirectionArgument NameDescription
voidN/A