WL865E4-P  36.07.001
M2MB OS EV

This section describes the M2MB APIs to perform OS event operations. More...

#define M2MB_OS_EV_INVALID   0
 
#define M2MB_OS_EV_INVALID_ATTR   0
 
enum  M2MB_OS_EV_SEL_CMD_E {
  M2MB_OS_EV_SEL_CMD_CREATE_ATTR,
  M2MB_OS_EV_SEL_CMD_DEL_ATTR,
  M2MB_OS_EV_SEL_CMD_NAME,
  M2MB_OS_EV_SEL_CMD_USRNAME,
  M2MB_OS_EV_SEL_CMD_SUSPENDED_COUNT,
  M2MB_OS_EV_SEL_CMD_1ST_SUSP,
  M2MB_OS_EV_SEL_CMD_CURRENT_BITS_EVENT,
  M2MB_OS_EV_SEL_CMD_END
}
 
enum  M2MB_OS_EV_SET_OPT_E {
  M2MB_OS_EV_SET = 0,
  M2MB_OS_EV_CLEAR = 2,
  M2MB_OS_EV_SET_OPT_END
}
 
enum  M2MB_OS_EV_GET_OPT_E {
  M2MB_OS_EV_GET_ANY = 0,
  M2MB_OS_EV_GET_ANY_AND_CLEAR,
  M2MB_OS_EV_GET_ALL,
  M2MB_OS_EV_GET_ALL_AND_CLEAR,
  M2MB_OS_EV_GET_OPT_END
}
 
typedef HANDLE M2MB_OS_EV_HANDLE
 
typedef HANDLE M2MB_OS_EV_ATTR_HANDLE
 
M2MB_OS_RESULT_E m2mb_os_ev_init (M2MB_OS_EV_HANDLE *pEvHandle, M2MB_OS_EV_ATTR_HANDLE *pEvAttr)
 Application Event Set Creation. More...
 
M2MB_OS_RESULT_E m2mb_os_ev_deinit (M2MB_OS_EV_HANDLE eveHandle)
 Application Event deinit or deletion. More...
 
M2MB_OS_RESULT_E m2mb_os_ev_set (M2MB_OS_EV_HANDLE evHandle, UINT32 evBits, M2MB_OS_EV_SET_OPT_E optSet)
 Set bits of event in a specified event. More...
 
M2MB_OS_RESULT_E m2mb_os_ev_get (M2MB_OS_EV_HANDLE evHandle, UINT32 reqEvBits, M2MB_OS_EV_GET_OPT_E optGet, UINT32 *pCurEvBits, UINT32 timeout)
 Get an application event. More...
 
M2MB_OS_RESULT_E m2mb_os_ev_setAttrItem (M2MB_OS_EV_ATTR_HANDLE *pEvAttr, UINT8 nCmds,...)
 Set specific attribute for event init or creation. More...
 
M2MB_OS_RESULT_E m2mb_os_ev_getItem (M2MB_OS_EV_HANDLE evHandle, M2MB_OS_EV_SEL_CMD_E selCmd, MEM_W *pOut, void *pIn)
 Get specific properties of the event. More...
 
M2MB_OS_RESULT_E m2mb_os_ev_setItem (M2MB_OS_EV_HANDLE evHandle, M2MB_OS_EV_SEL_CMD_E selCmd, void *pIn)
 Set specific properties of the event. More...
 

Detailed Description

This section describes the M2MB APIs to perform OS event operations.

Macro Definition Documentation

◆ M2MB_OS_EV_INVALID

#define M2MB_OS_EV_INVALID   0

Definition at line 54 of file m2mb_os_ev.h.

◆ M2MB_OS_EV_INVALID_ATTR

#define M2MB_OS_EV_INVALID_ATTR   0

Definition at line 55 of file m2mb_os_ev.h.

Typedef Documentation

◆ M2MB_OS_EV_ATTR_HANDLE

Definition at line 104 of file m2mb_os_ev.h.

◆ M2MB_OS_EV_HANDLE

Definition at line 103 of file m2mb_os_ev.h.

Enumeration Type Documentation

◆ M2MB_OS_EV_GET_OPT_E

Enumerator
M2MB_OS_EV_GET_ANY 
M2MB_OS_EV_GET_ANY_AND_CLEAR 
M2MB_OS_EV_GET_ALL 
M2MB_OS_EV_GET_ALL_AND_CLEAR 
M2MB_OS_EV_GET_OPT_END 

