LibDriver CH9121X
Loading...
Searching...
No Matches
driver_ch9121x.h
Go to the documentation of this file.
1
36
37#ifndef DRIVER_CH9121X_H
38#define DRIVER_CH9121X_H
39
40#include <stdio.h>
41#include <stdint.h>
42#include <string.h>
43
44#ifdef __cplusplus
45extern "C"{
46#endif
47
53
58
62#ifndef CH9121X_UART_PRE_DELAY
63 #define CH9121X_UART_PRE_DELAY 50
64#endif
65
69typedef enum
70{
74
78typedef enum
79{
83
92
101
114
125
137
141typedef struct ch9121x_handle_s
142{
143 uint8_t (*uart_init)(void);
144 uint8_t (*uart_deinit)(void);
145 uint16_t (*uart_read)(uint8_t *buf, uint16_t len);
146 uint8_t (*uart_flush)(void);
147 uint8_t (*uart_write)(uint8_t *buf, uint16_t len);
148 uint8_t (*reset_gpio_init)(void);
149 uint8_t (*reset_gpio_deinit)(void);
150 uint8_t (*reset_gpio_write)(uint8_t data);
151 uint8_t (*cfg_gpio_init)(void);
152 uint8_t (*cfg_gpio_deinit)(void);
153 uint8_t (*cfg_gpio_write)(uint8_t data);
154 void (*delay_ms)(uint32_t ms);
155 void (*debug_print)(const char *const fmt, ...);
156 uint8_t inited;
157 uint8_t buf[128];
159
175
179
186
193#define DRIVER_CH9121X_LINK_INIT(HANDLE, STRUCTURE) memset(HANDLE, 0, sizeof(STRUCTURE))
194
201#define DRIVER_CH9121X_LINK_UART_INIT(HANDLE, FUC) (HANDLE)->uart_init = FUC
202
209#define DRIVER_CH9121X_LINK_UART_DEINIT(HANDLE, FUC) (HANDLE)->uart_deinit = FUC
210
217#define DRIVER_CH9121X_LINK_UART_READ(HANDLE, FUC) (HANDLE)->uart_read = FUC
218
225#define DRIVER_CH9121X_LINK_UART_WRITE(HANDLE, FUC) (HANDLE)->uart_write = FUC
226
233#define DRIVER_CH9121X_LINK_UART_FLUSH(HANDLE, FUC) (HANDLE)->uart_flush = FUC
234
241#define DRIVER_CH9121X_LINK_RESET_GPIO_INIT(HANDLE, FUC) (HANDLE)->reset_gpio_init = FUC
242
249#define DRIVER_CH9121X_LINK_RESET_GPIO_DEINIT(HANDLE, FUC) (HANDLE)->reset_gpio_deinit = FUC
250
257#define DRIVER_CH9121X_LINK_RESET_GPIO_WRITE(HANDLE, FUC) (HANDLE)->reset_gpio_write = FUC
258
265#define DRIVER_CH9121X_LINK_CFG_GPIO_INIT(HANDLE, FUC) (HANDLE)->cfg_gpio_init = FUC
266
273#define DRIVER_CH9121X_LINK_CFG_GPIO_DEINIT(HANDLE, FUC) (HANDLE)->cfg_gpio_deinit = FUC
274
281#define DRIVER_CH9121X_LINK_CFG_GPIO_WRITE(HANDLE, FUC) (HANDLE)->cfg_gpio_write = FUC
282
289#define DRIVER_CH9121X_LINK_DELAY_MS(HANDLE, FUC) (HANDLE)->delay_ms = FUC
290
297#define DRIVER_CH9121X_LINK_DEBUG_PRINT(HANDLE, FUC) (HANDLE)->debug_print = FUC
298
302
309
318uint8_t ch9121x_info(ch9121x_info_t *info);
319
333uint8_t ch9121x_init(ch9121x_handle_t *handle);
334
348uint8_t ch9121x_deinit(ch9121x_handle_t *handle);
349
362uint8_t ch9121x_read(ch9121x_handle_t *handle, uint8_t *buf, uint16_t *len);
363
376uint8_t ch9121x_write(ch9121x_handle_t *handle, uint8_t *buf, uint16_t len);
377
389uint8_t ch9121x_get_version(ch9121x_handle_t *handle, uint8_t *version);
390
401uint8_t ch9121x_reset(ch9121x_handle_t *handle);
402
414
426
437uint8_t ch9121x_exit(ch9121x_handle_t *handle);
438
450uint8_t ch9121x_set_dhcp(ch9121x_handle_t *handle, ch9121x_bool_t enable);
451
463uint8_t ch9121x_get_dhcp(ch9121x_handle_t *handle, ch9121x_bool_t *enable);
464
476uint8_t ch9121x_set_mac(ch9121x_handle_t *handle, uint8_t mac[6]);
477
489uint8_t ch9121x_get_mac(ch9121x_handle_t *handle, uint8_t mac[6]);
490
501uint8_t ch9121x_clear_mac(ch9121x_handle_t *handle);
502
514uint8_t ch9121x_set_ip(ch9121x_handle_t *handle, uint8_t ip[4]);
515
527uint8_t ch9121x_get_ip(ch9121x_handle_t *handle, uint8_t ip[4]);
528
540uint8_t ch9121x_set_subnet_mask(ch9121x_handle_t *handle, uint8_t mask[4]);
541
553uint8_t ch9121x_get_subnet_mask(ch9121x_handle_t *handle, uint8_t mask[4]);
554
566uint8_t ch9121x_set_gateway(ch9121x_handle_t *handle, uint8_t ip[4]);
567
579uint8_t ch9121x_get_gateway(ch9121x_handle_t *handle, uint8_t ip[4]);
580
594
608
622
635uint8_t ch9121x_set_source_port(ch9121x_handle_t *handle, ch9121x_port_t port, uint16_t num);
636
649uint8_t ch9121x_get_source_port(ch9121x_handle_t *handle, ch9121x_port_t port, uint16_t *num);
650
663uint8_t ch9121x_set_dest_ip(ch9121x_handle_t *handle, ch9121x_port_t port, uint8_t ip[4]);
664
677uint8_t ch9121x_get_dest_ip(ch9121x_handle_t *handle, ch9121x_port_t port, uint8_t ip[4]);
678
691uint8_t ch9121x_set_dest_port(ch9121x_handle_t *handle, ch9121x_port_t port, uint16_t num);
692
705uint8_t ch9121x_get_dest_port(ch9121x_handle_t *handle, ch9121x_port_t port, uint16_t *num);
706
719uint8_t ch9121x_set_uart_baud(ch9121x_handle_t *handle, ch9121x_port_t port, uint32_t baud);
720
733uint8_t ch9121x_get_uart_baud(ch9121x_handle_t *handle, ch9121x_port_t port, uint32_t *baud);
734
749uint8_t ch9121x_set_uart_config(ch9121x_handle_t *handle, ch9121x_port_t port, uint8_t data_bit, ch9121x_parity_t parity, uint8_t stop_bit);
750
765uint8_t ch9121x_get_uart_config(ch9121x_handle_t *handle, ch9121x_port_t port, uint8_t *data_bit, ch9121x_parity_t *parity, uint8_t *stop_bit);
766
779uint8_t ch9121x_set_uart_timeout(ch9121x_handle_t *handle, ch9121x_port_t port, uint8_t timeout);
780
793uint8_t ch9121x_get_uart_timeout(ch9121x_handle_t *handle, ch9121x_port_t port, uint8_t *timeout);
794
806uint8_t ch9121x_uart_timeout_convert_to_register(ch9121x_handle_t *handle, uint16_t ms, uint8_t *reg);
807
819uint8_t ch9121x_uart_timeout_convert_to_data(ch9121x_handle_t *handle, uint8_t reg, uint16_t *ms);
820
834
848
861uint8_t ch9121x_set_uart_buffer_length(ch9121x_handle_t *handle, ch9121x_port_t port, uint32_t len);
862
875uint8_t ch9121x_get_uart_buffer_length(ch9121x_handle_t *handle, ch9121x_port_t port, uint32_t *len);
876
890
904
916uint8_t ch9121x_set_port2(ch9121x_handle_t *handle, ch9121x_bool_t enable);
917
930
943
955uint8_t ch9121x_set_domain(ch9121x_handle_t *handle, char *domain);
956
969
981uint8_t ch9121x_get_eth_cfg(ch9121x_handle_t *handle, ch9121x_bool_t *enable);
982
995
1008
1021
1034uint8_t ch9121x_set_tcp_retry_mode(ch9121x_handle_t *handle, uint8_t t);
1035
1047uint8_t ch9121x_get_tcp_retry_mode(ch9121x_handle_t *handle, uint8_t *t);
1048
1061
1074
1087uint8_t ch9121x_set_arp_retry(ch9121x_handle_t *handle, uint8_t period, uint8_t times);
1088
1100uint8_t ch9121x_tcp_retry_time_convert_to_register(ch9121x_handle_t *handle, uint16_t ms, uint8_t *reg);
1101
1113uint8_t ch9121x_tcp_retry_time_convert_to_data(ch9121x_handle_t *handle, uint8_t reg, uint16_t *ms);
1114
1126uint8_t ch9121x_arp_retry_period_convert_to_register(ch9121x_handle_t *handle, uint16_t ms, uint8_t *reg);
1127
1139uint8_t ch9121x_arp_retry_period_convert_to_data(ch9121x_handle_t *handle, uint8_t reg, uint16_t *ms);
1140
1144
1151
1169 uint8_t *param, uint16_t len,
1170 uint8_t *out, uint16_t out_len,
1171 uint16_t pre_delay, uint16_t timeout);
1172
1176
1180
1181#ifdef __cplusplus
1182}
1183#endif
1184
1185#endif
ch9121x_port_t
ch9121x port enumeration definition
uint8_t ch9121x_set_dest_port(ch9121x_handle_t *handle, ch9121x_port_t port, uint16_t num)
set dest port
uint8_t ch9121x_set_uart_baud(ch9121x_handle_t *handle, ch9121x_port_t port, uint32_t baud)
set uart baud
uint8_t ch9121x_read(ch9121x_handle_t *handle, uint8_t *buf, uint16_t *len)
read data
uint8_t ch9121x_set_dest_ip(ch9121x_handle_t *handle, ch9121x_port_t port, uint8_t ip[4])
set dest ip
uint8_t ch9121x_get_mode(ch9121x_handle_t *handle, ch9121x_port_t port, ch9121x_mode_t *mode)
get mode
uint8_t ch9121x_get_dhcp(ch9121x_handle_t *handle, ch9121x_bool_t *enable)
get dhcp status
uint8_t ch9121x_get_eth_cfg(ch9121x_handle_t *handle, ch9121x_bool_t *enable)
get eth cfg
uint8_t ch9121x_get_dest_port(ch9121x_handle_t *handle, ch9121x_port_t port, uint16_t *num)
get dest port
struct ch9121x_info_s ch9121x_info_t
ch9121x information structure definition
uint8_t ch9121x_get_flow_control(ch9121x_handle_t *handle, ch9121x_bool_t *enable)
get flow control status
uint8_t ch9121x_get_uart_baud(ch9121x_handle_t *handle, ch9121x_port_t port, uint32_t *baud)
get uart baud
uint8_t ch9121x_set_uart_flush(ch9121x_handle_t *handle, ch9121x_port_t port, ch9121x_bool_t enable)
enable or disable uart auto flush
uint8_t ch9121x_get_version(ch9121x_handle_t *handle, uint8_t *version)
get version
uint8_t ch9121x_config_and_reset(ch9121x_handle_t *handle)
config and reset the chip
uint8_t ch9121x_get_source_port_random(ch9121x_handle_t *handle, ch9121x_port_t port, ch9121x_bool_t *enable)
get random source port number status
uint8_t ch9121x_clear_mac(ch9121x_handle_t *handle)
clear mac address
uint8_t ch9121x_set_uart_clock_mode(ch9121x_handle_t *handle, ch9121x_uart_clock_mode_t mode)
set uart clock mode
uint8_t ch9121x_get_uart_config(ch9121x_handle_t *handle, ch9121x_port_t port, uint8_t *data_bit, ch9121x_parity_t *parity, uint8_t *stop_bit)
get uart config
uint8_t ch9121x_set_uart_timeout(ch9121x_handle_t *handle, ch9121x_port_t port, uint8_t timeout)
set uart timeout
uint8_t ch9121x_get_dest_ip(ch9121x_handle_t *handle, ch9121x_port_t port, uint8_t ip[4])
get dest ip
uint8_t ch9121x_get_ip(ch9121x_handle_t *handle, uint8_t ip[4])
get ip address
uint8_t ch9121x_get_uart_buffer_length(ch9121x_handle_t *handle, ch9121x_port_t port, uint32_t *len)
get uart buffer length
ch9121x_phy_status_t
ch9121x phy status enumeration definition
uint8_t ch9121x_get_source_port(ch9121x_handle_t *handle, ch9121x_port_t port, uint16_t *num)
get source port
uint8_t ch9121x_set_mode(ch9121x_handle_t *handle, ch9121x_port_t port, ch9121x_mode_t mode)
set mode
ch9121x_mode_t
ch9121x mode enumeration definition
uint8_t ch9121x_set_subnet_mask(ch9121x_handle_t *handle, uint8_t mask[4])
set subnet mask
uint8_t ch9121x_uart_timeout_convert_to_register(ch9121x_handle_t *handle, uint16_t ms, uint8_t *reg)
convert the uart timeout to the register raw data
uint8_t ch9121x_write(ch9121x_handle_t *handle, uint8_t *buf, uint16_t len)
write data
uint8_t ch9121x_set_port2(ch9121x_handle_t *handle, ch9121x_bool_t enable)
enable or disable uart port2
uint8_t ch9121x_get_uart_flush(ch9121x_handle_t *handle, ch9121x_port_t port, ch9121x_bool_t *enable)
get uart auto flush status
uint8_t ch9121x_info(ch9121x_info_t *info)
get chip's information
uint8_t ch9121x_reset(ch9121x_handle_t *handle)
reset the chip
uint8_t ch9121x_arp_retry_period_convert_to_register(ch9121x_handle_t *handle, uint16_t ms, uint8_t *reg)
convert the arp retry period to the register raw data
uint8_t ch9121x_get_mac(ch9121x_handle_t *handle, uint8_t mac[6])
get chip mac
uint8_t ch9121x_set_source_port(ch9121x_handle_t *handle, ch9121x_port_t port, uint16_t num)
set source port
uint8_t ch9121x_set_tcp_retry_mode(ch9121x_handle_t *handle, uint8_t t)
set tcp retry mode
uint8_t ch9121x_exit(ch9121x_handle_t *handle)
exit
ch9121x_uart_clock_mode_t
ch9121x uart clock mode enumeration definition
uint8_t ch9121x_deinit(ch9121x_handle_t *handle)
close the chip
uint8_t ch9121x_set_dhcp(ch9121x_handle_t *handle, ch9121x_bool_t enable)
enable or disable dhcp
uint8_t ch9121x_arp_retry_period_convert_to_data(ch9121x_handle_t *handle, uint8_t reg, uint16_t *ms)
convert the register raw data to the arp retry period
uint8_t ch9121x_set_eth_cfg(ch9121x_handle_t *handle, ch9121x_bool_t enable)
set eth cfg
uint8_t ch9121x_get_phy_status(ch9121x_handle_t *handle, ch9121x_phy_status_t *status)
get phy status
uint8_t ch9121x_uart_timeout_convert_to_data(ch9121x_handle_t *handle, uint8_t reg, uint16_t *ms)
convert the register raw data to the offset
uint8_t ch9121x_set_disconnect_with_no_rj45(ch9121x_handle_t *handle, ch9121x_bool_t enable)
enable or disable disconnect with no rj45
uint8_t ch9121x_set_ip(ch9121x_handle_t *handle, uint8_t ip[4])
set ip address
ch9121x_bool_t
ch9121x bool enumeration definition
uint8_t ch9121x_tcp_retry_time_convert_to_register(ch9121x_handle_t *handle, uint16_t ms, uint8_t *reg)
convert the tcp retry time to the register raw data
uint8_t ch9121x_tcp_retry_time_convert_to_data(ch9121x_handle_t *handle, uint8_t reg, uint16_t *ms)
convert the register raw data to the tcp retry time
uint8_t ch9121x_set_gateway(ch9121x_handle_t *handle, uint8_t ip[4])
set gateway
ch9121x_status_t
ch9121x status enumeration definition
ch9121x_parity_t
ch9121x parity enumeration definition
uint8_t ch9121x_get_status(ch9121x_handle_t *handle, ch9121x_port_t port, ch9121x_status_t *status)
get status
uint8_t ch9121x_set_mac(ch9121x_handle_t *handle, uint8_t mac[6])
set mac address
uint8_t ch9121x_set_domain(ch9121x_handle_t *handle, char *domain)
set chip domain
uint8_t ch9121x_set_flow_control(ch9121x_handle_t *handle, ch9121x_bool_t enable)
enable or disable flow control
uint8_t ch9121x_get_uart_timeout(ch9121x_handle_t *handle, ch9121x_port_t port, uint8_t *timeout)
get uart timeout
uint8_t ch9121x_get_gateway(ch9121x_handle_t *handle, uint8_t ip[4])
get gateway
uint8_t ch9121x_get_subnet_mask(ch9121x_handle_t *handle, uint8_t mask[4])
get subnet mask
uint8_t ch9121x_get_disconnect_with_no_rj45(ch9121x_handle_t *handle, ch9121x_bool_t *enable)
get disconnect with no rj45 status
uint8_t ch9121x_save_to_eeprom(ch9121x_handle_t *handle)
save to eeprom
uint8_t ch9121x_init(ch9121x_handle_t *handle)
initialize the chip
uint8_t ch9121x_get_tcp_retry_mode(ch9121x_handle_t *handle, uint8_t *t)
get tcp retry mode
uint8_t ch9121x_set_arp_retry(ch9121x_handle_t *handle, uint8_t period, uint8_t times)
set arp retry
struct ch9121x_handle_s ch9121x_handle_t
ch9121x handle structure definition
uint8_t ch9121x_set_source_port_random(ch9121x_handle_t *handle, ch9121x_port_t port, ch9121x_bool_t enable)
enable or disable random source port number
uint8_t ch9121x_get_uart_clock_mode(ch9121x_handle_t *handle, ch9121x_uart_clock_mode_t *mode)
get uart clock mode
uint8_t ch9121x_set_uart_buffer_length(ch9121x_handle_t *handle, ch9121x_port_t port, uint32_t len)
set uart buffer length
uint8_t ch9121x_set_uart_config(ch9121x_handle_t *handle, ch9121x_port_t port, uint8_t data_bit, ch9121x_parity_t parity, uint8_t stop_bit)
set uart config
@ CH9121X_PORT1
@ CH9121X_PORT2
@ CH9121X_PHY_STATUS_UNKNOWN
@ CH9121X_PHY_STATUS_100M_FULL_DUPLEX
@ CH9121X_PHY_STATUS_10M_HALF_DUPLEX
@ CH9121X_PHY_STATUS_DISCONNECTED
@ CH9121X_PHY_STATUS_10M_FULL_DUPLEX
@ CH9121X_PHY_STATUS_100M_HALF_DUPLEX
@ CH9121X_MODE_TCP_CLIENT
@ CH9121X_MODE_UDP_CLIENT
@ CH9121X_MODE_TCP_SERVER
@ CH9121X_MODE_UDP_SERVER
@ CH9121X_UART_CLOCK_MODE_DEFAULT
@ CH9121X_UART_CLOCK_MODE_CLASSICAL
@ CH9121X_BOOL_FALSE
@ CH9121X_BOOL_TRUE
@ CH9121X_STATUS_DISCONNECT
@ CH9121X_STATUS_CONNECT
@ CH9121X_PARITY_EVEN
@ CH9121X_PARITY_MARK
@ CH9121X_PARITY_ODD
@ CH9121X_PARITY_SPACE
@ CH9121X_PARITY_NONE
uint8_t ch9121x_set_command(ch9121x_handle_t *handle, uint8_t *param, uint16_t len, uint8_t *out, uint16_t out_len, uint16_t pre_delay, uint16_t timeout)
set command
ch9121x handle structure definition
uint8_t(* uart_flush)(void)
uint8_t(* cfg_gpio_write)(uint8_t data)
uint8_t(* uart_write)(uint8_t *buf, uint16_t len)
void(* delay_ms)(uint32_t ms)
uint8_t(* cfg_gpio_init)(void)
uint8_t(* uart_deinit)(void)
uint8_t(* reset_gpio_deinit)(void)
void(* debug_print)(const char *const fmt,...)
uint16_t(* uart_read)(uint8_t *buf, uint16_t len)
uint8_t(* reset_gpio_init)(void)
uint8_t(* uart_init)(void)
uint8_t(* reset_gpio_write)(uint8_t data)
uint8_t(* cfg_gpio_deinit)(void)
ch9121x information structure definition
uint32_t driver_version
char manufacturer_name[32]