VSF Documented
Data Structures | Macros | Typedefs | Functions | Variables
driver.c File Reference
#include "hal/vsf_hal_cfg.h"
#include "./device.h"
#include "hal/driver/vendor_driver.h"
#include "hal/utilities/stream/usart/vsf_usart_stream.h"
#include "service/vsf_service.h"
#include "./vsf_hal_distbus_enum_with_peripheral_count.inc"

Data Structures

struct  vsf_hal_distbus_ctx_t
 

Macros

#define __VSF_HAL_DISTBUS_GPIO_CLASS_INHERIT__
 
#define __VSF_HAL_DISTBUS_USART_CLASS_INHERIT__
 
#define __VSF_HAL_DISTBUS_SPI_CLASS_INHERIT__
 
#define __VSF_HAL_DISTBUS_I2C_CLASS_INHERIT__
 
#define __VSF_HAL_DISTBUS_I2S_CLASS_INHERIT__
 
#define __VSF_HAL_DISTBUS_SDIO_CLASS_INHERIT__
 
#define VSF_HAL_DISTBUS_MSGPOLL_SIZE   64
 
#define VSF_HAL_DISTBUS_DEFINE(__TYPE)
 
#define __VSF_HAL_DISTBUS_ENUM   VSF_HAL_DISTBUS_DEFINE
 
#define VSF_HAL_DISTBUS_PERIPHERAL_TYPE_DEF(__TYPE)
 
#define __VSF_HAL_DISTBUS_ENUM   VSF_HAL_DISTBUS_PERIPHERAL_TYPE_DEF
 
#define VSF_HAL_HW_IMPLEMENT(__N, __VALUE)
 
#define VSF_HAL_HW_IMPLEMENT_ARRAY(__N, __VALUE)    &VSF_MCONNECT(vsf_hw_, VSF_HAL_CFG_IMP_TYPE, __N),
 
#define VSF_HAL_HW_IMPLEMENT_MULTI()
 
#define VSF_HAL_HW_IMPLEMENT_IRQ(__N, __VALUE)
 
#define VSF_HAL_HW_IMPLEMENT_IRQ_MULTI()    VSF_MREPEAT(VSF_MCONNECT(VSF_HW_, VSF_HAL_CFG_IMP_UPCASE_TYPE, _COUNT), VSF_HAL_HW_IMPLEMENT_IRQ, NULL)
 
#define VSF_HAL_DISTBUS_DEFINE_DEVS(__TYPE)    VSF_MCONNECT(vsf_hal_distbus_, __TYPE, _t) *__TYPE;
 
#define __VSF_HAL_DISTBUS_ENUM   VSF_HAL_DISTBUS_DEFINE_DEVS
 
#define VSF_HAL_DISTBUS_ON_NEW_DEFS(__TYPE)
 
#define __VSF_HAL_DISTBUS_ENUM   VSF_HAL_DISTBUS_ON_NEW_DEFS
 

Typedefs

typedef struct vsf_hal_distbus_ctx_t vsf_hal_distbus_ctx_t
 

