m2mb API docs  25.20.008
m2mb API sets documentation
m2mb_os.h
Go to the documentation of this file.
1 /*===============================================================================================*/
2 /* >>> Copyright (C) Telit Communications S.p.A. Italy All Rights Reserved. <<< */
28 #ifndef M2MB_OS_H
29 #define M2MB_OS_H
30 
31 /* Include ======================================================================================*/
32 
33 /* Global declarations ==========================================================================*/
34 #define M2MB_OS_TASK_INVALID 0
35 #define M2MB_OS_TASK_INVALID_ATTR 0
36 
37 #define M2MB_OS_TASK_AUTOSTART 1
38 #define M2MB_OS_TASK_NOT_START 0
39 
40 #define M2MB_OS_ISR_ON 1
41 #define M2MB_OS_ISR_OFF 0
42 
43 #define m2mb_os_taskSetAttrItem_( h, args... ) m2mb_os_taskSetAttrItem( h, CMDS_ARGS( args ) )
44 
45 /* in bytes */
46 #define M2MB_OS_MIN_STACK_SIZE 1024
47 
48 /* category for errno */
49 #define M2MB_FS_CAT ( (UINT32)0 )
50 #define M2MB_SMS_CAT ( (UINT32)1 )
51 #define M2MB_GNSS_CAT ( (UINT32)2 )
52 #define M2MB_OS_CAT ( (UINT32)3 )
53 
54 /*-----------------------------------------------------------------------------------------------
55 
56  can be called directly without specify CMDS_ARGS
57  m2mb_os_taskSetAttrItem_( &taskAttrHandle,
58  M2MB_OS_TASK_SEL_CMD_CREATE_ATTR, NULL,
59  M2MB_OS_TASK_SEL_CMD_NAME, "myTask",
60  M2MB_OS_TASK_SEL_CMD_PRIORITY, 201,
61  M2MB_OS_TASK_SEL_CMD_PREEMPTIONTH, 201,
62  M2MB_OS_TASK_SEL_CMD_AUTOSTART, M2MB_OS_TASK_AUTOSTART,
63  M2MB_OS_TASK_SEL_CMD_USRNAME, "myUserTask"
64  );
65  -----------------------------------------------------------------------------------------------*/
66 #define m2mb_os_taskSetAttrItem_( h, args... ) m2mb_os_taskSetAttrItem( h, CMDS_ARGS( args ) )
67 
68 
69 /*-----------------------------------------------------------------------------------------------*/
70 
71 /* Global typedefs ==============================================================================*/
72 typedef struct M2MB_OS_TASK_ATTR_HANDLE_TAG *M2MB_OS_TASK_ATTR_HANDLE;
73 typedef struct M2MB_OS_TASK_HANDLE_TAG *M2MB_OS_TASK_HANDLE;
74 
75 /* specified type for entry function of task */
76 typedef void( *ENTRY_FN )( void * );
77 
78 typedef enum
79 {
80  M2MB_OS_TASK_SEL_CMD_CREATE_ATTR,
81  M2MB_OS_TASK_SEL_CMD_DEL_ATTR,
82  /* use as Os name : the name during task creation */
83  M2MB_OS_TASK_SEL_CMD_NAME,
84  /* if set, usr name could be different from initial CMD NAME */
85  M2MB_OS_TASK_SEL_CMD_USRNAME,
86  M2MB_OS_TASK_SEL_CMD_STACK_START,
87  M2MB_OS_TASK_SEL_CMD_STACK_SIZE,
88  M2MB_OS_TASK_SEL_CMD_PRIORITY,
89  M2MB_OS_TASK_SEL_CMD_PREEMPTIONTH,
90  /* time slice: use max ticks for task to run when other tasks with same priority are ready */
91  M2MB_OS_TASK_SEL_CMD_TSLICE,
92  /* start task soon after m2mb_os_taskCreate is called: no need to call m2mb_os_taskResume */
93  M2MB_OS_TASK_SEL_CMD_AUTOSTART,
94 
95  /* state of the task: see M2MB_OS_TASK_STATE_E */
96  M2MB_OS_TASK_SEL_CMD_STATE,
97  /* task running count */
98  M2MB_OS_TASK_SEL_CMD_RUN_CNT,
99 
100  /* ---- */
101  M2MB_OS_TASK_SEL_CMD_END,
102  ENUM_TO_INT( M2MB_OS_TASK_SEL_CMD_E )
103 } M2MB_OS_TASK_SEL_CMD_E;
104 
105 typedef enum
106 {
107  M2MB_OS_TASK_STATE_READY,
108  M2MB_OS_TASK_STATE_COMPLETED,
109  M2MB_OS_TASK_STATE_TERMINATED,
110  M2MB_OS_TASK_STATE_SUSP,
111  M2MB_OS_TASK_STATE_SLEEP,
112  M2MB_OS_TASK_STATE_QUEUE_SUSP,
113  M2MB_OS_TASK_STATE_SEMAPHORE_SUSP,
114  M2MB_OS_TASK_STATE_SIG_SUSP,
115  M2MB_OS_TASK_STATE_BLOCK_MEM_SUSP,
116  M2MB_OS_TASK_STATE_BYTE_MEM_SUSP,
117  M2MB_OS_TASK_STATE_MUTEX_SUSP = 0x0D,
118 
119  /* ---- */
120  M2MB_OS_TASK_STATE_END,
121  ENUM_TO_INT( M2MB_OS_TASK_STATE_E )
122 } M2MB_OS_TASK_STATE_E;
123 
124 typedef enum
125 {
126  M2MB_OS_MEMINFO_FRAGMENTS, //the total number of memory fragments
127  M2MB_OS_MEMINFO_BYTES_AVAILABLE, //the total number of available bytes
128  M2MB_OS_MEMINFO_SIZE, //the total number of memory size
129 
130  /* ---- */
131  M2MB_OS_MEMINFO_END,
132  ENUM_TO_INT( M2MB_OS_MEMINFO_E )
133 } M2MB_OS_MEMINFO_E;
134 
135 /* Global functions =============================================================================*/
136 
137 /*-----------------------------------------------------------------------------------------------*/
171 /*-----------------------------------------------------------------------------------------------*/
172 
173 UINT32 M2MB_OS_MS2TICKS( UINT32 ms );
174 
175 /*-----------------------------------------------------------------------------------------------*/
212 /*-----------------------------------------------------------------------------------------------*/
213 void *m2mb_os_malloc( UINT32 size );
214 
215 /*-----------------------------------------------------------------------------------------------*/
259 /*-----------------------------------------------------------------------------------------------*/
260 void *m2mb_os_calloc( UINT32 size );
261 
262 /*-----------------------------------------------------------------------------------------------*/
299 /*-----------------------------------------------------------------------------------------------*/
300 M2MB_OS_RESULT_E m2mb_os_free( void *pMem );
301 
302 /*-----------------------------------------------------------------------------------------------*/
326 /*-----------------------------------------------------------------------------------------------*/
327 M2MB_OS_RESULT_E m2mb_os_init( void );
328 
329 /*-----------------------------------------------------------------------------------------------*/
432 /*-----------------------------------------------------------------------------------------------*/
433 M2MB_OS_RESULT_E m2mb_os_taskCreate(
434  M2MB_OS_TASK_HANDLE *pTaskHandle,
435  M2MB_OS_TASK_ATTR_HANDLE *pTaskAttr,
436  ENTRY_FN entryFn,
437  void *pArg
438 );
439 
440 /*-----------------------------------------------------------------------------------------------*/
570 /*-----------------------------------------------------------------------------------------------*/
571 M2MB_OS_RESULT_E m2mb_os_taskGetItem(
572  M2MB_OS_TASK_HANDLE taskHandle,
573  M2MB_OS_TASK_SEL_CMD_E selCmd,
574  MEM_W *pOut,
575  void *pIn
576 );
577 
578 
579 /*-----------------------------------------------------------------------------------------------*/
625 /*-----------------------------------------------------------------------------------------------*/
626 M2MB_OS_RESULT_E m2mb_os_taskSetItem(
627  M2MB_OS_TASK_HANDLE taskHandle,
628  M2MB_OS_TASK_SEL_CMD_E selCmd,
629  void *pIn
630 );
631 
632 /*-----------------------------------------------------------------------------------------------*/
706 /*-----------------------------------------------------------------------------------------------*/
707 M2MB_OS_RESULT_E m2mb_os_taskSetAttrItem(
708  M2MB_OS_TASK_ATTR_HANDLE *pTaskAttrHandle,
709  UINT8 nCmds,
710  ...
711 );
712 
713 /*-----------------------------------------------------------------------------------------------*/
749 /*-----------------------------------------------------------------------------------------------*/
750 M2MB_OS_RESULT_E m2mb_os_taskSleep( UINT32 ticks );
751 
752 /*-----------------------------------------------------------------------------------------------*/
781 /*-----------------------------------------------------------------------------------------------*/
782 M2MB_OS_TASK_HANDLE m2mb_os_taskGetId( void );
783 
784 /*-----------------------------------------------------------------------------------------------*/
823 /*-----------------------------------------------------------------------------------------------*/
824 M2MB_OS_RESULT_E m2mb_os_taskSuspend( M2MB_OS_TASK_HANDLE taskHandle );
825 
826 /*-----------------------------------------------------------------------------------------------*/
861 /*-----------------------------------------------------------------------------------------------*/
862 M2MB_OS_RESULT_E m2mb_os_taskResume( M2MB_OS_TASK_HANDLE taskHandle );
863 
864 /*-----------------------------------------------------------------------------------------------*/
901 /*-----------------------------------------------------------------------------------------------*/
902 M2MB_OS_RESULT_E m2mb_os_taskTerminate( M2MB_OS_TASK_HANDLE taskHandle );
903 
904 /*-----------------------------------------------------------------------------------------------*/
941 /*-----------------------------------------------------------------------------------------------*/
942 M2MB_OS_RESULT_E m2mb_os_taskRestart( M2MB_OS_TASK_HANDLE taskHandle );
943 
944 /*-----------------------------------------------------------------------------------------------*/
986 /*-----------------------------------------------------------------------------------------------*/
987 M2MB_OS_RESULT_E m2mb_os_taskDelete( M2MB_OS_TASK_HANDLE taskHandle );
988 
989 /*-----------------------------------------------------------------------------------------------*/
1036 /*-----------------------------------------------------------------------------------------------*/
1037 M2MB_OS_RESULT_E m2mb_os_taskCooperate( void );
1038 
1039 /*-----------------------------------------------------------------------------------------------*/
1139 /*-----------------------------------------------------------------------------------------------*/
1140 M2MB_OS_RESULT_E m2mb_os_taskWaitAbort( M2MB_OS_TASK_HANDLE taskHandle );
1141 
1142 /*-----------------------------------------------------------------------------------------------*/
1170 /*-----------------------------------------------------------------------------------------------*/
1171 MEM_W m2mb_os_getSysTicks( void );
1172 
1173 /*-----------------------------------------------------------------------------------------------*/
1203 /*-----------------------------------------------------------------------------------------------*/
1204 M2MB_OS_RESULT_E m2mb_os_setSysTicks( UINT32 newTick );
1205 
1206 /*-----------------------------------------------------------------------------------------------*/
1231 /*-----------------------------------------------------------------------------------------------*/
1232 FLOAT32 m2mb_os_getSysTickDuration_ms( void );
1233 
1234 /*-----------------------------------------------------------------------------------------------*/
1275 /*-----------------------------------------------------------------------------------------------*/
1276 UINT8 m2mb_os_isrCtrl( UINT8 newIsrState );
1277 
1278 /*-----------------------------------------------------------------------------------------------*/
1279 /*-----------------------------------------------------------------------------------------------*/
1317 /*-----------------------------------------------------------------------------------------------*/
1318 M2MB_OS_RESULT_E m2mb_os_get_errno( UINT32 *pCategory, INT32 *pErrno );
1319 
1320 /*-----------------------------------------------------------------------------------------------*/
1321 /*-----------------------------------------------------------------------------------------------*/
1376 /*-----------------------------------------------------------------------------------------------*/
1377 M2MB_OS_RESULT_E m2mb_os_memInfo( M2MB_OS_MEMINFO_E memInfoSelect, MEM_W *pOut );
1378 
1379 /*-----------------------------------------------------------------------------------------------*/
1430 /*-----------------------------------------------------------------------------------------------*/
1431 void *m2mb_os_realloc( void *ptr, UINT32 size );
1432 
1433 
1434 
1435 #endif /* M2MB_OS_H */
m2mb_os_taskCreate
M2MB_OS_RESULT_E m2mb_os_taskCreate(M2MB_OS_TASK_HANDLE *pTaskHandle, M2MB_OS_TASK_ATTR_HANDLE *pTaskAttr, ENTRY_FN entryFn, void *pArg)
Create application task.
m2mb_os_free
M2MB_OS_RESULT_E m2mb_os_free(void *pMem)
Free allocated memory.
m2mb_os_taskSetItem
M2MB_OS_RESULT_E m2mb_os_taskSetItem(M2MB_OS_TASK_HANDLE taskHandle, M2MB_OS_TASK_SEL_CMD_E selCmd, void *pIn)
Set specific task properties.
m2mb_os_taskCooperate
M2MB_OS_RESULT_E m2mb_os_taskCooperate(void)
Make task to coperate by releasing scheduler control.
m2mb_os_taskDelete
M2MB_OS_RESULT_E m2mb_os_taskDelete(M2MB_OS_TASK_HANDLE taskHandle)
Task delete.
m2mb_os_taskResume
M2MB_OS_RESULT_E m2mb_os_taskResume(M2MB_OS_TASK_HANDLE taskHandle)
Resume suspended application task.
m2mb_os_taskRestart
M2MB_OS_RESULT_E m2mb_os_taskRestart(M2MB_OS_TASK_HANDLE taskHandle)
Task restart.
m2mb_os_getSysTicks
MEM_W m2mb_os_getSysTicks(void)
Get system time in ticks.
m2mb_os_init
M2MB_OS_RESULT_E m2mb_os_init(void)
Initialization of OS.
m2mb_os_setSysTicks
M2MB_OS_RESULT_E m2mb_os_setSysTicks(UINT32 newTick)
Set start system time in ticks.
m2mb_os_isrCtrl
UINT8 m2mb_os_isrCtrl(UINT8 newIsrState)
Enable and disable interrupts (ISRs)
m2mb_os_malloc
void * m2mb_os_malloc(UINT32 size)
Allocates bytes of memory.
m2mb_os_taskGetId
M2MB_OS_TASK_HANDLE m2mb_os_taskGetId(void)
Retrieves handle to the currently executing task.
m2mb_os_taskSuspend
M2MB_OS_RESULT_E m2mb_os_taskSuspend(M2MB_OS_TASK_HANDLE taskHandle)
Suspend application task.
m2mb_os_getSysTickDuration_ms
FLOAT32 m2mb_os_getSysTickDuration_ms(void)
Get duration of system tick in ms.
m2mb_os_calloc
void * m2mb_os_calloc(UINT32 size)
Allocates bytes of memory and init space with 0.
m2mb_os_taskTerminate
M2MB_OS_RESULT_E m2mb_os_taskTerminate(M2MB_OS_TASK_HANDLE taskHandle)
Terminates application task.
M2MB_OS_MS2TICKS
UINT32 M2MB_OS_MS2TICKS(UINT32 ms)
Convert ms to ticks.
m2mb_os_get_errno
M2MB_OS_RESULT_E m2mb_os_get_errno(UINT32 *pCategory, INT32 *pErrno)
Allow to get Errno saved in relative task environment.
m2mb_os_taskGetItem
M2MB_OS_RESULT_E m2mb_os_taskGetItem(M2MB_OS_TASK_HANDLE taskHandle, M2MB_OS_TASK_SEL_CMD_E selCmd, MEM_W *pOut, void *pIn)
Get specific task properties.
m2mb_os_taskWaitAbort
M2MB_OS_RESULT_E m2mb_os_taskWaitAbort(M2MB_OS_TASK_HANDLE taskHandle)
Abort suspension of specified task.
m2mb_os_taskSetAttrItem
M2MB_OS_RESULT_E m2mb_os_taskSetAttrItem(M2MB_OS_TASK_ATTR_HANDLE *pTaskAttrHandle, UINT8 nCmds,...)
Set specific attribute for task creation.
m2mb_os_taskSleep
M2MB_OS_RESULT_E m2mb_os_taskSleep(UINT32 ticks)
Suspend current task for specified time in ticks.
m2mb_os_memInfo
M2MB_OS_RESULT_E m2mb_os_memInfo(M2MB_OS_MEMINFO_E memInfoSelect, MEM_W *pOut)
Returns dynamic memory (HEAP) information.
m2mb_os_realloc
void * m2mb_os_realloc(void *ptr, UINT32 size)
Dynamic memory reallocation.