[add] add app level code

This commit is contained in:
robinson
2026-04-18 11:02:40 +08:00
parent a8b7c716f3
commit dcb33f8a99
34 changed files with 1265 additions and 678 deletions

View File

@@ -7,30 +7,30 @@ void can_register_ops(const can_ops_t *ops)
g_can_ops = ops;
}
int can_if_init(void)
int can_if_init(int ch)
{
if (!g_can_ops || !g_can_ops->init)
return -1;
return g_can_ops->init();
return g_can_ops->init(ch);
}
int can_if_send(const can_message_t *msg)
int can_if_send(int ch, const can_message_t *msg)
{
if (!g_can_ops || !g_can_ops->send)
return -1;
return g_can_ops->send(msg);
return g_can_ops->send(ch, msg);
}
int can_if_recv(can_message_t *msg)
int can_if_recv(int ch, can_message_t *msg)
{
if (!g_can_ops || !g_can_ops->recv)
return -1;
return g_can_ops->recv(msg);
return g_can_ops->recv(ch, msg);
}
int can_if_filter_config(uint8_t filter_id, uint32_t id, uint32_t mask)
int can_if_filter_config(int ch, uint8_t filter_id, uint32_t id, uint32_t mask)
{
if (!g_can_ops || !g_can_ops->filter_config)
return -1;
return g_can_ops->filter_config(filter_id, id, mask);
return g_can_ops->filter_config(ch, filter_id, id, mask);
}

View File

@@ -10,19 +10,19 @@ typedef struct {
} can_message_t;
typedef struct {
int (*init)(void);
int (*send)(const can_message_t *msg);
int (*recv)(can_message_t *msg);
int (*filter_config)(uint8_t filter_id, uint32_t id, uint32_t mask);
int (*init)(int ch);
int (*send)(int ch, const can_message_t *msg);
int (*recv)(int ch, can_message_t *msg);
int (*filter_config)(int ch, uint8_t filter_id, uint32_t id, uint32_t mask);
} can_ops_t;
// 注册接口(由 HAL 调用)
void can_register_ops(const can_ops_t *ops);
// 对上层暴露统一 API
int can_if_init(void);
int can_if_send(const can_message_t *msg);
int can_if_recv(can_message_t *msg);
int can_if_filter_config(uint8_t filter_id, uint32_t id, uint32_t mask);
int can_if_init(int ch);
int can_if_send(int ch, const can_message_t *msg);
int can_if_recv(int ch, can_message_t *msg);
int can_if_filter_config(int ch, uint8_t filter_id, uint32_t id, uint32_t mask);
#endif

43
interfaces/i2c/i2c_if.c Normal file
View File

@@ -0,0 +1,43 @@
#include "i2c_if.h"
static const i2c_ops_t *g_i2c_ops = 0;
void i2c_register_ops(const i2c_ops_t *ops)
{
g_i2c_ops = ops;
}
int i2c_if_init(int ch)
{
if (!g_i2c_ops || !g_i2c_ops->init)
return -1;
return g_i2c_ops->init(ch);
}
int i2c_if_mem_write(int ch, uint16_t dev_addr, uint16_t mem_addr, uint16_t mem_add_size, const uint8_t *data, uint16_t size, uint32_t timeout)
{
if (!g_i2c_ops || !g_i2c_ops->mem_write)
return -1;
return g_i2c_ops->mem_write(ch, dev_addr, mem_addr, mem_add_size, data, size, timeout);
}
int i2c_if_mem_read(int ch, uint16_t dev_addr, uint16_t mem_addr, uint16_t mem_add_size, uint8_t *data, uint16_t size, uint32_t timeout)
{
if (!g_i2c_ops || !g_i2c_ops->mem_read)
return -1;
return g_i2c_ops->mem_read(ch, dev_addr, mem_addr, mem_add_size, data, size, timeout);
}
int i2c_if_write(int ch, uint16_t dev_addr, const uint8_t *data, uint16_t size, uint32_t timeout)
{
if (!g_i2c_ops || !g_i2c_ops->write)
return -1;
return g_i2c_ops->write(ch, dev_addr, data, size, timeout);
}
int i2c_if_read(int ch, uint16_t dev_addr, uint8_t *data, uint16_t size, uint32_t timeout)
{
if (!g_i2c_ops || !g_i2c_ops->read)
return -1;
return g_i2c_ops->read(ch, dev_addr, data, size, timeout);
}

31
interfaces/i2c/i2c_if.h Normal file
View File

@@ -0,0 +1,31 @@
#ifndef __I2C_IF_H__
#define __I2C_IF_H__
#ifdef __cplusplus
extern "C" {
#endif
#include <stdint.h>
#include <stddef.h>
typedef struct {
int (*init)(int ch);
int (*mem_write)(int ch, uint16_t dev_addr, uint16_t mem_addr, uint16_t mem_add_size, const uint8_t *data, uint16_t size, uint32_t timeout);
int (*mem_read)(int ch, uint16_t dev_addr, uint16_t mem_addr, uint16_t mem_add_size, uint8_t *data, uint16_t size, uint32_t timeout);
int (*write)(int ch, uint16_t dev_addr, const uint8_t *data, uint16_t size, uint32_t timeout);
int (*read)(int ch, uint16_t dev_addr, uint8_t *data, uint16_t size, uint32_t timeout);
} i2c_ops_t;
void i2c_register_ops(const i2c_ops_t *ops);
int i2c_if_init(int ch);
int i2c_if_mem_write(int ch, uint16_t dev_addr, uint16_t mem_addr, uint16_t mem_add_size, const uint8_t *data, uint16_t size, uint32_t timeout);
int i2c_if_mem_read(int ch, uint16_t dev_addr, uint16_t mem_addr, uint16_t mem_add_size, uint8_t *data, uint16_t size, uint32_t timeout);
int i2c_if_write(int ch, uint16_t dev_addr, const uint8_t *data, uint16_t size, uint32_t timeout);
int i2c_if_read(int ch, uint16_t dev_addr, uint8_t *data, uint16_t size, uint32_t timeout);
#ifdef __cplusplus
}
#endif
#endif