Functions

 describe_mem_stream (vsf_distbus_transport_stream_rx, 1024)
 
 dcl_vsf_pool (def_vsf_pool(__vsf_hal_distbus_msg_pool)
 
 imp_vsf_pool (__vsf_hal_distbus_msg_pool, __vsf_hal_distbus_msg_t)
 
void vsf_hal_distbus_on_new (vsf_hal_distbus_t *hal_distbus, vsf_hal_distbus_type_t type, uint8_t num, void *devs)
 
bool vsf_hal_distbus_on_irq (void *devs, uint16_t irqn)
 
void vsf_arch_set_vector_table (void(*const *const vector_table)())
 
void vsf_irq_enable (int irqn)
 
void vsf_irq_disable (int irqn)
 
bool vsf_irq_is_enabled (int irqn)
 
void vsf_irq_pend (int irqn)
 
void vsf_irq_unpend (int irqn)
 
bool vsf_irq_is_pending (int irqn)
 
void vsf_irq_set_priority (int irqn, uint32_t priority)
 
uint32_t vsf_irq_get_priority (int irqn)
 
bool vsf_driver_init (void)
 common hal drivers
 

Variables

 __vsf_hal_distbus_msg_t
 
 vsf_hal_distbus_irq_ctx_t
 

Macro Definition Documentation

◆ __VSF_HAL_DISTBUS_GPIO_CLASS_INHERIT__

#define __VSF_HAL_DISTBUS_GPIO_CLASS_INHERIT__

◆ __VSF_HAL_DISTBUS_USART_CLASS_INHERIT__

#define __VSF_HAL_DISTBUS_USART_CLASS_INHERIT__

◆ __VSF_HAL_DISTBUS_SPI_CLASS_INHERIT__

#define __VSF_HAL_DISTBUS_SPI_CLASS_INHERIT__

◆ __VSF_HAL_DISTBUS_I2C_CLASS_INHERIT__

#define __VSF_HAL_DISTBUS_I2C_CLASS_INHERIT__

◆ __VSF_HAL_DISTBUS_I2S_CLASS_INHERIT__

#define __VSF_HAL_DISTBUS_I2S_CLASS_INHERIT__

◆ __VSF_HAL_DISTBUS_SDIO_CLASS_INHERIT__

#define __VSF_HAL_DISTBUS_SDIO_CLASS_INHERIT__

◆ VSF_HAL_DISTBUS_MSGPOLL_SIZE

#define VSF_HAL_DISTBUS_MSGPOLL_SIZE   64

◆ VSF_HAL_DISTBUS_DEFINE

#define VSF_HAL_DISTBUS_DEFINE (   __TYPE)
Value:
struct { \
uint8_t dev_num; \
VSF_MCONNECT(vsf_, __TYPE, _t) *dev[32]; \
} __TYPE;
unsigned char uint8_t
Definition stdint.h:5

◆ __VSF_HAL_DISTBUS_ENUM [1/4]

#define __VSF_HAL_DISTBUS_ENUM   VSF_HAL_DISTBUS_DEFINE

◆ VSF_HAL_DISTBUS_PERIPHERAL_TYPE_DEF

#define VSF_HAL_DISTBUS_PERIPHERAL_TYPE_DEF (   __TYPE)
Value:
typedef struct VSF_MCONNECT(vsf_hw_, __TYPE, _t) { \
VSF_MCONNECT(vsf_remapped_, __TYPE, _t) _; \
} VSF_MCONNECT(vsf_hw_, __TYPE, _t);
struct VSF_MCONNECT(VSF_FLASH_CFG_IMP_PREFIX, _flash_t)
Definition flash.c:53
struct @877::@882 _

◆ __VSF_HAL_DISTBUS_ENUM [2/4]

#define __VSF_HAL_DISTBUS_ENUM   VSF_HAL_DISTBUS_PERIPHERAL_TYPE_DEF

◆ VSF_HAL_HW_IMPLEMENT

#define VSF_HAL_HW_IMPLEMENT (   __N,
  __VALUE 
)
Value:
VSF_MCONNECT(vsf_hw_, VSF_HAL_CFG_IMP_TYPE, _t) VSF_MCONNECT(vsf_hw_, VSF_HAL_CFG_IMP_TYPE, __N) = {\
._ = { \
.op = &VSF_MCONNECT(vsf_remapped_, VSF_HAL_CFG_IMP_TYPE, _op),\
}, \
};

◆ VSF_HAL_HW_IMPLEMENT_ARRAY

#define VSF_HAL_HW_IMPLEMENT_ARRAY (   __N,
  __VALUE 
)     &VSF_MCONNECT(vsf_hw_, VSF_HAL_CFG_IMP_TYPE, __N),

◆ VSF_HAL_HW_IMPLEMENT_MULTI

