lwpa  0.1.0
LightWeight Platform Abstraction (lwpa)
View other versions:
All Data Structures Functions Variables Typedefs Enumerations Enumerator Modules Pages
lwpa_thread.h
1 /******************************************************************************
2  * Copyright 2018 ETC Inc.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *******************************************************************************
16  * This file is a part of lwpa. For more information, go to:
17  * https://github.com/ETCLabs/lwpa
18  ******************************************************************************/
19 
20 #ifndef _LWPA_THREAD_H_
21 #define _LWPA_THREAD_H_
22 
23 #include "FreeRTOS.h"
24 #include "task.h"
25 #include "semphr.h"
26 #include "lwpa_common.h"
27 #include "lwpa_bool.h"
28 
29 #ifdef __cplusplus
30 extern "C" {
31 #endif
32 
33 typedef struct LwpaThreadParams
34 {
35  unsigned int thread_priority;
36  unsigned int stack_size;
37  char *thread_name;
38  void *platform_data;
40 
41 #define LWPA_THREAD_DEFAULT_PRIORITY (configMAX_PRIORITIES / 2)
42 #define LWPA_THREAD_DEFAULT_STACK 2000
43 #define LWPA_THREAD_DEFAULT_NAME "lwpa_thread"
44 
45 typedef struct
46 {
47  void (*fn)(void *);
48  void *arg;
49  SemaphoreHandle_t sig;
50  TaskHandle_t tid;
52 
53 bool lwpa_thread_create(lwpa_thread_t *id, const LwpaThreadParams *params, void (*thread_fn)(void *), void *thread_arg);
54 bool lwpa_thread_stop(lwpa_thread_t *id, int wait_ms);
55 #define lwpa_thread_sleep(sleep_ms) vTaskDelay(pdMS_TO_TICKS(sleep_ms))
56 
57 #ifdef __cplusplus
58 }
59 #endif
60 
61 #endif /* LWPA_THREAD_H_ */
UNDEFINED lwpa_thread_t
The thread identifier.
Definition: lwpa_thread.dox:53
struct LwpaThreadParams LwpaThreadParams
A set of parameters for an lwpa_thread.
bool lwpa_thread_create(lwpa_thread_t *id, const LwpaThreadParams *params, void(*thread_fn)(void *), void *thread_arg)
Create a new thread.
Definition: lwpa_thread.c:35
bool lwpa_thread_stop(lwpa_thread_t *id, int wait_ms)
Stop a thread.
Definition: lwpa_thread.c:54
A set of parameters for an lwpa_thread.
Definition: lwpa_thread.dox:18
unsigned int thread_priority
The priority of the thread.
Definition: lwpa_thread.dox:21
void * platform_data
Pointer to a platform-specific parameter structure.
Definition: lwpa_thread.dox:28
unsigned int stack_size
The stack size of the thread.
Definition: lwpa_thread.dox:24
char * thread_name
A name for the thread, maximum length LWPA_THREAD_NAME_MAX_LENGTH.
Definition: lwpa_thread.dox:26
Definition: lwpa_thread.h:46