pinebuds/services/communication/comminication_knowles/communication_sysapi.h
2022-08-15 17:20:27 +08:00

92 lines
2.4 KiB
C

#ifndef __COMMUNICATION_SYSAPI_H__
#define __COMMUNICATION_SYSAPI_H__
#ifdef __cplusplus
extern "C" {
#endif
#ifdef _WIN32
#include "stdio.h"
#define TRACE(str, ...) do { printf("%s/" str "\n", __FUNCTION__, __VA_ARGS__); } while (0)
#define ASSERT(cond, str, ...) \
do { if (!(cond)) { printf("[ASSERT]%s/" str, __FUNCTION__, __VA_ARGS__); while (1); } } while (0)
#define TRACE_TIME(num,str, ...) TRACE(num,str, __VA_ARGS__)
int write_sig_data(const unsigned char *data, unsigned int len);
int write_code_data(const unsigned char *data, unsigned int len);
void programmer_main(void);
#else
#include "hal_trace.h"
#include "hal_timer.h"
#define TRACE_TIME(num,str, ...) TRACE(num+1,"[%05u] " str, TICKS_TO_MS(hal_sys_timer_get()), ##__VA_ARGS__)
#endif
#define UART_OUT_SIGNAL_ID 0x19
enum DOWNLOAD_TRANSPORT {
TRANSPORT_USB,
TRANSPORT_UART,
};
enum XFER_TIMEOUT {
XFER_TIMEOUT_SHORT,
XFER_TIMEOUT_MEDIUM,
XFER_TIMEOUT_LONG,
XFER_TIMEOUT_IDLE,
XFER_TIMEOUT_QTY
};
enum UART_DMA_STATE {
UART_DMA_IDLE,
UART_DMA_START,
UART_DMA_DONE,
UART_DMA_ERROR,
};
void init_transport(void);
void deinit_transport(void);
void reinit_transport(void);
void set_send_timeout(uint32_t timeout);
int secure_settings_valid(void);
int secure_boot_enabled(void);
int usb_enabled(void);
int usb_connected(void);
unsigned short get_boot_security_value(void);
unsigned int get_boot_key_index(void);
int send_data(const unsigned char *buf, unsigned int len);
int recv_data(unsigned char *buf, unsigned int len);
int recv_data_dma(unsigned char *buf, unsigned int len, unsigned int expect);
void recv_data_state_get(enum UART_DMA_STATE *state);
void recv_data_reset(void);
int handle_error(void);
int cancel_input(void);
int verify_signature(const unsigned char *key, const unsigned char *sig, const unsigned char *data, unsigned int len);
int debug_read_enabled(void);
int debug_write_enabled(void);
int get_flash_boot_flag(void);
void set_flash_boot_flag(int flag);
void system_reboot(void);
void system_shutdown(void);
void system_flash_boot(void);
void system_set_bootmode(unsigned int bootmode);
void system_clear_bootmode(unsigned int bootmode);
unsigned int system_get_bootmode(void);
void wait_trace_finished(void);
unsigned int get_current_time(void);
uint32_t ama_uart_get_fifo_data(uint8_t *buf);
uint32_t avil_len_of_the_fifo();
void send_message();
#ifdef __cplusplus
}
#endif
#endif