RUI3 (RAK Unified Interface 3) - RAK4631
udrv_system.h
Go to the documentation of this file.
1 #ifndef _UDRV_SYSTEM_H_
2 #define _UDRV_SYSTEM_H_
3 
4 #ifdef __cplusplus
5 extern "C" {
6 #endif
7 
8 #include <stdint.h>
9 #ifndef RUI_BOOTLOADER
10 #include <udrv_timer.h>
11 
12 #define RANDOM_LENGTH 4
13 #define SEED_LENGTH 4
14 #endif
15 
16 #define EVENT_QUEUE_SIZE (128)
17 #define EVENT_DATA_SIZE (8)//(sizeof(udrv_system_event_t))
18 
22 typedef enum
23 {
24  UDRV_SYS_EVT_OP_SERIAL_UART = 0x00, //operating mode parser - UART0/UART1
25 #ifdef SUPPORT_USB
26  UDRV_SYS_EVT_OP_SERIAL_USB, //operating mode parser - USB0
27 #endif
28 #ifdef SUPPORT_BLE
29  UDRV_SYS_EVT_OP_SERIAL_BLE, //operating mode parser - BLE
30 #endif
31 #ifdef SUPPORT_LORA
32  UDRV_SYS_EVT_OP_LORAWAN, //LoRaWAN RX process
33  UDRV_SYS_EVT_OP_LORAWAN_JOIN_CB, //Consider join request in join callback
34 #endif
35  UDRV_SYS_EVT_OP_USER_APP, //user application
37  UDRV_SYS_EVT_OP_SYS_TIMER, //system timer
38 #ifdef SUPPORT_NFC
39  UDRV_SYS_EVT_OP_SERIAL_NFC, //operating mode parsr - NFC
40 #endif
41  UDRV_SYS_EVT_OP_SERIAL_FALLBACK, //serial fallback to AT mode
43  UDRV_SYS_EVT_OP_GPIO_INTERRUPT, //Interrupt from GPIO
45 
46 typedef struct
47 {
48  udrv_system_event_op_t request;
49  void *p_context;
51 
52 typedef void (*UDRV_TASK_HANDLER) (void);
53 
54 void udrv_system_event_init(void);
55 
57 
58 void udrv_system_event_consume(void);
59 
60 void udrv_system_reboot(void);
61 
62 #if defined(rak11720) && defined(RUI_BOOTLOADER)
63 void udrv_system_critical_section_begin(uint32_t *mask);
64 
65 void udrv_system_critical_section_end (uint32_t *mask);
66 #endif
67 
68 #ifndef RUI_BOOTLOADER
69 void udrv_system_critical_section_begin(uint32_t *mask);
70 
71 void udrv_system_critical_section_end (uint32_t *mask);
72 
73 unsigned long udrv_system_random (unsigned long maxvalue);
74 
75 void udrv_system_randomseed(unsigned long seed);
76 
78 
79 int32_t udrv_system_user_app_timer_start (uint32_t count, void *m_data);
80 
81 int32_t udrv_system_user_app_timer_stop (void);
82 
83 int32_t udrv_create_thread(char *name, UDRV_TASK_HANDLER handler);
84 void udrv_destroy_thread(char *name);
85 void udrv_destroy_myself(void);
86 void udrv_thread_lock(void);
87 void udrv_thread_unlock(void);
88 #endif
89 
90 #ifdef __cplusplus
91 }
92 #endif
93 
94 #endif // #ifndef _UDRV_SYSTEM_H_
int32_t udrv_system_event_produce(udrv_system_event_t *event)
void udrv_system_event_consume(void)
Definition: udrv_system.h:24
void udrv_system_critical_section_begin(uint32_t *mask)
Definition: udrv_system.h:39
int32_t udrv_create_thread(char *name, UDRV_TASK_HANDLER handler)
void * p_context
Definition: udrv_system.h:49
int32_t udrv_system_user_app_timer_stop(void)
void(* UDRV_TASK_HANDLER)(void)
Definition: udrv_system.h:52
void(* timer_handler)(void *m_data)
Definition: udrv_timer.h:33
void udrv_system_randomseed(unsigned long seed)
int32_t udrv_system_user_app_timer_create(timer_handler tmr_handler, TimerMode_E mode)
void udrv_system_event_init(void)
Definition: udrv_system.h:35
void udrv_destroy_thread(char *name)
udrv_system_event_op_t
event operation.
Definition: udrv_system.h:22
Definition: udrv_system.h:42
int32_t udrv_system_user_app_timer_start(uint32_t count, void *m_data)
void udrv_thread_lock(void)
Definition: udrv_system.h:43
Definition: udrv_system.h:29
Definition: udrv_system.h:37
void udrv_thread_unlock(void)
void udrv_system_critical_section_end(uint32_t *mask)
Definition: udrv_system.h:46
Definition: udrv_system.h:32
Definition: udrv_system.h:33
unsigned long udrv_system_random(unsigned long maxvalue)
enum hwtmr_op_mode TimerMode_E
Definition: udrv_system.h:36
udrv_system_event_op_t request
Requested operation.
Definition: udrv_system.h:48
Definition: udrv_system.h:41
void udrv_destroy_myself(void)
void udrv_system_reboot(void)