#define VSF_HAL_HW_IMPLEMENT_MULTI ( )
Value:
VSF_MREPEAT(VSF_MCONNECT(VSF_HW_, VSF_HAL_CFG_IMP_UPCASE_TYPE, _COUNT), VSF_HAL_HW_IMPLEMENT, NULL)\
VSF_MCONNECT(vsf_hw_, VSF_HAL_CFG_IMP_TYPE, _t) *const VSF_MCONNECT(vsf_hw_, VSF_HAL_CFG_IMP_TYPE, s)[VSF_MCONNECT(VSF_HW_, VSF_HAL_CFG_IMP_UPCASE_TYPE, _COUNT)] = {\
VSF_MREPEAT(VSF_MCONNECT(VSF_HW_, VSF_HAL_CFG_IMP_UPCASE_TYPE, _COUNT), VSF_HAL_HW_IMPLEMENT_ARRAY, NULL)\
};
#define VSF_HAL_HW_IMPLEMENT_ARRAY(__N, __VALUE)
Definition driver.c:139
#define VSF_HAL_HW_IMPLEMENT(__N, __VALUE)
Definition driver.c:133
#define NULL
Definition lvgl.h:26
#define VSF_MREPEAT(__COUNT, __MACRO, __PARAM)
Definition vsf_repeat_macro.h:51

◆ VSF_HAL_HW_IMPLEMENT_IRQ

#define VSF_HAL_HW_IMPLEMENT_IRQ (   __N,
  __VALUE 
)
Value:
void VSF_MCONNECT(VSF_HAL_CFG_IMP_UPCASE_TYPE, __N, _IRQHandler)(void) \
{ \
VSF_MCONNECT(vsf_hal_distbus_, VSF_HAL_CFG_IMP_TYPE, _t) *target = \
(VSF_MCONNECT(vsf_hal_distbus_, VSF_HAL_CFG_IMP_TYPE, _t) *)\
VSF_MCONNECT(vsf_hw_, VSF_HAL_CFG_IMP_TYPE, __N)._.target; \
uint16_t irqn = target->irq.no; \
__vsf_hal_distbus_ctx.irq_ctx[irqn].pending = true; \
if ( (__vsf_hal_distbus_ctx.irq_ctx[irqn].enable) \
&& (target->irq.handler != NULL)) { \
__vsf_hal_distbus_ctx.irq_ctx[irqn].pending = false; \
target->irq.handler(target->irq.target, \
(VSF_MCONNECT(vsf_, VSF_HAL_CFG_IMP_TYPE, _t) *)target, \
target->irq.triggered_mask); \
} \
}
unsigned short uint16_t
Definition stdint.h:7
vsf_hal_distbus_irq_ctx_t irq_ctx[VSF_HW_INTERRUPTS_NUM]
Definition driver.c:82

◆ VSF_HAL_HW_IMPLEMENT_IRQ_MULTI

#define VSF_HAL_HW_IMPLEMENT_IRQ_MULTI ( )     VSF_MREPEAT(VSF_MCONNECT(VSF_HW_, VSF_HAL_CFG_IMP_UPCASE_TYPE, _COUNT), VSF_HAL_HW_IMPLEMENT_IRQ, NULL)

◆ VSF_HAL_DISTBUS_DEFINE_DEVS

#define VSF_HAL_DISTBUS_DEFINE_DEVS (   __TYPE)     VSF_MCONNECT(vsf_hal_distbus_, __TYPE, _t) *__TYPE;

◆ __VSF_HAL_DISTBUS_ENUM [3/4]

#define __VSF_HAL_DISTBUS_ENUM   VSF_HAL_DISTBUS_DEFINE_DEVS

◆ VSF_HAL_DISTBUS_ON_NEW_DEFS

