Skip to content

Latest commit

 

History

History
157 lines (122 loc) · 6.51 KB

中间件层目录结构解析.md

File metadata and controls

157 lines (122 loc) · 6.51 KB

中间件层目录结构:

zifeng@zifeng-vm:~/sources/othres/aithinker_dev_sdk/adt/adt_os$ tree
.
├── adapter_chip					//适配层,应用开发类原子接口的实现,与具体厂商SDK相关,需要根据厂商SDK进行接口适配
│   ├── chip						//厂商平台
│   │   ├── bl602					//博流bl602芯片平台接口
│   │   │   ├── ble					//ble适配层
│   │   │   │   ├── ai_ble.c
│   │   │   │   └── ai_ble.h
│   │   │   ├── os_port				//freertos适配层接口
│   │   │   ├── peripheral_drive	//外设接口驱动(非特定某个传感器驱动)
│   │   │   │   ├── gpio			//GPIO
│   │   │   │   ├── i2c				//I2C
│   │   │   │   ├── i2s				//I2S
│   │   │   │   ├── pwm				//PWM
│   │   │   │   ├── spi				//SPI
│   │   │   │   ├── uart			//UART
│   │   │   │   └── usb				//USB
│   │   │   ├── protocol			//网络协议接口
│   │   │   │   ├── http			//HTTP
│   │   │   │   ├── mqtt			//MQTT
│   │   │   │   ├── tcp				//TCP
│   │   │   │   └── udp				//UDP
│   │   │   └── wifi				//WiFi适配层接口
│   │   │       ├── ai_wifi.c
│   │   │       └── ai_wifi.h
│   │   └── ln882h					//亮牛ln882h芯片平台接口
│   │       ├── ble					//ble适配层
│   │       │   ├── ai_ble.c
│   │       │   └── ai_ble.h
│   │       ├── os_port				//freertos适配层接口
│   │       ├── peripheral_drive	//外设接口驱动(非特定某个传感器驱动)
│   │       │   ├── gpio
│   │       │   ├── i2c
│   │       │   ├── i2s
│   │       │   ├── pwm
│   │       │   ├── spi
│   │       │   ├── uart
│   │       │   └── usb
│   │       ├── protocol			//网络协议接口
│   │       │   ├── http
│   │       │   ├── mqtt
│   │       │   ├── tcp
│   │       │   └── udp
│   │       └── wifi				//WiFi适配层接口
│   │           ├── ai_wifi.c
│   │           └── ai_wifi.h
│   ├── chip_week_func				//适配层弱函数目录,不能手动编辑,由系统自动生成;非系统工程师请忽略该目录
│   │   ├── chip_week_func.c
│   │   └── chip_week_func.h
│   └── README.md
├── adapter_core					//核心层,用于实现通用的接口、协议、方法,仅可调用adapter_chip内函数实现,不得调用其他任何目录文件/函数
│   ├── at_cmd						//at架构
│   ├── cloud						//云平台通用协议
│   ├── factory						//产测功能
│   │   ├── gpio_test
│   │   └── rf_test
│   ├── log							//调试日志
│   ├── net_connect					//配网方法
│   │   ├── airkiss
│   │   ├── apconfig
│   │   ├── bleconfig
│   │   ├── nfcconfig
│   │   └── smartconfig
│   └── sensor						//传感器驱动
│       ├── audio					//音频
│       │   ├── ac101
│       │   └── es8311
│       ├── camera					//摄像头
│       │   ├── ov2640
│       │   └── ov5640
│       ├── lcd						//显示屏
│       │   ├── ili9341
│       │   └── st7789
│       └── led						//调色灯
│           └── ws2812
├── adapter_include					//中间件接口头文件,由外部应用项目引用
│   └── ai_adapter_include.h
└── README.md

adapter_chip目录:(仅可调用厂商SDK接口实现,不允许调用其它接口)

adapter_chip/chip目录:

存放厂商的适配层接口,适配层接口应具备类原子性,即代码最原始的应用级物理操作,例如打开WiFi、关闭WiFi、配置WiFi,配置GPIO高低电平等,每个厂商的适配层接口是一致的,仅是实现的方法不同。在适配层adapter_chip/chip的头文件,在函数声明时需要增加(week_func)宏定义,在系统编译时会自动生成弱定义函数,更具体可以参考adapter_chip/chip/bl602/ble/ai_ble.h

zifeng@zifeng-vm:~/sources/othres/aithinker_dev_sdk/adt/adt_os/adapter_chip/chip/bl602/ble$ cat ai_ble.h 
#ifndef AI_BLE_H
#define AI_BLE_H

#define week_func			//弱函数宏定义

week_func void ble_func();	//在适配层声明函数时,必须加上week_func宏定义;不然在编译过程会报错

#endif

adapter_chip/chip/bl602/ble示例:

zifeng@zifeng-vm:~/sources/othres/aithinker_dev_sdk/adt/adt_os/adapter_chip/chip/bl602/ble$ tree
.
├── ai_ble.c
└── ai_ble.h


具体内容参考:

zifeng@zifeng-vm:~/sources/othres/aithinker_dev_sdk/adt/adt_os/adapter_chip/chip/bl602/ble$ cat ai_ble.c 
#include "ai_ble.h"

void ble_func()				//原子性接口实现
{
	printf("TODO\r\n");		//具体的方法,调用芯片厂商提供的软件接口实现
}

zifeng@zifeng-vm:~/sources/othres/aithinker_dev_sdk/adt/adt_os/adapter_chip/chip/bl602/ble$ cat ai_ble.h 
#ifndef AI_BLE_H
#define AI_BLE_H

#define week_func

week_func void ble_func();	//声明一个弱函数

#endif

adapter_core目录:(仅可调用适配层adapter_chip目录内接口,不允许调用其它接口)

首先要明确一个概念,

adapter_core 目录与adapter_chip目录在定义上是不一致的,adapter_chip 是用于实现不同芯片厂商类原子性接口的适配,它主要是用于屏蔽不同厂商SDK接口之间的差异。而adapter_core目录是基于adapter_chip目录适配层接口实现的通用方法、常用函数;同理,adapter_core目录仅可调用适配层接口,不允许调用其它任何接口实现。

adapter_include目录:(V1.0版本:头文件需手动添加到ai_adapter_include.h文件进行透出)

用于中间件的接口函数透出,供外部应用层进行调用:#include "ai_adapter_include.h"(例如在main.c入口文件中增加对中间层接口的透出)

更具体可以参考demo应用例程