全部文档
OneOS简介 硬件支持 编译构造工具 API参考文档 高级语言 用户编程手册 应用笔记 FAQ

模组连接套件


简介

模组连接套件molink(Module Link Kit)提供了OneOS组件中的基础网络功能:无线网络连接。通过将无线通信模组抽象为mo对象(模组对象),向用户层提供简洁易用的操作接口。同时molink组件设计兼容了通信模组的OpenCPU开发模式,极大提升了用户程序的可移植性,应用程序的无线连网功能可在AT模式和OpenCPU模式下无缝切换。后期molink组件将适配数量众多的无线通信模组,这样用户可以根据实际需求,便捷选择模组型号,轻松配置进行切换。


重要定义及数据结构

mo对象

mo_object为module对象的定义,详细成员如下:

typedef struct mo_object
{
    os_slist_node_t list;                      /* module object manage list  */
    char            name[OS_NAME_MAX + 1];     /* module object name */
    at_parser_t     parser;                    /* module object at parser */
    const void     *ops_table[MODULE_OPS_MAX]; /* module object operates table */
} mo_object_t;
重要成员 说明
list 模组对象维护链接
name 模组对象名称
parser 每一个模组对象对应的AT解析器
ops_table 每一个模组对象的函数操作集

mo_ops_type

mo_ops_type定义了mo对象所包含的操作接口集,其详细定义如下:

typedef enum mo_ops_type
{
    MODULE_OPS_NULL = -1,
    MODULE_OPS_GENERAL,
    MODULE_OPS_NETSERV,
    MODULE_OPS_NETCONN,
    MODULE_OPS_ONENET_NB,
    MODULE_OPS_WIFI,
    ......
    MODULE_OPS_MAX,
} mo_ops_type_t;

mo_type

mo_type定义了当前支持的模组型号:

typedef enum mo_type
{
    MODULE_TYPE_NULL = -1,
    MODULE_TYPE_M5310A,
    MODULE_TYPE_M5311,
    MODULE_TYPE_EC200X,
    MODULE_TYPE_ESP8266,
    MODULE_TYPE_ML302,
    ......
    MODULE_TYPE_MAX,
} mo_type_t;

公共API列表

接口 说明
mo_create 创建模组对象
mo_destroy 销毁模组对象
mo_get_by_name 根据名称获取模组对象
mo_get_default 获取默认模组对象
mo_set_default 设置默认模组对象

通用API列表

接口 说明
mo_at_test 测试AT指令
mo_get_imei 获取IMEI
mo_get_imsi 获取IMSI
mo_get_iccid 获取iccid
mo_get_cfun 获取射频模式
mo_set_cfun 设置射频模式
mo_soft_reset 软复位模组

网络服务API列表

接口 说明
mo_set_attach 网络附着或去附着
mo_get_attach 获取网络附着状态
mo_set_reg 设置网络注册参数
mo_get_reg 获取网络注册状态
mo_set_cgact 网络激活或去激活
mo_get_cgact 获取网络激活状态
mo_get_csq 获取信号强度
mo_get_radio 获取无线信息
mo_get_ipaddr 获取IP地址
mo_set_netstat 设置网络状态
mo_get_netstat 获取网络状态
mo_ping PING功能

TCP/IP API列表

接口 说明
mo_netconn_create netconn对象创建
mo_netconn_destroy netconn对象销毁
mo_netconn_connect 发起连接
mo_netconn_send 发送网络数据
mo_netconn_recv 接收网络数据
mo_netconn_gethostbyname 根据域名获取IP

Wi-Fi API列表

接口 说明
mo_wifi_set_mode 设置WiFi模式
mo_wifi_get_mode 获取WiFi模式
mo_wifi_get_stat 获取WiFi对象状态
mo_wifi_scan_info 获取可用AP的信息
mo_wifi_scan_info_free 清除获取到的AP信息
mo_wifi_connect_ap 连接到AP

Onenet NB-IoT Kit API列表

接口 说明
mo_onenetnb_create 创建一个OneNET设备实例
mo_onenetnb_createex 创建一个OneNET设备实例
mo_onenetnb_addobj 添加object以及所属的instance
mo_onenetnb_discoverrsp 设置指定object 的所需资源列表
mo_onenetnb_nmi 设置模组通知终端的模式
mo_onenetnb_open 向平台发起注册
mo_onenetnb_notify 向平台上报指定资源的数据
mo_onenetnb_update 向平台发起更新
mo_onenetnb_get_write 获取未被读取的平台下发写操作
mo_onenetnb_writersp 向平台返回写操作的结果

