Files
TencentOS-tiny/net/sal_module_wrapper/sal_module_wrapper.c
2020-08-13 17:51:05 +08:00

163 lines
3.8 KiB
C

#include "sal_module_wrapper.h"
static sal_module_t *cur_sal_module = NULL;
static k_list_t sal_module_device_list;
int tos_sal_module_register(sal_module_t *module)
{
if (!module) {
return -1;
}
if (sal_module_device_list.next == NULL || sal_module_device_list.prev == NULL) {\
tos_list_init(&sal_module_device_list);
}
tos_list_add_tail(&module->sal_module_list, &sal_module_device_list);
return 0;
}
int tos_sal_module_unregister(sal_module_t *module)
{
if (!module) {
return -1;
}
tos_list_del(&module->sal_module_list);
return 0;
}
int tos_sal_module_set_status(sal_module_t *module, sal_device_status_t status)
{
if (module) {
module->sal_module_status = status;
return 0;
}
return -1;
}
void tos_sal_module_set_local_ip(sal_module_t *module, char* ip)
{
if (module && ip) {
strncpy(module->sal_module_ip, ip, sizeof(module->sal_module_ip));
}
return;
}
int tos_sal_module_set_default(char *sal_module_device_name)
{
k_list_t *cur = NULL;
sal_module_t *sal_module = NULL;
TOS_LIST_FOR_EACH(cur, &sal_module_device_list) {
sal_module = TOS_LIST_ENTRY(cur, sal_module_t, sal_module_list);
if (sal_module == NULL) {
continue;
}
else {
if (strcmp(sal_module->sal_module_name, sal_module_device_name) == 0) {
// tos_list_del(cur);
// tos_list_add(cur, &sal_module_device_list);
cur_sal_module = sal_module;
return 0;
}
}
}
return -1;
}
int tos_sal_module_get_type(void)
{
if (cur_sal_module) {
return cur_sal_module->sal_module_type;
}
return -1;
}
// int tos_sal_module_init(void)
// {
// if (cur_sal_module && cur_sal_module->init) {
// return cur_sal_module->init();
// }
// return -1;
// }
int tos_sal_module_parse_domain(const char *host_name, char *host_ip, size_t host_ip_len)
{
if (cur_sal_module && cur_sal_module->parse_domain) {
return cur_sal_module->parse_domain(host_name, host_ip, host_ip_len);
}
return -1;
}
int tos_sal_module_connect(const char *ip, const char *port, sal_proto_t proto)
{
if (cur_sal_module && cur_sal_module->connect) {
return cur_sal_module->connect(ip, port, proto);
}
return -1;
}
int tos_sal_module_send(int sock, const void *buf, size_t len)
{
if (cur_sal_module && cur_sal_module->send) {
return cur_sal_module->send(sock, buf, len);
}
return -1;
}
int tos_sal_module_recv(int sock, void *buf, size_t len)
{
if (cur_sal_module && cur_sal_module->recv) {
return cur_sal_module->recv(sock, buf, len);
}
return -1;
}
int tos_sal_module_recv_timeout(int sock, void *buf, size_t len, uint32_t timeout)
{
if (cur_sal_module && cur_sal_module->recv_timeout) {
return cur_sal_module->recv_timeout(sock, buf, len, timeout);
}
return -1;
}
int tos_sal_module_sendto(int sock, char *ip, char *port, const void *buf, size_t len)
{
if (cur_sal_module && cur_sal_module->sendto) {
return cur_sal_module->sendto(sock, ip, port, buf, len);
}
return -1;
}
int tos_sal_module_recvfrom(int sock, void *buf, size_t len)
{
if (cur_sal_module && cur_sal_module->recvfrom) {
return cur_sal_module->recvfrom(sock, buf, len);
}
return -1;
}
int tos_sal_module_recvfrom_timeout(int sock, void *buf, size_t len, uint32_t timeout)
{
if (cur_sal_module && cur_sal_module->recvfrom_timeout) {
return cur_sal_module->recvfrom_timeout(sock, buf, len, timeout);
}
return -1;
}
int tos_sal_module_close(int sock)
{
if (cur_sal_module && cur_sal_module->close) {
return cur_sal_module->close(sock);
}
return -1;
}