MWSDK(TWELITE SDK)
MONO WIRELESS INC.
MWSDK_EN
MWSDK_EN
  • TWELITE SDK (MWSDK) manual
  • Introduction
    • TWELITE SDK Terms of Use
    • Support and response
    • Mono Wireless Software License Agreement
    • Structure of TWELITE SDK
  • Get the latest version
    • TWELITE SDK revision history
  • How to use TWELITE SDK
    • Install TWELITE SDK (MWSDK)
    • Use with VSCode
    • folder structure
    • How to build from the command line
    • About build definitions
      • About Makefile
      • about Version.mk
      • bin file naming conventions
    • program firmware
      • Wiring for firmware programming
      • tweterm.py
  • TWELIET NET API overview
    • Terms
    • TWELITE NET library structure
    • TWENET working flow
      • flow: System start-up
      • flow: Main loop
      • flow: Wireless events
      • flow: Hardware interrupts/events
      • flow: User-defined event processing function
    • Structure of the source code
    • Modules
    • Wireless packets
      • Maximum packet length
      • Addressing conventions
      • Application ID
    • About the network
      • SimpleNet
        • Transmit
        • Receive
      • RelayNet
        • Implementation of the parent device
        • Implementation of repeaters
        • Implementing a child device (MININODES)
        • NB beacon system connection
        • Address of the relay network
        • Static relay with fixed host address
  • TWELITE NET API references
    • The callback functions
      • cbAppColdStart()
      • cbAppWarmStart()
      • cbToCoNet_vMain()
      • cbToCoNet_vRxEvent()
      • cbToCoNet_vTxEvent()
      • cbToCoNet_vNwkEvent()
      • cbToCoNet_vHwEvent()
      • cbToCoNet_u8HwInt()
    • TWELITE NET functions
      • ToCoNet_vMacStart()
      • ToCoNet_bMacTxReq()
      • ToCoNet_u32GetSerial()
      • ToCoNet_u32GetRand()
      • ToCoNet_vSleep()
      • ToCoNet_vDebugInit()
      • ToCoNet_vDebugLevel()
      • ToCoNet_u32GetVersion()
      • ToCoNet_bRegisterAesKey()
      • ToCoNet_vRfConfig()
      • ToCoNet_vChConfig()
      • ToCoNet_Tx_vProcessEventQueue()
      • ToCoNet_u16RcCalib()
    • RelayNet API
      • functions
        • ToCoNet_Nwk_bInit()
        • ToCoNet_Nwk_bStart()
        • ToCoNet_Nwk_bPause()
        • ToCoNet_Nwk_bResume()
        • ToCoNet_Nwk_bTx()
      • Structure
        • tsTxDataApp (relay net)
        • tsRxDataApp (relay net)
        • tsToCoNet_Nwk_Context
      • LayerTree net
        • ToCoNet_NwkLyTr_psConfig()
        • ToCoNet_NwkLyTr_psConfig_MiniNodes()
        • tsToCoNet_NwkLyTr_Context
    • typedef, frequently used macros
    • Structures
      • sToCoNet_AppContext
      • tsRxDataApp
      • tsTxDataApp
    • TWELITE NET macros
      • ToCoNet_REG_MOD_ALL()
      • utils.h
    • User defined event handling functions
      • State
      • Events
      • ToCoNet_Event API
        • ToCoNet_Event_Register_State_Machine()
        • ToCoNet_Event_Process()
        • ToCoNet_Event_SetState()
        • ToCoNet_Event_vKeepStateOnRamHoldSleep()
        • ToCoNet_Event_u32TickFrNewState()
    • Module library
      • ENERGY SCAN
      • NB SCAN
    • PRSEV library
    • global variables
      • uint32 u32TickCount_ms
      • sToCoNet_AppContext (static variable)
    • PANIC
  • HW API reference
    • Peripherals
      • ADC
        • adc.c
      • DIO
      • TickTimer
      • UART
        • SERIAL library
          • SERIAL_vInit()
          • SERIAL_vInitEx()
          • SERIAL_bRxQueueEmpty()
          • SERIAL_i16RxChar()
          • SERIAL_vFlush()
          • tsSerialPortSetup
          • tsUartOpt
        • fprintf library
          • vfPrintf()
          • vPutChar()
          • tsFILE
      • Timer
        • Timer library
          • vTimerConfig()
          • vTimerStart()
          • vTimerStop()
          • vTimerDisable()
          • tsTimerContext
      • WakeTimer
      • I2C
      • SPI
    • Flash, EEPROM
      • EEPROM
      • Flash
  • Utils references, others.
    • ByteQueue
    • u8CCITT8()
    • SPRINTF library
    • BTM library (consecutive reading) DIO input