mo_create

该函数用于创建模组对象,其函数原型如下:

mo_object_t *mo_create(const char  *name, 
                       mo_type_t    type, 
                       os_device_t *device, 
                       os_size_t    recv_len);
参数 说明
name 模组名称
type 模组型号
device 模组对应的设备对象
recv_len 设置AT解析器接收长度
返回 说明
OS_NULL 创建失败
非OS_NULL 模组对象指针

mo_destroy

该函数用于销毁模组对象,其函数原型如下:

os_err_t mo_destroy(mo_object_t *self, mo_type_t type);
参数 说明
self 模组对象
type 支持的模组型号
返回 说明
OS_EOK 成功

mo_get_by_name

该函数用于根据名称获取模组对象,函数原型如下:

mo_object_t *mo_get_by_name(const char *name);
参数 说明
name 模组对象名称
返回 说明
OS_NULL 获取失败
非OS_NULL 模组对象指针

mo_get_default

该函数用于获取默认模组对象,函数原型如下:

mo_object_t *mo_get_default(void);
参数 说明
返回 说明
OS_NULL 获取失败
非OS_NULL 默认模组对象指针

mo_set_defaults

该函数用于设置默认模组对象,其函数原型如下:

void mo_set_default(mo_object_t *self);
参数 说明
self 模组对象
返回 说明

模组支持情况

模组 mo_at_test mo_get_imei mo_get_imsi mo_get_iccid mo_get_cfun mo_set_cfun mo_soft_reset
ML302
EC200X
ESP8266
M5310A
M5311

mo_at_test

该函数用于发送AT,其函数原型如下:

os_err_t mo_at_test(mo_object_t *self);
参数 说明
self 模组对象
返回 说明
OS_EOK 成功
非OS_EOK 失败

mo_get_imei

该函数用于获取IMEI,该函数原型如下:

os_err_t mo_get_imei(mo_object_t *self, char *value, os_size_t len);
参数 说明
self 模组对象
value 存储IMEI的buf
len 存储IMEI的buf长度
返回 说明
OS_EOK 成功
非OS_EOK 失败

mo_get_imsi

该函数用于获取IMSI,其函数原型如下:

os_err_t mo_get_imsi(mo_object_t *self, char *value, os_size_t len);
参数 说明
self 模组对象
value 存储IMSI的buf
len 存储IMSI的buf长度
返回 说明
OS_EOK 成功
非OS_EOK 失败

mo_get_iccid

该函数用于获取ICCID,其函数原型如下:

os_err_t mo_get_iccid(mo_object_t *self, char *value, os_size_t len);
参数 说明
self 模组对象
value 存储ICCID的buf
len 存储ICCID的buf长度
返回 说明
OS_EOK 成功
非OS_EOK 失败

mo_get_cfun

该函数用于获取射频模式,其函数原型如下:

os_err_t mo_get_cfun(mo_object_t *self, os_uint8_t *fun_lvl);
参数 说明
self 模组对象
fun_lvl 存储射频模式的指针
返回 说明
OS_EOK 成功
非OS_EOK 失败

mo_set_cfun

该函数用于设置射频模式,其函数原型如下:

os_err_t mo_set_cfun(mo_object_t *self, os_uint8_t fun_lvl);
参数 说明
self 模组对象
fun_lvl 射频模式
返回 说明
OS_EOK 成功
非OS_EOK 失败

mo_soft_reset

该函数用于软复位模组,其函数原型如下:

os_err_t mo_soft_reset(mo_object_t *self);
参数 说明
self 模组对象
返回 说明
OS_EOK 成功
非OS_EOK 失败

Molink网络服务API

模组支持情况

模组 mo_set_attach mo_get_attach mo_set_reg mo_get_reg mo_set_cgact mo_get_cgact mo_get_csq mo_get_radio mo_get_ipaddr mo_set_netstat mo_get_netstat mo_ping
ML302
EC200X
ESP8266
M5310A
M5311

mo_set_attach

该函数用于附着或去附着,其函数原型如下:

os_err_t mo_set_attach(mo_object_t *self, os_uint8_t attach_stat);
参数 说明
self 模组对象
attach_stat 欲设置附着状态
返回 说明
OS_EOK 成功
非OS_EOK 失败

mo_get_attach

