---
tags: 'Acer'
---
4 Bytes ID - LoRa P2P JOIN Mechanism
====
[TOC]
### Commands
#### JOIN Command: ( Send by Slave )
```
typedef struct
{
UINT8 Ack;
UINT8 payloadType=7;
UINT8 UUID[16];
UINT8 firmwareVersion[3];
UINT8 protocolVersion; // protocolVersion=1
UINT32 meterType;
UINT16 CRC
} STC_P2P_JOIN_PACKAGE;
```
Ack : Always be 0
payloadType: Always be 7
UUID : 16 Bytes UUID
* JOIN Command Response 1: ( Send by Master )
```
#pragma pack(1)
typedef struct
{
UINT32 P2P_ID;
UINT8 payloadType=8;
UINT8 UUID[16];
UINT8 protocolVersion; // protocolVersion=1
UINT8 currentDateTime[6]; // ( YYMMDDHHMMSS in binary )
UINT16 CRC;
} STC_P2P_JOIN_PACKAGE_RESPONSE1;
#pragma pack()
```
After receving the response package from master,
meter should ack the package as follow:
```
#pragma pack(1)
typedef struct
{
UINT32 P2P_ID;
UINT8 payloadType=9;
UINT8 protocolVersion; // protocolVersion=1
UINT16 CRC;
} STC_P2P_JOIN_PACKAGE_RESPONSE2;
#pragma pack()
```
After receving Ack from Meter,
Master will send out the response 2 format as follow:
```
#pragma pack(1)
typedef struct
{
UINT32 P2P_ID;
UINT8 payloadType=10;
UINT8 uplinkHour;
UINT8 uplinkMin;
UINT8 uplinkSec;
UINT8 retryTimes;
UINT16 retryPeriod;
UINT16 timeSlice;
//FLOAT32 dataChannel; // data channel ,Unit: MHz
UINT8 protocolVersion; // protocolVersion=1
UINT32 samplingPeriod; // Unit: Second
UINT32 uplinkPeriod; // Unit: Second
UINT16 samplingShift;
UINT16 CRC;
} STC_P2P_JOIN_PACKAGE_RESPONSE2;
#pragma pack()
```
P2P_ID: the id used in report format ( Always bigger than 0 )
#### Report Command: ( Send by Slave )
```
#pragma pack(1)
typedef struct
{
UINT32 P2P_ID;
UINT8 payloadType=11;
FLOAT64 meterValue;
FLOAT32 batteryVoltage;
FLOAT32 RSSI;
UINT8 recordDate[6]; // YMDHMS
UINT8 protocolVersion; // protocolVersion=1
UINT16 CRC;
} STC_P2P_REPORT_PACKAGE;
pragma pack()
```
P2P_ID: which got from JOIN process
payloadType: Always be 11
meterValue:
batteryVoltage:
RSSI:
* Report Command Ack: ( Send by Master )
```
#pragma pack(1)
typedef struct
{
UINT32 P2P_ID;
UINT8 payloadType=12;
UINT8 currentDateTime[6]; // ( YYMMDDHHMMSS in binary )
UINT8 uplinkHour;
UINT8 uplinkMin;
UINT8 uplinkSec;
UINT8 retryTimes;
UINT16 retryPeriod;
UINT16 timeSlice;
// FLOAT32 dataChannel; // data channel ,Unit: MHz
UINT8 protocolVersion; // protocolVersion=1
UINT32 samplingPeriod; // Unit: Second
UINT32 uplinkPeriod; // Unit: Second
UINT16 samplingShift;
UINT16 CRC;
} STC_P2P_REPORT_PACKAGE_RESPONSE;
#pragma pack()
```
#### Upload Image Command: ( Send by Slave )
```C=
{
UINT32 P2P_ID;
UINT8 commandCode=13;
UINT16 dataLength;
UINT16 batchIndex;
UINT8 protocolVersion; // protocolVersion=1
UINT8 data[18];
UINT16 CRC;
}
```
* Upload Image Response
```C=
{
UINT32 P2P_ID;
UINT8 commandCode=14;
UINT16 dataLength;
UINT16 batchIndex;
UINT8 currentDateTime[6]; // ( YYMMDDHHMMSS in binary )
UINT8 protocolVersion; // protocolVersion=1
UINT16 CRC;
}
```
#### Query Command: ( Send by Slave )
```C=
{
UINT32 P2P_ID=p2pId;
UINT8 commandCode=15;
UINT8 protocolVersion; // protocolVersion=1
UINT16 CRC;
}
```
* Query Command Response
```C=
{
UINT32 P2P_ID;
UINT8 commandCode=16;
UINT8 currentDateTime[6]; // ( YYMMDDHHMMSS in binary )
UINT16 command; // Mask 0x01: upload image
UINT8 imageDate[6]; // The picture took on
UINT16 imageStartBatchIndex;
UINT8 getImageTime[6]; // The time to send out image
UINT16 imageTimeSlice;
UINT8 protocolVersion; // protocolVersion=1
UINT16 CRC;
}
```
* Command:
* 0x01: upload image
* 0x02: upload ROI
* 0x03: download ROI - no used yet.
* 0x04: upload fill-up data
After JOIN / Report / Image action, device should query command.
#### upload ROI Command: ( Send by Slave )
```C=
{
UINT32 P2P_ID;
UINT8 commandCode=17;
FLOAT64 refferenceVolume;
UINT8 digitalNumbers;
UINT32 MeterType;
UINT8 IntegerNo;
UINT8 DecimalNo;
INT16 ROI_Angle;
INT32 Max_Flow;
INT16 imageShift_y;
// UINT8 reserved;
UINT8 protocolVersion; // protocolVersion=1
UINT16 CRC;
}
```
* Upload ROI Response
```C=
{
UINT32 P2P_ID;
UINT8 commandCode=18;
UINT8 protocolVersion; // protocolVersion=1
UINT16 CRC;
}
```
#### upload ROI digitals Command: ( Send by Slave )
```C=
{
UINT32 P2P_ID;
UINT8 commandCode=19;
UINT8 digitalIndex;
UINT16 xLeftTop;
UINT16 yLeftTop;
UINT16 xRightTop;
UINT16 yRightTop;
UINT16 xLeftBottom;
UINT16 yLeftBottom;
UINT16 xRightBottom;
UINT16 yRightBottom;
UINT8 OCRParameters;
UINT8 FontWidth;
UINT8 FontId;
UINT8 RoID;
//UINT8 reserved;
UINT8 protocolVersion; // protocolVersion=1
UINT16 CRC;
}
```
* Upload ROI Response
```C=
{
UINT32 P2P_ID;
UINT8 commandCode=20;
UINT8 protocolVersion; // protocolVersion=1
UINT16 CRC;
}
```
#### Download ROI Command: ( Send by Slave )
```C=
{
UINT32 P2P_ID;
UINT8 commandCode=21;
FLOAT64 refferenceVolume;
UINT8 digitalNumbers;
UINT32 MeterType;
UINT8 IntegerNo;
UINT8 DecimalNo;
INT16 ROI_Angle;
INT32 Max_Flow;
INT16 imageShift_y;
//UINT8 reserved;
UINT8 protocolVersion; // protocolVersion=1
UINT16 CRC;
}
```
* Upload ROI Response
```C=
{
UINT32 P2P_ID;
UINT8 commandCode=22;
UINT8 protocolVersion; // protocolVersion=1
UINT16 CRC;
}
```
#### Download ROI digitals Command: ( Send by Slave )
```C=
{
UINT32 P2P_ID;
UINT8 commandCode=23;
UINT8 digitalIndex;
UINT16 xLeftTop;
UINT16 yLeftTop;
UINT16 xRightTop;
UINT16 yRightTop;
UINT16 xLeftBottom;
UINT16 yLeftBottom;
UINT16 xRightBottom;
UINT16 yRightBottom;
UINT8 OCRParameters;
UINT8 FontWidth;
UINT8 FontId;
UINT8 RoID;
//UINT8 reserved;
UINT8 protocolVersion; // protocolVersion=1
UINT16 CRC;
}
```
* Upload ROI digitals Response
```C=
{
UINT32 P2P_ID;
UINT8 commandCode=24;
UINT8 protocolVersion; // protocolVersion=1
UINT16 CRC;
}
```
#### Upload fill-up data Command: ( Send by Slave )
```C=
{
UINT32 P2P_ID;
UINT8 commandCode=25;
UINT8 protocolVersion; // protocolVersion=1
UINT16 CRC;
}
```
* Upload fill-up data Response
```C=
{
UINT32 P2P_ID;
UINT8 commandCode=26;
UINT8 protocolVersion; // protocolVersion=1
UINT8 date1[4]; // date1[0]==0, if null
UINT8 date2[4]; // date2[0]==0, if null
UINT8 date3[4]; // date3[0]==0, if null
UINT8 date4[4]; // date4[0]==0, if null
UINT8 date5[4]; // date5[0]==0, if null
UINT16 CRC;
}
// date: Year,Month,Day,Hour
```
### Master Mechanism

### Slave Mechanism
