LibDriver CH9121
Loading...
Searching...
No Matches
driver_ch9121.h
Go to the documentation of this file.
1
36
37#ifndef DRIVER_CH9121_H
38#define DRIVER_CH9121_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 CH9121_UART_PRE_DELAY
63 #define CH9121_UART_PRE_DELAY 50
64#endif
65
69typedef enum
70{
71 CH9121_PORT1 = 0x00,
72 CH9121_PORT2 = 0x01,
74
78typedef enum
79{
83
92
103
115
119typedef struct ch9121_handle_s
120{
121 uint8_t (*uart_init)(void);
122 uint8_t (*uart_deinit)(void);
123 uint16_t (*uart_read)(uint8_t *buf, uint16_t len);
124 uint8_t (*uart_flush)(void);
125 uint8_t (*uart_write)(uint8_t *buf, uint16_t len);
126 uint8_t (*reset_gpio_init)(void);
127 uint8_t (*reset_gpio_deinit)(void);
128 uint8_t (*reset_gpio_write)(uint8_t data);
129 uint8_t (*cfg_gpio_init)(void);
130 uint8_t (*cfg_gpio_deinit)(void);
131 uint8_t (*cfg_gpio_write)(uint8_t data);
132 void (*delay_ms)(uint32_t ms);
133 void (*debug_print)(const char *const fmt, ...);
134 uint8_t inited;
135 uint8_t buf[128];
137
153
157
164
171#define DRIVER_CH9121_LINK_INIT(HANDLE, STRUCTURE) memset(HANDLE, 0, sizeof(STRUCTURE))
172
179#define DRIVER_CH9121_LINK_UART_INIT(HANDLE, FUC) (HANDLE)->uart_init = FUC
180
187#define DRIVER_CH9121_LINK_UART_DEINIT(HANDLE, FUC) (HANDLE)->uart_deinit = FUC
188
195#define DRIVER_CH9121_LINK_UART_READ(HANDLE, FUC) (HANDLE)->uart_read = FUC
196
203#define DRIVER_CH9121_LINK_UART_WRITE(HANDLE, FUC) (HANDLE)->uart_write = FUC
204
211#define DRIVER_CH9121_LINK_UART_FLUSH(HANDLE, FUC) (HANDLE)->uart_flush = FUC
212
219#define DRIVER_CH9121_LINK_RESET_GPIO_INIT(HANDLE, FUC) (HANDLE)->reset_gpio_init = FUC
220
227#define DRIVER_CH9121_LINK_RESET_GPIO_DEINIT(HANDLE, FUC) (HANDLE)->reset_gpio_deinit = FUC
228
235#define DRIVER_CH9121_LINK_RESET_GPIO_WRITE(HANDLE, FUC) (HANDLE)->reset_gpio_write = FUC
236
243#define DRIVER_CH9121_LINK_CFG_GPIO_INIT(HANDLE, FUC) (HANDLE)->cfg_gpio_init = FUC
244
251#define DRIVER_CH9121_LINK_CFG_GPIO_DEINIT(HANDLE, FUC) (HANDLE)->cfg_gpio_deinit = FUC
252
259#define DRIVER_CH9121_LINK_CFG_GPIO_WRITE(HANDLE, FUC) (HANDLE)->cfg_gpio_write = FUC
260
267#define DRIVER_CH9121_LINK_DELAY_MS(HANDLE, FUC) (HANDLE)->delay_ms = FUC
268
275#define DRIVER_CH9121_LINK_DEBUG_PRINT(HANDLE, FUC) (HANDLE)->debug_print = FUC
276
280
287
296uint8_t ch9121_info(ch9121_info_t *info);
297
311uint8_t ch9121_init(ch9121_handle_t *handle);
312
326uint8_t ch9121_deinit(ch9121_handle_t *handle);
327
340uint8_t ch9121_read(ch9121_handle_t *handle, uint8_t *buf, uint16_t *len);
341
354uint8_t ch9121_write(ch9121_handle_t *handle, uint8_t *buf, uint16_t len);
355
367uint8_t ch9121_get_version(ch9121_handle_t *handle, uint8_t *version);
368
379uint8_t ch9121_reset(ch9121_handle_t *handle);
380
392
404
415uint8_t ch9121_exit(ch9121_handle_t *handle);
416
428uint8_t ch9121_set_dhcp(ch9121_handle_t *handle, ch9121_bool_t enable);
429
441uint8_t ch9121_get_mac(ch9121_handle_t *handle, uint8_t mac[6]);
442
454uint8_t ch9121_set_ip(ch9121_handle_t *handle, uint8_t ip[4]);
455
467uint8_t ch9121_get_ip(ch9121_handle_t *handle, uint8_t ip[4]);
468
480uint8_t ch9121_set_subnet_mask(ch9121_handle_t *handle, uint8_t mask[4]);
481
493uint8_t ch9121_get_subnet_mask(ch9121_handle_t *handle, uint8_t mask[4]);
494
506uint8_t ch9121_set_gateway(ch9121_handle_t *handle, uint8_t ip[4]);
507
519uint8_t ch9121_get_gateway(ch9121_handle_t *handle, uint8_t ip[4]);
520
521
534uint8_t ch9121_get_status(ch9121_handle_t *handle, ch9121_port_t port, ch9121_status_t *status);
535
549
562uint8_t ch9121_get_mode(ch9121_handle_t *handle, ch9121_port_t port, ch9121_mode_t *mode);
563
576uint8_t ch9121_set_source_port(ch9121_handle_t *handle, ch9121_port_t port, uint16_t num);
577
590uint8_t ch9121_get_source_port(ch9121_handle_t *handle, ch9121_port_t port, uint16_t *num);
591
604uint8_t ch9121_set_dest_ip(ch9121_handle_t *handle, ch9121_port_t port, uint8_t ip[4]);
605
618uint8_t ch9121_get_dest_ip(ch9121_handle_t *handle, ch9121_port_t port, uint8_t ip[4]);
619
632uint8_t ch9121_set_dest_port(ch9121_handle_t *handle, ch9121_port_t port, uint16_t num);
633
646uint8_t ch9121_get_dest_port(ch9121_handle_t *handle, ch9121_port_t port, uint16_t *num);
647
660uint8_t ch9121_set_uart_baud(ch9121_handle_t *handle, ch9121_port_t port, uint32_t baud);
661
674uint8_t ch9121_get_uart_baud(ch9121_handle_t *handle, ch9121_port_t port, uint32_t *baud);
675
690uint8_t ch9121_set_uart_config(ch9121_handle_t *handle, ch9121_port_t port, uint8_t data_bit, ch9121_parity_t parity, uint8_t stop_bit);
691
706uint8_t ch9121_get_uart_config(ch9121_handle_t *handle, ch9121_port_t port, uint8_t *data_bit, ch9121_parity_t *parity, uint8_t *stop_bit);
707
720uint8_t ch9121_set_uart_timeout(ch9121_handle_t *handle, ch9121_port_t port, uint8_t timeout);
721
734uint8_t ch9121_get_uart_timeout(ch9121_handle_t *handle, ch9121_port_t port, uint8_t *timeout);
735
747uint8_t ch9121_uart_timeout_convert_to_register(ch9121_handle_t *handle, uint16_t ms, uint8_t *reg);
748
760uint8_t ch9121_uart_timeout_convert_to_data(ch9121_handle_t *handle, uint8_t reg, uint16_t *ms);
761
775
788uint8_t ch9121_set_uart_buffer_length(ch9121_handle_t *handle, ch9121_port_t port, uint32_t len);
789
803
815uint8_t ch9121_set_port2(ch9121_handle_t *handle, ch9121_bool_t enable);
816
829
841uint8_t ch9121_set_domain(ch9121_handle_t *handle, char *domain);
842
846
853
870uint8_t ch9121_set_command(ch9121_handle_t *handle,
871 uint8_t *param, uint16_t len,
872 uint8_t *out, uint16_t out_len,
873 uint16_t pre_delay, uint16_t timeout);
874
878
882
883#ifdef __cplusplus
884}
885#endif
886
887#endif
ch9121_parity_t
ch9121 parity enumeration definition
ch9121_bool_t
ch9121 bool enumeration definition
uint8_t ch9121_get_ip(ch9121_handle_t *handle, uint8_t ip[4])
get ip address
uint8_t ch9121_init(ch9121_handle_t *handle)
initialize the chip
ch9121_mode_t
ch9121 mode enumeration definition
uint8_t ch9121_set_uart_baud(ch9121_handle_t *handle, ch9121_port_t port, uint32_t baud)
set uart baud
uint8_t ch9121_set_dhcp(ch9121_handle_t *handle, ch9121_bool_t enable)
enable or disable dhcp
uint8_t ch9121_info(ch9121_info_t *info)
get chip's information
uint8_t ch9121_set_ip(ch9121_handle_t *handle, uint8_t ip[4])
set ip address
uint8_t ch9121_get_gateway(ch9121_handle_t *handle, uint8_t ip[4])
get gateway
uint8_t ch9121_config_and_reset(ch9121_handle_t *handle)
config and reset the chip
uint8_t ch9121_set_disconnect_with_no_rj45(ch9121_handle_t *handle, ch9121_bool_t enable)
enable or disable disconnect with no rj45
uint8_t ch9121_set_uart_flush(ch9121_handle_t *handle, ch9121_port_t port, ch9121_bool_t enable)
enable or disable uart auto flush
uint8_t ch9121_deinit(ch9121_handle_t *handle)
close the chip
uint8_t ch9121_read(ch9121_handle_t *handle, uint8_t *buf, uint16_t *len)
read data
uint8_t ch9121_reset(ch9121_handle_t *handle)
reset the chip
uint8_t ch9121_set_source_port_random(ch9121_handle_t *handle, ch9121_port_t port, ch9121_bool_t enable)
enable or disable random source port number
struct ch9121_info_s ch9121_info_t
ch9121 information structure definition
uint8_t ch9121_set_mode(ch9121_handle_t *handle, ch9121_port_t port, ch9121_mode_t mode)
set mode
uint8_t ch9121_get_uart_timeout(ch9121_handle_t *handle, ch9121_port_t port, uint8_t *timeout)
get uart timeout
uint8_t ch9121_uart_timeout_convert_to_data(ch9121_handle_t *handle, uint8_t reg, uint16_t *ms)
convert the register raw data to the offset
struct ch9121_handle_s ch9121_handle_t
ch9121 handle structure definition
uint8_t ch9121_set_dest_ip(ch9121_handle_t *handle, ch9121_port_t port, uint8_t ip[4])
set dest ip
uint8_t ch9121_get_dest_port(ch9121_handle_t *handle, ch9121_port_t port, uint16_t *num)
get dest port
uint8_t ch9121_save_to_eeprom(ch9121_handle_t *handle)
save to eeprom
uint8_t ch9121_get_subnet_mask(ch9121_handle_t *handle, uint8_t mask[4])
get subnet mask
uint8_t ch9121_set_uart_config(ch9121_handle_t *handle, ch9121_port_t port, uint8_t data_bit, ch9121_parity_t parity, uint8_t stop_bit)
set uart config
ch9121_status_t
ch9121 status enumeration definition
uint8_t ch9121_get_dest_ip(ch9121_handle_t *handle, ch9121_port_t port, uint8_t ip[4])
get dest ip
uint8_t ch9121_get_uart_config(ch9121_handle_t *handle, ch9121_port_t port, uint8_t *data_bit, ch9121_parity_t *parity, uint8_t *stop_bit)
get uart config
ch9121_port_t
ch9121 port enumeration definition
uint8_t ch9121_uart_timeout_convert_to_register(ch9121_handle_t *handle, uint16_t ms, uint8_t *reg)
convert the uart timeout to the register raw data
uint8_t ch9121_set_subnet_mask(ch9121_handle_t *handle, uint8_t mask[4])
set subnet mask
uint8_t ch9121_set_domain(ch9121_handle_t *handle, char *domain)
set chip domain
uint8_t ch9121_get_uart_baud(ch9121_handle_t *handle, ch9121_port_t port, uint32_t *baud)
get uart baud
uint8_t ch9121_set_uart_timeout(ch9121_handle_t *handle, ch9121_port_t port, uint8_t timeout)
set uart timeout
uint8_t ch9121_set_gateway(ch9121_handle_t *handle, uint8_t ip[4])
set gateway
uint8_t ch9121_set_source_port(ch9121_handle_t *handle, ch9121_port_t port, uint16_t num)
set source port
uint8_t ch9121_set_port2(ch9121_handle_t *handle, ch9121_bool_t enable)
enable or disable uart port2
uint8_t ch9121_get_version(ch9121_handle_t *handle, uint8_t *version)
get version
uint8_t ch9121_set_dest_port(ch9121_handle_t *handle, ch9121_port_t port, uint16_t num)
set dest port
uint8_t ch9121_exit(ch9121_handle_t *handle)
exit
uint8_t ch9121_get_mode(ch9121_handle_t *handle, ch9121_port_t port, ch9121_mode_t *mode)
get mode
uint8_t ch9121_get_status(ch9121_handle_t *handle, ch9121_port_t port, ch9121_status_t *status)
get status
uint8_t ch9121_get_source_port(ch9121_handle_t *handle, ch9121_port_t port, uint16_t *num)
get source port
uint8_t ch9121_set_uart_buffer_length(ch9121_handle_t *handle, ch9121_port_t port, uint32_t len)
set uart buffer length
uint8_t ch9121_get_mac(ch9121_handle_t *handle, uint8_t mac[6])
get chip mac
uint8_t ch9121_write(ch9121_handle_t *handle, uint8_t *buf, uint16_t len)
write data
@ CH9121_PARITY_EVEN
@ CH9121_PARITY_MARK
@ CH9121_PARITY_ODD
@ CH9121_PARITY_SPACE
@ CH9121_PARITY_NONE
@ CH9121_BOOL_FALSE
@ CH9121_BOOL_TRUE
@ CH9121_MODE_UDP_SERVER
@ CH9121_MODE_TCP_SERVER
@ CH9121_MODE_TCP_CLIENT
@ CH9121_MODE_UDP_CLIENT
@ CH9121_STATUS_CONNECT
@ CH9121_STATUS_DISCONNECT
@ CH9121_PORT2
@ CH9121_PORT1
uint8_t ch9121_set_command(ch9121_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
ch9121 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 buf[128]
uint8_t(* uart_init)(void)
uint8_t(* reset_gpio_write)(uint8_t data)
uint8_t(* cfg_gpio_deinit)(void)
ch9121 information structure definition
float supply_voltage_max_v
uint32_t driver_version
char manufacturer_name[32]
float supply_voltage_min_v
char chip_name[32]