该函数用于获取附着状态,其函数原型如下:

os_err_t mo_get_attach(mo_object_t *self, os_uint8_t *attach_stat);
参数 说明
self 模组对象
attach_stat 存储附着状态的buf
返回 说明
OS_EOK 成功
非OS_EOK 失败

mo_set_reg

该函数用于设置注册参数,其函数原型如下:

os_err_t mo_set_reg(mo_object_t *self, os_uint8_t reg_n);
参数 说明
self 模组对象
reg_n 注册参数
返回 说明
OS_EOK 成功
非OS_EOK 失败

mo_get_reg

该函数用于获取注册状态,其函数原型如下:

os_err_t mo_get_reg(mo_object_t *self, os_uint8_t *reg_n, os_uint8_t *reg_stat);
参数 说明
self 模组对象
reg_n 存储注册状态的buf
reg_stat 存储网络状态的buf
返回 说明
OS_EOK 成功
非OS_EOK 失败

mo_set_cgact

该函数用于激活或去激活,其函数原型如下:

os_err_t mo_set_cgact(mo_object_t *self, os_uint8_t cid, os_uint8_t act_n);
参数 说明
self 模组对象
cid CID参数
act_n 激活参数,0或1
返回 说明
OS_EOK 成功
非OS_EOK 失败

mo_get_cgact

该函数用于获取激活状态,其函数原型如下:

os_err_t mo_get_cgact(mo_object_t *self, os_uint8_t *cid, os_uint8_t *act_stat);
参数 说明
self 模组对象
cid 存储CID参数的buf
act_stat 存储激活参数的buf
返回 说明
OS_EOK 成功
非OS_EOK 失败

mo_get_csq

该函数用于获取信号强度,其函数原型如下:

os_err_t mo_get_csq(mo_object_t *self, os_uint8_t *rssi, os_uint8_t *ber);
参数 说明
self 模组对象
rssi 存储RSSI的buf
act_stat 存储BER的buf
返回 说明
OS_EOK 成功
非OS_EOK 失败

mo_get_radio

该函数用于获取无线信息,其函数原型如下:

os_err_t mo_get_radio(mo_object_t *self, radio_info_t *radio_info);
参数 说明
self 模组对象
radio_info 存储无线信息的buf
返回 说明
OS_EOK 成功
非OS_EOK 失败

mo_get_ipaddr

该函数用于获取ip地址,其函数原型如下:

os_err_t mo_get_ipaddr(mo_object_t *self, char ip[]);
参数 说明
self 模组对象
ip 存储IP的buf
返回 说明
OS_EOK 成功
非OS_EOK 失败

mo_set_netstat

该函数用于设置网络信息,其函数原型如下:

os_err_t mo_set_netstat(mo_object_t *self, os_uint8_t stat);
参数 说明
self 模组对象
stat 欲设置网络状态
返回 说明
OS_EOK 成功
非OS_EOK 失败

mo_get_netstat

该函数用于获取网络信息,其函数原型如下:

os_err_t mo_get_netstat(mo_object_t *self, os_uint8_t *stat);
参数 说明
self 模组对象
stat 存储网络状态的buf
返回 说明
OS_EOK 成功
非OS_EOK 失败

mo_ping

该函数用于实现ping命令,其函数原型如下:

os_err_t mo_ping(mo_object_t      *self, 
                 const char       *host, 
                 os_uint16_t       len, 
                 os_uint16_t       timeout, 
                 struct ping_resp *resp);
参数 说明
self 模组对象
host 域名
len ping包长度
stat ping超时时长
resp ping响应消息体
返回 说明
OS_EOK 成功
非OS_EOK 失败

mo_netconn_create

该函数用于创建netconn对象,其函数原型如下:

mo_netconn_t *mo_netconn_create(mo_object_t *module, 
                                mo_netconn_type_t type);
参数 说明
module 模组对象
type 连接类型
返回 说明
mo_netconn_t netconn对象

mo_netconn_destroy

该函数用于销毁netconn对象,其函数原型如下:

os_err_t mo_netconn_destroy(mo_object_t *module, mo_netconn_t *netconn);
参数 说明
module 模组对象
netconn netconn对象
返回 说明
OS_EOK 成功
非OS_EOK 失败

mo_netconn_connect

该函数用于发起网络连接,其函数原型如下:

os_err_t mo_netconn_connect(mo_object_t *module, 
                            mo_netconn_t *netconn, 
                            ip_addr_t addr, 
                            os_uint16_t port);