GitBook提供
このページ内
  • Register
  • The notified event
  • About state transitions
  1. TWELITE NET API references

User defined event handling functions

A user-defined event handling function is a function defined by the user for the purpose of performing event handling in the form of a callback from TWENET. Although we call them functions, they behave as state transition machines.

void cbAppColdStart(bool_t bInit) {
    if (bInit == FALSE) {
 		...
    } else {
    	...
    	ToCoNet_Event_Register_State_Machine(vProcessEvCore);
    }
}

void vProcessEvCore(
        tsEvent *pEv,
        teEvent eEvent,
        uint32 u32evarg) {
    // check boot seq
	if (eEvent == E_EVENT_START_UP) {
		if (u32evarg & EVARG_START_UP_WAKEUP_RAMHOLD_MASK) {
			// woke from NORMAL SLEEP (RAMHOLD)
		}
	    if (u32evarg & EVARG_START_UP_WAKEUP_MASK) {
			// woke from DEEP SLEEP
	    } else {
			// COLD boot
	    }
	}
	
	switch (pEv->eState) {
	case E_STATE_IDLE:
		; // some task
		ToCoNet_Event_SetState(pEv, E_STATE_APP_NORMAL);
		break;
	case E_STATE_APP_NORMAL:
		; // some task (e.g. send s Tx packet)
		if (cond) {
			ToCoNet_Event_SetState(pEv, E_STATE_APP_WAIT_TX);
		}
		break;
	case E_STATE_APP_WAIT_TX:
		; // some task (e.g. wait until Tx finishes)
		if (cond) {
		    ToCoNet_Event_SetState(pEv, E_STATE_APP_NORMAL);
		}
		break;
	}
}

Register

The notified event

The following code is an example of communicating the completion of a transmission to the user-defined event processing function vProcessEvCore().

cbToCoNet_vTxEvent(uint8 u8CbId, uint8 u8Stat) {
    ToCoNet_Event_Process(E_EVENT_APP_TX_COMPLETE, 
        u8CbId, vProcessEvCore);
}

It must not be called from an interrupt handler.

About state transitions

The state machine of user-defined event handling functions starts from E_STATE_IDLE (0).

前へutils.h次へState

最終更新 2 年前

Up to two user-defined event processing functions can be registered with .

User-defined event handling functions must be registered to receive events.

The following three events are notified. Other events are passed on as function callback calls by the function.

: on start-up

: every tick timer fired (4ms default)

: every 1sec

Calling vProcessEvCore() without using ToCoNet_Event_Process() should be avoided. The state transitions shown in will not take place and there will be inconsistencies in the information contained in the management structure of the user-defined event processing function.

When a user-defined event processing function is called, a state transition is declared by calling the ToCoNet_Event_SetState() function. After declaring the state transition and exiting the user defined event handling function, the function is called again with the E_EVENT_NEW_STATE event as a parameter. This process is continuous as long as the state transition continues ().

You can keep the previous state by calling before sleep (hold RAM), and receive E_EVENT_START_UP event after sleep is restored.

ToCoNet_Event_Register_State_Machine()
E_EVENT_START_UP
E_EVENT_START_UP
E_EVENT_TICK_TIMER
E_EVENT_TICK_SECOND
the flow diagram
flow diagram
ToCoNet_Event_vKeepStateOnRamHoldSleep()
ToCoNet_Event_Process()