gnuk/src/sys.h

93 lines
1.6 KiB
C
Raw Normal View History

2012-05-25 06:20:08 +00:00
typedef void (*handler)(void);
2012-05-26 04:29:59 +00:00
extern handler vector[14];
2012-05-25 06:20:08 +00:00
static inline const uint8_t *
unique_device_id (void)
{
2012-05-26 04:29:59 +00:00
const uint8_t * (*func) (void) = (const uint8_t * (*)(void))vector[2];
2012-05-25 06:20:08 +00:00
return (*func) ();
}
static inline void
set_led (int on)
{
2012-05-26 04:29:59 +00:00
void (*func) (int) = (void (*)(int))vector[3];
2012-05-25 06:20:08 +00:00
return (*func) (on);
}
static inline void
flash_unlock (void)
{
2012-05-26 04:29:59 +00:00
(*vector[4]) ();
2012-05-25 06:20:08 +00:00
}
static inline int
flash_program_halfword (uint32_t addr, uint16_t data)
{
2012-05-26 04:29:59 +00:00
int (*func) (uint32_t, uint16_t) = (int (*)(uint32_t, uint16_t))vector[5];
2012-05-25 06:20:08 +00:00
return (*func) (addr, data);
}
static inline int
flash_erase_page (uint32_t addr)
{
2012-05-26 04:29:59 +00:00
int (*func) (uint32_t) = (int (*)(uint32_t))vector[6];
2012-05-25 06:20:08 +00:00
return (*func) (addr);
}
static inline int
flash_check_blank (const uint8_t *p_start, size_t size)
{
2012-05-26 04:29:59 +00:00
int (*func) (const uint8_t *, int) = (int (*)(const uint8_t *, int))vector[7];
2012-05-25 06:20:08 +00:00
return (*func) (p_start, size);
}
static inline int
flash_write (uint32_t dst_addr, const uint8_t *src, size_t len)
{
int (*func) (uint32_t, const uint8_t *, size_t)
2012-05-26 04:29:59 +00:00
= (int (*)(uint32_t, const uint8_t *, size_t))vector[8];
2012-05-25 06:20:08 +00:00
return (*func) (dst_addr, src, len);
}
static inline int
flash_protect (void)
{
2012-05-26 04:29:59 +00:00
int (*func) (void) = (int (*)(void))vector[9];
2012-05-25 06:20:08 +00:00
return (*func) ();
}
static inline void __attribute__((noreturn))
flash_mass_erase_and_exec (void)
{
2012-05-26 04:29:59 +00:00
void (*func) (void) = (void (*)(void))vector[10];
2012-05-25 06:20:08 +00:00
(*func) ();
for (;;);
}
static inline void
usb_lld_sys_init (void)
{
2012-05-26 04:29:59 +00:00
(*vector[11]) ();
2012-05-25 06:20:08 +00:00
}
static inline void
usb_lld_sys_shutdown (void)
{
2012-05-26 04:29:59 +00:00
(*vector[12]) ();
2012-05-25 06:20:08 +00:00
}
static inline void
nvic_system_reset (void)
{
2012-05-26 04:29:59 +00:00
(*vector[13]) ();
2012-05-25 06:20:08 +00:00
}