#define VSF_HAL_DISTBUS_ON_NEW_DEFS (   __TYPE)
Value:
case VSF_MCONNECT(VSF_HAL_DISTBUS_, __TYPE): \
if (!__vsf_hal_distbus_ctx.chip.__TYPE.dev_num) { \
__vsf_hal_distbus_ctx.chip.__TYPE.dev_num = vsf_min(num, dimof(__vsf_hal_distbus_ctx.chip.__TYPE.dev));\
for (uint8_t i = 0; i < __vsf_hal_distbus_ctx.chip.__TYPE.dev_num; i++) {\
u_devs.__TYPE[i].irq.no = i + VSF_MCONNECT(VSF_HW_, __TYPE, _IRQN);\
__vsf_hal_distbus_ctx.chip.__TYPE.dev[i] = (VSF_MCONNECT(vsf_, __TYPE, _t) *)&u_devs.__TYPE[i];\
if (i < dimof(VSF_MCONNECT(vsf_hw_, __TYPE, s))) { \
VSF_MCONNECT(vsf_hw_, __TYPE, s)[i]->_.target = (VSF_MCONNECT(vsf_, __TYPE, _t) *)__vsf_hal_distbus_ctx.chip.__TYPE.dev[i];\
__vsf_arch_trace(0, "[hal_distbus] new " VSF_STR(__TYPE) "%d %p" VSF_TRACE_CFG_LINEEND, i, __vsf_hal_distbus_ctx.chip.__TYPE.dev[i]);\
} \
} \
} \
break;
#define VSF_STR(__STRING)
Definition __type.h:140
#define vsf_min(__a, __b)
Definition __type.h:152
#define dimof(__arr)
Definition __type.h:155
chip
Definition driver.c:78
#define VSF_TRACE_CFG_LINEEND
Definition vsf_trace.h:47

◆ __VSF_HAL_DISTBUS_ENUM [4/4]

#define __VSF_HAL_DISTBUS_ENUM   VSF_HAL_DISTBUS_ON_NEW_DEFS

Typedef Documentation

◆ vsf_hal_distbus_ctx_t

Function Documentation

◆ describe_mem_stream()

describe_mem_stream ( vsf_distbus_transport_stream_rx  ,
1024   
)

◆ dcl_vsf_pool()

dcl_vsf_pool ( def_vsf_pool __vsf_hal_distbus_msg_pool)

◆ imp_vsf_pool()

imp_vsf_pool ( __vsf_hal_distbus_msg_pool  ,
__vsf_hal_distbus_msg_t   
)

◆ vsf_hal_distbus_on_new()

void vsf_hal_distbus_on_new ( vsf_hal_distbus_t hal_distbus,
vsf_hal_distbus_type_t  type,
uint8_t  num,
void *  devs 
)

◆ vsf_hal_distbus_on_irq()

bool vsf_hal_distbus_on_irq ( void *  devs,
uint16_t  irqn 
)

◆ vsf_arch_set_vector_table()

void vsf_arch_set_vector_table ( void(**)()  vector_table)

◆ vsf_irq_enable()

void vsf_irq_enable ( int  irqn)

◆ vsf_irq_disable()

void vsf_irq_disable ( int  irqn)

◆ vsf_irq_is_enabled()

bool vsf_irq_is_enabled ( int  irqn)

◆ vsf_irq_pend()

void vsf_irq_pend ( int  irqn)

◆ vsf_irq_unpend()

void vsf_irq_unpend ( int  irqn)

◆ vsf_irq_is_pending()

bool vsf_irq_is_pending ( int  irqn)

◆ vsf_irq_set_priority()

void vsf_irq_set_priority ( int  irqn,
uint32_t  priority 
)

◆ vsf_irq_get_priority()

uint32_t vsf_irq_get_priority ( int  irqn)

◆ vsf_driver_init()

bool vsf_driver_init ( void  )

common hal drivers

Note
initialize device driver
Parameters
none
Return values
trueinitialization succeeded.
falseinitialization failed

initialise interrupt controller;

Variable Documentation

◆ __vsf_hal_distbus_msg_t

__vsf_hal_distbus_msg_t

◆ vsf_hal_distbus_irq_ctx_t

vsf_hal_distbus_irq_ctx_t
Generated from commit: vsfteam/vsf@3f091ef