Contiki-NG
Functions
Native platform

Platform running in the host (Windows or Linux) environment. More...

Functions

void platform_process_args (int argc, char **argv)
 Allow the platform to process main's command line arguments. More...
 
void platform_init_stage_one ()
 Basic (Stage 1) platform driver initialisation. More...
 
void platform_init_stage_two ()
 Stage 2 of platform driver initialisation. More...
 
void platform_init_stage_three ()
 Final stage of platform driver initialisation. More...
 
void platform_main_loop ()
 The platform's main loop, if provided. More...
 
void uip_log (char *m)
 Print out a uIP log message. More...
 

Native Platform Configuration

#define SELECT_MAX   8
 
#define SELECT_TIMEOUT   1000
 
#define SELECT_STDIN   1
 

Detailed Description

Platform running in the host (Windows or Linux) environment.

Used mainly for development and debugging.

Function Documentation

◆ platform_init_stage_one()

void platform_init_stage_one ( void  )

Basic (Stage 1) platform driver initialisation.

This function will get called early on in the Contiki-NG boot sequence.

In this function, the platform should initialise all core device drivers. For example, this is where you will normally want to initialise hardware timers/clocks, GPIO, LEDS. Normally this function will also enable the MCU's global interrupt.

The Contiki-NG process scheduler, software clocks and timers will not be running yet, so any platform drivers that rely on it should not be initialised here. Instead, they should be initialised in platform_init_stage_two() or in platform_init_stage_three()

It is the port developer's responsibility to implement this function.

See also
platform_init_stage_two()
platform_init_stage_three()

Definition at line 252 of file platform.c.

References button_hal_init(), gpio_hal_init(), and leds_init().

◆ platform_init_stage_three()

void platform_init_stage_three ( void  )

Final stage of platform driver initialisation.

Initialisation of platform-specific drivers that require networking to be running. This is also a good place to initialise sensor drivers.

When this function returns, the main routine will assume that the hardware is fully initialised.

It is the port developer's responsibility to implement this function.

See also
platform_init_stage_one()
platform_init_stage_two()

Definition at line 272 of file platform.c.

References process_start().

◆ platform_init_stage_two()

void platform_init_stage_two ( void  )

Stage 2 of platform driver initialisation.

This function will be called by the Contiki-NG boot sequence after parts of the core have been initialised. More specifically, when this function gets called, the following modules will be running:

  • Software clock
  • Process scheduler
  • Event timer (etimer)
  • Callback timer (ctimer)
  • rtimer
  • Energest (if enabled)

Therefore, any platform driver that relies on any of the above modules should be initialised here or in platform_init_stage_three(), but not in platform_init_stage_one()

The Contiki-NG network stack will not be running yet, so any platform drivers that rely on networking should not be initialised here.

When this function returns, the main routine will assume that the platform has enabled character I/O and can print to console. When this function returns, main() will attempt to initialise the network stack. For this to work properly, this function should also populate linkaddr_node_addr.

It is the port developer's responsibility to implement this function.

See also
platform_init_stage_one()
platform_init_stage_three()

Definition at line 261 of file platform.c.

◆ platform_main_loop()

void platform_main_loop ( void  )

The platform's main loop, if provided.

If the platform developer wishes to do so, it is possible to override the main loop provided by Contiki-NG's core. To do so, define PLATFORM_CONF_PROVIDES_MAIN_LOOP as 1.

It is the port developer's responsibility to implement this function.

Definition at line 288 of file platform.c.

References process_nevents(), and process_run().

◆ platform_process_args()

void platform_process_args ( int  argc,
char **  argv 
)

Allow the platform to process main's command line arguments.

If the platform wishes main() to accept arguments, then the Contiki-NG main will call this function here so that the platform can process/store those arguments.

This function will only get called if PLATFORM_MAIN_ACCEPTS_ARGS is non-zero.

It is the port developer's responsibility to implement this function.

Definition at line 232 of file platform.c.

◆ uip_log()

void uip_log ( char *  msg)

Print out a uIP log message.

This function must be implemented by the module that uses uIP, and is called by uIP whenever a log message is generated.

Definition at line 342 of file platform.c.