# BabyOS_Protocol
**Repository Path**: notrynohigh/BabyOS_Protocol
## Basic Information
- **Project Name**: BabyOS_Protocol
- **Description**: 使用QTCreate编写的上位机,配合BabyOS的通用协议b_protocol使用
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: master
- **Homepage**: https://gitee.com/notrynohigh/BabyOS
- **GVP Project**: No
## Statistics
- **Stars**: 21
- **Forks**: 12
- **Created**: 2020-03-15
- **Last Updated**: 2025-06-04
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# BabyOS_Protocol
使用QTCreate编写的上位机,配合BabyOS的通用协议b_mod_protocol使用。上位机协议格式配置如下:
| 头部 | ID | 长度 | 指令 | 参数 | 校验 |
| ----- | ------ | ------ | ----- | -------- | ----- |
| 1Byte | 4Bytes | 2Bytes | 1Byte | 0~nBytes | 1Byte |
`上位机的设备ID为 0x1314`
# 1 通用指令
## 1.1 测试指令(0x1)
| 指令 | 参数(7Bytes) |
| ---- | ------------ |
| 0x1 | "BabyOS" |
---
## 1.2 设置时间指令 (0x2)
| 指令 | 参数(4Bytes) |
| ---- | ------------ |
| 0x2 | UTC |
---
## 1.3 通知新固件信息 (0x3)
触发OTA
`(上位机==>设备)`
| 指令 | 参数(72Bytes) |
| ---- | ------------ |
| 0x3 | 文件大小(4Bytes) CRC32校验值(4Bytes) 固件名(64Bytes)|
`固件名长度不足64字节时,补0`
```c
typedef struct
{
uint32_t size;
uint32_t crc32;
char filename[64];
}fwinfo_t;
```
`(设备==>上位机)`
| 指令 | 参数(0) |
| ---- | ------------ |
| 0x3 | 无参数 |
---
## 1.4 请求分包数据指令 (0x4)
`(设备==>上位机)`
| 指令 | 参数(2Bytes) |
| ---- | ------------ |
| 0x4 | 分包序号(2Bytes)|
`分包序号从0开始`
`(上位机==>设备)`
| 指令 | 参数(514Bytes) |
| ---- | ------------ |
| 0x4 | 分包序号(2Bytes) 数据长度(512Bytes)|
`剩余长度不足512字节时,补0`
---
## 1.5 上报升级/传输文件结果指令 (0x5)
`(设备==>上位机)`
| 指令 | 参数(1Bytes) |
| ---- | ------------ |
| 0x5 | 升级结果(1Bytes)|
`校验成功:0`
`校验失败:1`
`固件名不匹配:2`
`文件长度不合理:3`
`超时:4`
`(上位机==>设备)`
| 指令 | 参数(0Bytes) |
| ---- | ------------ |
| 0x5 | 无参数|
---
## 1.6 传输文件至FLASH (0x6)
`(上位机==>设备)`
| 指令 | 参数(16Bytes) |
| ---- | ------------------------------------------------------------ |
| 0x6 | 文件大小(4Bytes) CRC32校验值(4Bytes) 设备号(4Bytes)偏移地址(4Bytes) |
```c
typedef struct
{
uint32_t size;
uint32_t crc32;
uint32_t dev_no;
uint32_t offset;
}file_trans_t;
```
通过指令4获取文件数据。
## 1.7 获取UID (0x7)
`(上位机==>设备)`
| 指令 | 参数(0Bytes) |
| ---- | ------------ |
| 0x7 | 无参数 |
`(设备=回复=>上位机)`
| 指令 | UID长度(1Bytes) | UID(nBytes) |
| ---- | --------------- | ----------- |
| 0x7 | | UID内容 |
## 1.8 写入SN (0x8)
`(上位机==>设备)`
| 指令 | SN长度(1Bytes) | SN内容(nBytes) |
| ---- | -------------- | -------------- |
| 0x8 | | |
`(设备=回复=>上位机)`
| 指令 | 无参数 |
| ---- | ------ |
| 0x8 | |
## 1.9 物模型方法调用 (0x9)
`(上位机==>设备)`
| 指令 | 参数 |
| ---- | ------------ |
| 0x9 | 方法调用内容 |
`(设备=回复=>上位机)`
| 指令 | 无参数 |
| ---- | ------ |
| 0x9 | |
## 1.10 获取设备信息
`(上位机==>设备)`
| 指令 | 无参数 |
| ---- | ------ |
| 0xA | |
`(设备=回复=>上位机)`
| 指令 | 版本 | 型号 |
| ---- | ----------- | ----------- |
| 0xA | 版本(16B) | 型号(16B) |
# 2 网络相关指令
## 2.1 进入配网(0x30)
`(上位机==>设备)`
| 指令 | 参数 |
| ---- | ---- |
| 0x30 | |
参数说明:
```c
struct
{
uint8_t type; // 配网方式 1字节 AP配网(0) BLE配网(1)
uint8_t ssid[32];
uint8_t passwd[64];
};
```
`(设备=回复=>上位机)`
| 指令 | 无参数 |
| ---- | ------ |
| 0x30 | |
## 2.2 获取网络信息(0x31)
`(上位机==>设备)`
| 指令 | 无参数 |
| ---- | ------ |
| 0x31 | |
`(设备=回复=>上位机)`
| 指令 | 参数 |
| ---- | -------- |
| 0x31 | 网络参数 |
参数说明:
```C
struct
{
uint8_t ssid[32]; // 连接的热点名
uint32_t ip;
uint32_t gw;
uint32_t mask
};
```
# 3 语音相关指令
## 3.1 设置语音开关(0x40)
`(上位机==>设备)`
| 指令 | 参数 |
| ---- | ------------- |
| 0x40 | 开关(1Byte) |
`(设备=回复=>上位机)`
| 指令 | 无参数 |
| ---- | ------ |
| 0x40 | |
## 3.2 语音音量设置 (0x41)
`(上位机==>设备)`
| 指令 | 参数 |
| ---- | -------------- |
| 0x41 | 0~100(1Byte) |
`(设备=回复=>上位机)`
| 指令 | 无参数 |
| ---- | ------ |
| 0x41 | |
## 3.3 获取语音音量 (0x42)
`(上位机==>设备)`
| 指令 | 无参数 |
| ---- | ------ |
| 0x42 | |
`(设备=回复=>上位机)`
| 指令 | 参数 |
| ---- | -------------- |
| 0x42 | 0~100(1Byte) |
## 3.4 获取语音状态(0x43)
`(上位机==>设备)`
| 指令 | 无参数 |
| ---- | ------ |
| 0x43 | |
`(设备=回复=>上位机)`
| 指令 | 参数(1Byte) |
| ---- | ------------------------------------- |
| 0x43 | 0:空闲
1:聆听中
2:播放中 |
## 3.4 播放内容 (0x44)
`(设备=>上位机)`
| 指令 | 参数(nByte) |
| ---- | ------------- |
| 0x44 | |
`(上位机==>设备)`
| 指令 | 无参数 |
| ---- | ------ |
| 0x44 | |