Definition at line 91 of file m2mb_os_ev.h.

◆ M2MB_OS_EV_SEL_CMD_E

Enumerator
M2MB_OS_EV_SEL_CMD_CREATE_ATTR 
M2MB_OS_EV_SEL_CMD_DEL_ATTR 
M2MB_OS_EV_SEL_CMD_NAME 

use as Os name

M2MB_OS_EV_SEL_CMD_USRNAME 

if set, user name could be different from Os

M2MB_OS_EV_SEL_CMD_SUSPENDED_COUNT 

number of task suspended on this resource

M2MB_OS_EV_SEL_CMD_1ST_SUSP 

first task (M2MB_OS_TASK_HANDLE) to be served when resource will be available

M2MB_OS_EV_SEL_CMD_CURRENT_BITS_EVENT 
M2MB_OS_EV_SEL_CMD_END 

Definition at line 63 of file m2mb_os_ev.h.

◆ M2MB_OS_EV_SET_OPT_E

Enumerator
M2MB_OS_EV_SET 
M2MB_OS_EV_CLEAR 
M2MB_OS_EV_SET_OPT_END 

Definition at line 80 of file m2mb_os_ev.h.

Function Documentation

◆ m2mb_os_ev_deinit()

M2MB_OS_RESULT_E m2mb_os_ev_deinit ( M2MB_OS_EV_HANDLE  eveHandle)

Application Event deinit or deletion.

This service deletes the specified OS event. All tasks suspended waiting for this event are resumed with a return value equal to M2MB_OS_DELETED The resources will be released and handle set to M2MB_INVALID_EV It is the application’s responsibility to prevent the use of a deleted event.

Parameters
[in]eveHandlehandle of the event
Returns
M2MB_OS_SUCCESS in case of success (others in case of error : see m2mb_os_types.h)
M2MB_OS_EVENT_ERROR Invalid event handle M2MB_OS_CALLER_ERROR Invalid caller of this service.
Note
It is the application’s responsibility to prevent the use of a deleted event. Allowed From tasks Preemption Possible Yes

Example

◆ m2mb_os_ev_get()

M2MB_OS_RESULT_E m2mb_os_ev_get ( M2MB_OS_EV_HANDLE  evHandle,
UINT32  reqEvBits,
M2MB_OS_EV_GET_OPT_E  optGet,
UINT32 pCurEvBits,
UINT32  timeout 
)

Get an application event.

This service retrieves bits event from the specified event. Each event contains 32 event bits. This service can retrieve a variety of event bits combinations, as selected by the input reqEvBits.

Parameters
[in]evHandleHandle of event
[in]reqEvBitsRequested bits event
[in]optGetOption for get the event (see M2MB_OS_EV_GET_OPT_E)
[out]pCurEvBitsPointer to where current bits events are written to. It contains all the currents bits as found before any actions are taken (e.g cleared as requested)
[in]timeoutWait option in case of no success in getting requested bit event
Returns
M2MB_OS_SUCCESS in case of success
M2MB_OS_EVENT_ERROR Invalid event handle M2MB_OS_DELETED Event was deleted while task was suspended M2MB_OS_NO_EVENTS Service was unable to get the specified events within the specified timeout M2MB_OS_WAIT_ABORTED Suspension was aborted by another task, timer, or ISR M2MB_OS_PTR_ERROR Invalid pointer for current event bits container M2MB_OS_WAIT_ERROR A wait option other than M2MB_OS_NO_WAIT was specified on a call from a non-task
Note
Allowed From Initialization, tasks, events, and ISRs Preemption Possible Yes

Example