参数 说明
module 模组对象
netconn netconn对象
addr 服务器地址
port 端口号
返回 说明
OS_EOK 成功
非OS_EOK 失败

mo_netconn_send

该函数用于发送数据报文,其函数原型如下:

os_size_t mo_netconn_send(mo_object_t *module, 
                          mo_netconn_t *netconn, 
                          const char *data, 
                          os_size_t size);
参数 说明
module 模组对象
netconn netconn对象
data 要发送的数据
size 数据长度
返回 说明
os_size_t 实际发送的数据长度

mo_netconn_recv

该函数用于接收数据报文,其函数原型如下:

os_err_t mo_netconn_recv(mo_object_t  *module,
                         mo_netconn_t *netconn,
                         void        **data,
                         os_size_t    *size,
                         os_tick_t     timeout);
参数 说明
module 响应消息体指针
netconn netconn对象
data 存放数据buf
size 接收数据长度
timeout 接收超时时长
返回 说明
OS_EOK 成功
非OS_EOK 失败

mo_netconn_gethostbyname

该函数用于根据域名获取对应的ip地址,其函数原型如下:

os_err_t mo_netconn_gethostbyname(mo_object_t *self, 
                                  const char  *domain_name, 
                                  ip_addr_t   *addr);
参数 说明
self 模组对象
domain_name 域名
addr 存储IP地址的buf
返回 说明
OS_EOK 成功
非OS_EOK 失败

模组支持情况

模组 mo_wifi_set_mode mo_wifi_get_mode mo_wifi_get_stat mo_wifi_scan_info mo_wifi_scan_info_free mo_wifi_connect_ap
ESP8266

mo_wifi_set_mode

该函数用于设置wifi工作模式,其函数原型如下:

os_err_t mo_wifi_set_mode(mo_object_t *module, mo_wifi_mode_t mode);
参数 说明
module 模组对象
mode 工作模式
返回 说明
OS_EOK 成功
非OS_EOK 失败

备注:ESP8266 目前仅支持设置为STA模式

mo_wifi_get_mode

该函数用于获取wifi工作模式,其函数原型如下:

mo_wifi_mode_t mo_wifi_get_mode(mo_object_t *module);
参数 说明
module 模组对象
返回 说明
MO_WIFI_MODE_NULL 获取失败
非MO_WIFI_MODE_NULL 获取成功,返回当前工作模式

mo_wifi_get_stat

该函数用于获取wifi模组状态,其函数原型如下:

mo_wifi_stat_t mo_wifi_get_stat(mo_object_t *module);
参数 说明
module 模组对象
返回 说明
MO_WIFI_STAT_NULL 获取失败
MO_WIFI_STAT_NULL 获取成功,返回当前状态

mo_wifi_scan_info

该函数用于扫描获取AP信息,其函数原型如下:

os_err_t mo_wifi_scan_info(mo_object_t *module, char *ssid, mo_wifi_scan_result_t *scan_result);
参数 说明
module 模组对象
ssid 指定扫描的ssid名称,若为空则尽可能扫描所有AP
scan_result 保存扫描结果的结构体指针
返回 说明
OS_EOK 成功
非OS_EOK 失败

调用此函数接口时应尽可能增大串口、AT解析器、AT响应缓冲区大小以防止出现错误

mo_wifi_scan_info_free

该函数清除扫描获取到的AP信息

void mo_wifi_scan_info_free(mo_wifi_scan_result_t *scan_result);
参数 说明
scan_result 保存扫描结果的结构体指针

mo_wifi_connect_ap

该函数用于连接到指定的AP,其函数原型如下:

os_err_t mo_wifi_connect_ap(mo_object_t *module, const char *ssid, const char *password);
参数 说明
module 模组对象
ssid 目标AP的ssid非空字符串
password 目标AP的密码
返回 说明
OS_EOK 成功
非OS_EOK 失败

模组支持情况

模组 mo_onenetnb_create mo_onenetnb_createex mo_onenetnb_addobj mo_onenetnb_discoverrsp mo_onenetnb_nmi mo_onenetnb_open mo_onenetnb_notify mo_onenetnb_update mo_onenetnb_get_write mo_onenetnb_writersp mo_onenetnb_all
M5310A
M5311

mo_onenetnb_create

该函数用于创建一个OneNET设备实例,其函数原型如下:

