123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- #ifndef ESPLINK_H
- #define ESPLINK_H 1
- #include <stdlib.h>
- #include <stdbool.h>
- #include <inttypes.h>
- #define ESPLINK_HDR_ADDR ((const uint32_t *)0x40000000)
- struct esplink_ringbuf_desc {
- struct esplink_ringbuf {
- void *start;
- size_t size;
- } dstr, ustr;
- };
- struct esplink_ptrs_ustr {
- size_t head;
- size_t tail;
- };
- struct esplink_ptrs_dstr {
- size_t tail;
- size_t head;
- };
- struct esplink_timesync {
- struct esplink_timesync_buf {
- uint16_t update;
- uint16_t tick;
- union {
- struct {
- unsigned int sec2 : 5;
- unsigned int min : 6;
- unsigned int hour : 5;
- unsigned int mday : 5;
- unsigned int mon : 4;
- unsigned int year : 7;
- } tm;
- uint32_t td;
- };
- } get, set;
- };
- struct esplink_ota {
- const void *data;
- uint32_t len;
- };
- #define ESPLINK_HEAD_MAGIC 0x3648dec4
- #define MAX_SIGNATURE_LEN 64
- struct esplink_head {
- volatile uint32_t magic;
- uint32_t hlen;
- struct {
- union {
- uint32_t cfg;
- struct {
- uint8_t fixes;
- uint8_t minor;
- uint8_t major;
- uint8_t fpga;
- };
- };
- } board;
- volatile struct esplink_timesync *tsync;
- volatile struct esplink_ota *ota;
- struct esplink_ringbuf_head {
- uint32_t count;
- struct esplink_ringbuf_desc *desc;
- struct esplink_ptrs_dstr *dstr;
- struct esplink_ptrs_ustr *ustr;
- } rb;
- char signature[MAX_SIGNATURE_LEN];
- const void *board_info;
- };
- #define EL_DIRQ_UNDERRUN 0
- #define EL_DIRQ_HELLO 1
- #define EL_DIRQ_RINGBUF 2
- #define EL_DIRQ_TIME 3
- #define EL_DIRQ_DONE 4
- #define EL_DIRQ_BOARDINFO 5
- #define EL_UIRQ_WREN 0
- #define EL_UIRQ_READY 1
- #define EL_UIRQ_RINGBUF 2
- #define EL_UIRQ_TIME 3
- #define EL_UIRQ_OTA 4
- enum esplink_ringbuf_user {
- EL_RB_CONFIG,
- EL_RB_COUNT
- };
- #endif
|