UINT32 CurEvBits;
//Request that event bits 0, 4, and 8 are all set. Also, if they are set they should be cleared.
//If the event bits are not set, this service suspends for a maximum of 50 timer-ticks.
osRes = m2mb_os_ev_get(evHandle, (UINT32)0x111, M2MB_OS_EV_GET_ANY_AND_CLEAR, &CurEvBits, 50 );
// or for example 2000 ms using M2MB_OS_MS2TICKS : "m2mb_os.h" has to be included
osRes = m2mb_os_ev_get(evHandle, (UINT32)0x111, M2MB_OS_EV_GET_ANY_AND_CLEAR, &CurEvBits,
//If status equals M2MB_OS_SUCCESS, CurEvBits contains the actual bits event obtained, before any
//operation on them are taken, e.g clear. It means CurEvBits in the example will contain bits 0,4,8
// plus in case, additional not requested. It is just previous event bits state

◆ m2mb_os_ev_getItem()

M2MB_OS_RESULT_E m2mb_os_ev_getItem ( M2MB_OS_EV_HANDLE  evHandle,
M2MB_OS_EV_SEL_CMD_E  selCmd,
MEM_W pOut,
void *  pIn 
)

Get specific properties of the event.

This service retrieves values for a specified parameter of the specified event Selecting cmd, a parameter to be retrieved can be set. To be used when an event is already created: it is under application responsibility

Parameters
[in]selCmdSelect parameter to be retrieved (see M2MB_OS_EV_SEL_CMD_E)
[in]evHandleHandle of event
[out]pOutPointer Output parameter got: its meaning depends on selCmd used See examples as general pointer, it is set to UINT32
[in]pInPointer to void general Parameter to be specified, if any, to get right output See examples If parameter is not needed, use NULL
Returns
M2MB_OS_SUCCESS in case of success
M2MB_OS_EVENT_ERROR Invalid counting event handle M2MB_OS_INVALID_ARG invalid arguments
Note
Not all the M2MB_OS_EV_SEL_CMD_E are always available. Of course, M2MB_OS_EV_SEL_CMD_CREATE_ATTR is not right for this function. M2MB_OS_EV_SEL_CMD_NAME, M2MB_OS_EV_SEL_CMD_USRNAME, M2MB_OS_EV_SEL_CMD_SUSPENDED_COUNT, M2MB_OS_EV_SEL_CMD_1ST_SUSP, M2MB_OS_EV_SEL_CMD_CURRENT_EVENTS are ok Allowed From Initialization, tasks, events, and ISRs

Example

CHAR MyEvName[10];
CHAR *pEvName;
MEM_W currBitEvent;
M2MB_OS_TASK whoIs;
osRes = m2mb_os_ev_setAttrItem( &evAttrHandle,
(
)
);
if( osRes != M2MB_OS_SUCCESS )
exit(...)
//create
m2mb_os_ev_init( &evHandle, &evAttrHandle );
//
//get the current bits in the event
m2mb_os_ev_getItem( M2MB_OS_EV_SEL_CMD_CURRENT_EVENTS, evHandle, &currBitEvent, NULL );
//copy only the first 10 chars to MyTaskName array of chars
// or simply get the pointer of name, with NULL

◆ m2mb_os_ev_init()

M2MB_OS_RESULT_E m2mb_os_ev_init ( M2MB_OS_EV_HANDLE pEvHandle,
M2MB_OS_EV_ATTR_HANDLE pEvAttr 
)

Application Event Set Creation.

This service creates a group of 32 event bits. All 32 event bits in the event are initialized to zero.

Parameters
[out]pEvHandlePointer to event handle
[in]pEvAttrPointer to event attribute handle
Returns
M2MB_OS_SUCCESS in case of success
M2MB_OS_EVENT_ERROR Invalid application event handle: either the handle is invalid or the event is already created M2MB_OS_INVALID_ARG invalid arguments M2MB_OS_CALLER_ERROR Invalid caller of this service.
Note
After successful event creation, event attribute will be deleted, their resources free and pEvAttr set to M2MB_OS_EV_INVALID_ATTR In case of error return, it is application's responsibility to release resources of attributes by calling m2mb_os_ev_setAttrItem( &evAttr, M2MB_OS_EV_SEL_CMD_DEL_ATTR, NULL ); Allowed From Initialization and tasks Preemption Possible No

Example

osRes = m2mb_os_ev_setAttrItem( &evAttrHandle, 2,
NULL, "MyEv"
);
// or using CMDS_ARGS(...) macro
osRes = m2mb_os_ev_setAttrItem( &evAttrHandle,
(
)
);
osRes = m2mb_os_ev_init( &evHandle, &evAttrHandle );
if ( osRes != M2MB_OS_SUCCESS )
{
}

◆ m2mb_os_ev_set()

M2MB_OS_RESULT_E m2mb_os_ev_set ( M2MB_OS_EV_HANDLE  evHandle,
UINT32  evBits,
M2MB_OS_EV_SET_OPT_E  optSet 
)

Set bits of event in a specified event.

This service sets or clears event bits in an event, depending upon the specified set-option. All suspended tasks whose event bits request is now satisfied are resumed.

Parameters
[in]evHandleHandle of event
[in]evBitsEvent bits to set or clear
[in]optSetOption for set or clear specified bit (see M2MB_OS_EV_SET_OPT_E)
Returns
M2MB_OS_SUCCESS in case of success (others in case of error : see m2mb_os_types.h)
M2MB_OS_EVENT_ERROR Invalid event handle.
Note

Allowed From Initialization, tasks, events, and ISRs Preemption Possible Yes

Example

// Set event bit 0, 4, and 8.
osRes = m2mb_os_ev_set(evHandle, (UINT32)0x111, M2MB_OS_EV_SET);
// If osRes equals M2MB_OS_SUCCESS, the event bits have been
// set and any suspended task whose request was satisfied
// has been resumed.
osRes = m2mb_os_ev_set(evHandle, (UINT32)0x100, M2MB_OS_EV_CLEAR);
// If osRes equals M2MB_OS_SUCCESS, the event bit 8 has been
// cleared

◆ m2mb_os_ev_setAttrItem()

M2MB_OS_RESULT_E m2mb_os_ev_setAttrItem ( M2MB_OS_EV_ATTR_HANDLE pEvAttr,
UINT8  nCmds,
  ... 
)

Set specific attribute for event init or creation.

This service set the attribute (or create it) to be used for event creation

Parameters
[in]pEvAttrPointer to event attribute of event
[in]nCmdsNumber of commands to be issued at once
[in]...Variable inputs, N cmds (see M2MB_OS_EV_SEL_CMD_E) followed by N arguments for their respective issued commands. CMDS(...) and CMDS_ARGS(...) macro can be used to better insert cmd and parameters and to better control right insertion
Returns
M2MB_OS_SUCCESS in case of success (others in case of error : see m2mb_os_types.h)
M2MB_OS_SUCCESS Successful event operation. M2MB_OS_EVENT_ERROR Invalid counting event handle M2MB_OS_INVALID_ARG invalid pEvAttr or pIn for set operation
Note
The attribute set are useful for event creation. Once created, use instead m2mb_os_ev_setItem() to set only available event properties Typical uses is only for M2MB_OS_EV_SEL_CMD_NAME and M2MB_OS_EV_SEL_CMD_USRNAME It is under application responsibility the right use of m2mb_os_ev_setAttrItem. For instance, multi creation of attrHandle without free of previous resources ( M2MB_OS_EV_SEL_CMD_CREATE_ATTR without M2MB_OS_EV_SEL_CMD_DEL_ATTR in case no m2mb_os_ev_init is used in the between ) will waste memory.

Allowed From Initialization, tasks, events, and ISRs

Example

UINT32 CurEvBits;
exit(error_creating attribute event);
"MyEv", "MyEvUser"
);
//or using CMDS_ARGS(...) macro
m2mb_os_ev_setAttrItem( &evAttrHandle,
(
)
);
if ( m2mb_os_ev_init( &evHandle, &evAttrHandle ) != M2MB_OS_SUCCESS )
{
//in case of error remember to manually remove attribute and release resources
}
//...
osRes = m2mb_os_ev_get(evHandle, (UINT32)0x111, M2MB_OS_EV_GET_ANY_AND_CLEAR, &CurEvBits, 50 );

◆ m2mb_os_ev_setItem()

M2MB_OS_RESULT_E m2mb_os_ev_setItem ( M2MB_OS_EV_HANDLE  evHandle,
M2MB_OS_EV_SEL_CMD_E  selCmd,
void *  pIn 
)

Set specific properties of the event.

This service set value for a specified parameter of the specified event if available To be used when an event is already created: its right use is under application responsibility By Selecting cmd, a specified parameter to be set can be selected

Parameters
[in]evHandleHandle of event
[in]selCmdSelect parameter to be set (see M2MB_OS_EV_SEL_CMD_E)
[in]pInPointer to value to be set. If a simple value, can be easily casted to (void*) e.g. int value -3 has to be passed, use (void*)-3 NULL if no value is needed
Returns
M2MB_OS_SUCCESS in case of success
M2MB_OS_EVENT_ERROR Invalid counting event handle M2MB_OS_INVALID_ARG invalid arguments
Note
Not all the M2MB_OS_EV_SEL_CMD_E are always available. Of course M2MB_OS_EV_SEL_CMD_CREATE_ATTR is not right for this function M2MB_OS_EV_SEL_CMD_NAME, M2MB_OS_EV_SEL_CMD_USRNAME are ok

Example