os_err_t mo_onenetnb_create(mo_object_t *self, 
                            os_int32_t timeout, 
                            void        *resp, 
                            const char  *format, 
                            ...);
参数 说明
self 模组对象
timeout 接口调用超时时间
resp 设备实例
format 格式字符串
返回 说明
OS_EOK 成功
非OS_EOK 失败

mo_onenetnb_createex

该函数用于创建一个OneNET设备实例,其函数原型如下:

os_err_t mo_onenetnb_createex(mo_object_t *self, 
                              os_int32_t timeout, 
                              void        *resp, 
                              const char  *format, 
                              ...);
参数 说明
self 模组对象
timeout 接口调用超时时间
resp 设备实例
format 格式字符串
返回 说明
OS_EOK 成功
非OS_EOK 失败

mo_onenetnb_addobj

该函数用于添加object以及所属的instance,其函数原型如下:

os_err_t mo_onenetnb_addobj(mo_object_t *self, 
                            os_int32_t timeout, 
                            void        *resp, 
                            const char  *format, 
                            ...);
参数 说明
self 模组对象
timeout 接口调用超时时间
resp 保留字段
format 格式字符串
返回 说明
OS_EOK 成功
非OS_EOK 失败

mo_onenetnb_discoverrsp

该函数用于设置指定object 的所需资源列表,其函数原型如下:

os_err_t mo_onenetnb_discoverrsp(mo_object_t *self, 
                                 os_int32_t timeout, 
                                 void        *resp, 
                                 const char  *format, 
                                 ...);
参数 说明
self 模组对象
timeout 接口调用超时时间
resp 保留字段
format 格式字符串
返回 说明
OS_EOK 成功
非OS_EOK 失败

mo_onenetnb_nmi

该函数用于设置模组通知终端的模式,其函数原型如下:

os_err_t mo_onenetnb_nmi(mo_object_t *self,
                         os_int32_t timeout, 
                         void        *resp, 
                         const char  *format, 
                         ...);
参数 说明
self 模组对象
timeout 接口调用超时时间
resp 保留字段
format 格式字符串
返回 说明
OS_EOK 成功
非OS_EOK 失败

mo_onenetnb_open

该函数用于向平台发起注册,其函数原型如下:

os_err_t mo_onenetnb_open(mo_object_t *self, 
                          os_int32_t timeout, 
                          void        *resp, 
                          const char  *format, 
                          ...);
参数 说明
self 模组对象
timeout 接口调用超时时间
resp 保留字段
format 格式字符串
返回 说明
OS_EOK 成功
非OS_EOK 失败

mo_onenetnb_notify

该函数用于向平台上报指定资源的数据,其函数原型如下:

os_err_t mo_onenetnb_notify(mo_object_t *self, 
                            os_int32_t timeout, 
                            void        *resp, 
                            const char  *format, 
                            ...);
参数 说明
self 模组对象
timeout 接口调用超时时间
resp 保留字段
format 格式字符串
返回 说明
OS_EOK 成功
非OS_EOK 失败

mo_onenetnb_update

该函数用于向平台发起更新操作,其函数原型如下:

os_err_t mo_onenetnb_update(mo_object_t *self, 
                            os_int32_t timeout, 
                            void        *resp, 
                            const char  *format, 
                            ...);
参数 说明
self 模组对象
timeout 接口调用超时时间
resp 保留字段
format 格式字符串
返回 说明
OS_EOK 成功
非OS_EOK 失败

mo_onenetnb_get_write

该函数用于获取未被读取的平台下发写操作,其函数原型如下:

os_err_t mo_onenetnb_get_write(mo_object_t *self, 
                               os_int32_t timeout, 
                               void        *resp, 
                               const char  *format, 
                               ...);
参数 说明
self 模组对象
timeout 接口调用超时时间
resp 响应消息
format 格式字符串
返回 说明
OS_EOK 成功
非OS_EOK 失败

mo_onenetnb_writersp

该函数用于向平台返回写操作的结果,其函数原型如下:

os_err_t mo_onenetnb_writersp(mo_object_t *self, 
                              os_int32_t timeout, 
                              void        *resp, 
                              const char  *format, 
                              ...);
参数 说明
self 模组对象
timeout 接口调用超时时间
resp 保留字段
format 格式字符串
返回 说明
OS_EOK 成功
非OS_EOK 失败

使用示例

参考components\net\molink\module目录下模组适配的使用范例。

results matching ""

    No results matching ""

    返回顶部