KT24-1110_65E-HA-651B/include_lib/system/config/config_transport.h

94 lines
2.1 KiB
C
Raw Permalink Normal View History

2024-11-10 10:44:17 +00:00
/*********************************************************************************************
* Filename : config_transport.h
* Description : Config Interface
* Author : Bingquan
* Email : bingquan_cai@zh-jieli.com
* Last modifiled : 2019-01-07 14:33
* Copyright:(c)JIELI 2011-2017 @ , All Rights Reserved.
*********************************************************************************************/
#ifndef _CI_TRANSPORT_H
#define _CI_TRANSPORT_H
#include "typedef.h"
/* CI packet types */
typedef struct {
/**
* transport name
*/
const char *name;
/**
* init transport
* @param transport_config
*/
void (*init)(const void *transport_config);
/**
* open transport connection
*/
int (*open)(void);
/**
* close transport connection
*/
int (*close)(void);
/**
* register packet handler for CI packets
*/
void (*register_packet_handler)(void (*handler)(const u8 *packet, int size));
/**
* support async transport layers, e.g. IRQ driven without buffers
*/
int (*can_send_packet_now)(uint8_t packet_type);
/**
* send packet
*/
int (*send_packet)(const u8 *packet, int size);
/**
* extension for UART transport implementations
*/
int (*set_baudrate)(uint32_t baudrate);
} ci_transport_t;
typedef enum {
CI_TRANSPORT_CONFIG_UART,
CI_TRANSPORT_CONFIG_USB,
CI_TRANSPORT_CONFIG_BLE,
} ci_transport_config_type_t;
typedef struct {
ci_transport_config_type_t type;
} ci_transport_config_t;
typedef struct {
ci_transport_config_type_t type; // == CI_TRANSPORT_CONFIG_UART
uint32_t baudrate_init; // initial baud rate
uint32_t baudrate_main; // = 0: same as initial baudrate
int flowcontrol; //
const char *device_name;
} ci_transport_config_uart_t;
typedef struct {
//head
u16 id;
u16 length;
u8 payload[0];
} _GNU_PACKED_ ci_packet_t;
#define CI_FORMAT_HEAD sizeof(ci_packet_t)
const ci_transport_t *ci_transport_uart_instance(void);
#endif