add codes
This commit is contained in:
parent
c06fa6af06
commit
8703533f5f
@ -172,20 +172,22 @@ dial5G:
|
|||||||
|
|
||||||
void UartStart() {
|
void UartStart() {
|
||||||
zlog_info(zbt, "zigAckrep = %d,zigAckreset = %d,zigReset = %d,errorLed = %d,power = %d", GlobalConfig::GPIO_G.zigAckrep, GlobalConfig::GPIO_G.zigAckreset, GlobalConfig::GPIO_G.zigReset, GlobalConfig::GPIO_G.errorLed, GlobalConfig::GPIO_G.power);
|
zlog_info(zbt, "zigAckrep = %d,zigAckreset = %d,zigReset = %d,errorLed = %d,power = %d", GlobalConfig::GPIO_G.zigAckrep, GlobalConfig::GPIO_G.zigAckreset, GlobalConfig::GPIO_G.zigReset, GlobalConfig::GPIO_G.errorLed, GlobalConfig::GPIO_G.power);
|
||||||
InitGpio(GlobalConfig::GPIO_G.zigAckrep, 0); // ACK
|
// InitGpio(GlobalConfig::GPIO_G.zigAckrep, 0); // ACK
|
||||||
InitGpio(GlobalConfig::GPIO_G.zigAckreset, 1); // ACK reset
|
// InitGpio(GlobalConfig::GPIO_G.zigAckreset, 1); // ACK reset
|
||||||
InitGpio(GlobalConfig::GPIO_G.zigReset, 1); // Zigbee reset
|
// InitGpio(GlobalConfig::GPIO_G.zigReset, 1); // Zigbee reset
|
||||||
gpio_set(GlobalConfig::GPIO_G.zigAckreset, 1);
|
// gpio_set(GlobalConfig::GPIO_G.zigAckreset, 1);
|
||||||
gpio_set(GlobalConfig::GPIO_G.zigReset, 1);
|
// gpio_set(GlobalConfig::GPIO_G.zigReset, 1);
|
||||||
zlog_info(zbt, "GPIO Init");
|
zlog_info(zbt, "GPIO Init");
|
||||||
|
|
||||||
InitGpio(GlobalConfig::GPIO_G.runLed, 1);
|
// InitGpio(GlobalConfig::GPIO_G.runLed, 1);
|
||||||
InitGpio(GlobalConfig::GPIO_G.errorLed, 1);
|
// InitGpio(GlobalConfig::GPIO_G.errorLed, 1);
|
||||||
gpio_set(GlobalConfig::GPIO_G.runLed, 1);
|
// gpio_set(GlobalConfig::GPIO_G.runLed, 1);
|
||||||
gpio_set(GlobalConfig::GPIO_G.errorLed, 0);
|
// gpio_set(GlobalConfig::GPIO_G.errorLed, 0);
|
||||||
InitGpio(GlobalConfig::GPIO_G.netResetNet0, 1);
|
// InitGpio(GlobalConfig::GPIO_G.netResetNet0, 1);
|
||||||
gpio_set(GlobalConfig::GPIO_G.netResetNet0, 0);
|
// gpio_set(GlobalConfig::GPIO_G.netResetNet0, 0);
|
||||||
|
|
||||||
|
uart_inst::instance().resetZigbee();
|
||||||
|
sleep(1);
|
||||||
GlobalConfig::Zigbee_G.Serial_Rate = 0x07;
|
GlobalConfig::Zigbee_G.Serial_Rate = 0x07;
|
||||||
GlobalConfig::Zigbee_G.Serial_DataB = 0x08;
|
GlobalConfig::Zigbee_G.Serial_DataB = 0x08;
|
||||||
GlobalConfig::Zigbee_G.Serial_StopB = 0x01;
|
GlobalConfig::Zigbee_G.Serial_StopB = 0x01;
|
||||||
|
|||||||
@ -38,7 +38,7 @@ int Uart::UartRecv(int fd, char srcshow, char *buffer) {
|
|||||||
int timeoutflag = 0;
|
int timeoutflag = 0;
|
||||||
char head[] = {0xAA, 0x55, 0xAA};
|
char head[] = {0xAA, 0x55, 0xAA};
|
||||||
char szbuffer[BUF_LENGTH] = {0x00};
|
char szbuffer[BUF_LENGTH] = {0x00};
|
||||||
while (1) {
|
while (1 && !bUpdate) {
|
||||||
if (now_task == WAVE_CMD) {
|
if (now_task == WAVE_CMD) {
|
||||||
memset(buff, 0, sizeof(buff));
|
memset(buff, 0, sizeof(buff));
|
||||||
ret = read_data(fd, buff, BUF_LENGTH, 10);
|
ret = read_data(fd, buff, BUF_LENGTH, 10);
|
||||||
@ -281,6 +281,23 @@ int Uart::ReadFromUart() {
|
|||||||
return len;
|
return len;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int Uart::ReadFromAlarm(){
|
||||||
|
char buffer[100] = {0x00};
|
||||||
|
int len = read_data(fd, (char *)buffer, 100, 10);
|
||||||
|
for (int i = 0; i < len; i++) printf( "%02X ", buffer[i] & 0xFF);
|
||||||
|
zlog_info(zct, "==========ReadFromAlarm========len = %d", len);
|
||||||
|
if (len > 0)
|
||||||
|
{
|
||||||
|
if(buffer[5] == 0x02 && buffer[6] == 0x00){
|
||||||
|
return 0 ;
|
||||||
|
}else{
|
||||||
|
return 1 ;
|
||||||
|
}
|
||||||
|
}else {
|
||||||
|
return 1 ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void Uart::Run() { mIoSev.run(); }
|
void Uart::Run() { mIoSev.run(); }
|
||||||
|
|
||||||
void Uart::Stop() {
|
void Uart::Stop() {
|
||||||
|
|||||||
@ -164,6 +164,7 @@ public:
|
|||||||
void setCallBack(onReceiveUart _callback);
|
void setCallBack(onReceiveUart _callback);
|
||||||
void Run();
|
void Run();
|
||||||
void Stop();
|
void Stop();
|
||||||
|
int ReadFromAlarm();
|
||||||
|
|
||||||
void UpdateZigbeeInfo(const char* pData);
|
void UpdateZigbeeInfo(const char* pData);
|
||||||
int DealAskTaskOld(uint16_t ushortAdd);
|
int DealAskTaskOld(uint16_t ushortAdd);
|
||||||
@ -215,6 +216,8 @@ public:
|
|||||||
void WriteShortAddr_DistAddr2Zigbee(unsigned short pad, unsigned char* pDestShortAddr);
|
void WriteShortAddr_DistAddr2Zigbee(unsigned short pad, unsigned char* pDestShortAddr);
|
||||||
bool CheckCrc(char* pCheckBuff, int No);
|
bool CheckCrc(char* pCheckBuff, int No);
|
||||||
void UpdateZigbeeInfoCtrl();
|
void UpdateZigbeeInfoCtrl();
|
||||||
|
void getGPIOStatus();
|
||||||
|
void resetZigbee();
|
||||||
|
|
||||||
// tranducer parameter config
|
// tranducer parameter config
|
||||||
void UpdateWirelessNode(uint16_t ushortAdd);
|
void UpdateWirelessNode(uint16_t ushortAdd);
|
||||||
|
|||||||
@ -136,9 +136,7 @@ void Uart::WriteChanl2Zigbee(unsigned char pad) {
|
|||||||
GlobalConfig::Zigbee_G.Chan = pad1;
|
GlobalConfig::Zigbee_G.Chan = pad1;
|
||||||
modify_info(tmp, (char *)&GlobalConfig::Zigbee_G);
|
modify_info(tmp, (char *)&GlobalConfig::Zigbee_G);
|
||||||
|
|
||||||
gpio_set(GlobalConfig::GPIO_G.zigReset, 0);
|
//resetZigbee();
|
||||||
mssleep(10000);
|
|
||||||
gpio_set(GlobalConfig::GPIO_G.zigReset, 1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Uart::WritePanId2Zigbee(unsigned short pad) {
|
void Uart::WritePanId2Zigbee(unsigned short pad) {
|
||||||
@ -149,9 +147,7 @@ void Uart::WritePanId2Zigbee(unsigned short pad) {
|
|||||||
GlobalConfig::Zigbee_G.PanID = pad1;
|
GlobalConfig::Zigbee_G.PanID = pad1;
|
||||||
modify_info(tmp, (char *)&GlobalConfig::Zigbee_G);
|
modify_info(tmp, (char *)&GlobalConfig::Zigbee_G);
|
||||||
|
|
||||||
gpio_set(GlobalConfig::GPIO_G.zigReset, 0);
|
//resetZigbee();
|
||||||
mssleep(10000);
|
|
||||||
gpio_set(GlobalConfig::GPIO_G.zigReset, 1);
|
|
||||||
}
|
}
|
||||||
void Uart::WriteSpeed2Zigbee() {
|
void Uart::WriteSpeed2Zigbee() {
|
||||||
GlobalConfig::Zigbee_G.Serial_Rate = 0x07;
|
GlobalConfig::Zigbee_G.Serial_Rate = 0x07;
|
||||||
@ -160,9 +156,7 @@ void Uart::WriteSpeed2Zigbee() {
|
|||||||
unsigned short tmp;
|
unsigned short tmp;
|
||||||
tmp = GlobalConfig::Zigbee_G.MyAddr;
|
tmp = GlobalConfig::Zigbee_G.MyAddr;
|
||||||
modify_info(tmp, (char *)&GlobalConfig::Zigbee_G);
|
modify_info(tmp, (char *)&GlobalConfig::Zigbee_G);
|
||||||
gpio_set(GlobalConfig::GPIO_G.zigReset, 0);
|
//resetZigbee();
|
||||||
mssleep(10000);
|
|
||||||
gpio_set(GlobalConfig::GPIO_G.zigReset, 1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Uart::WriteTranTimeout2Zigbee(unsigned char Time) {
|
void Uart::WriteTranTimeout2Zigbee(unsigned char Time) {
|
||||||
@ -174,9 +168,7 @@ void Uart::WriteTranTimeout2Zigbee(unsigned char Time) {
|
|||||||
GlobalConfig::Zigbee_G.TranTimeout = Time;
|
GlobalConfig::Zigbee_G.TranTimeout = Time;
|
||||||
modify_info(tmp, (char *)&GlobalConfig::Zigbee_G);
|
modify_info(tmp, (char *)&GlobalConfig::Zigbee_G);
|
||||||
|
|
||||||
gpio_set(GlobalConfig::GPIO_G.zigReset, 0);
|
//resetZigbee();
|
||||||
mssleep(10000);
|
|
||||||
gpio_set(GlobalConfig::GPIO_G.zigReset, 1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Uart::WriteShortAddr2Zigbee(unsigned short pad) {
|
void Uart::WriteShortAddr2Zigbee(unsigned short pad) {
|
||||||
@ -187,9 +179,7 @@ void Uart::WriteShortAddr2Zigbee(unsigned short pad) {
|
|||||||
GlobalConfig::Zigbee_G.MyAddr = pad1;
|
GlobalConfig::Zigbee_G.MyAddr = pad1;
|
||||||
modify_info(tmp, (char *)&GlobalConfig::Zigbee_G);
|
modify_info(tmp, (char *)&GlobalConfig::Zigbee_G);
|
||||||
|
|
||||||
gpio_set(GlobalConfig::GPIO_G.zigReset, 0);
|
//resetZigbee();
|
||||||
mssleep(10000);
|
|
||||||
gpio_set(GlobalConfig::GPIO_G.zigReset, 1);
|
|
||||||
sleep(1);
|
sleep(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -208,7 +198,48 @@ void Uart::WriteShortAddr_DistAddr2Zigbee(unsigned short pad, unsigned char *pDe
|
|||||||
GlobalConfig::ZigbeeInfo_G.MyAddr = "9999";
|
GlobalConfig::ZigbeeInfo_G.MyAddr = "9999";
|
||||||
modify_info(tmp, (char *)&GlobalConfig::Zigbee_G);
|
modify_info(tmp, (char *)&GlobalConfig::Zigbee_G);
|
||||||
|
|
||||||
gpio_set(GlobalConfig::GPIO_G.zigReset, 0);
|
//resetZigbee();
|
||||||
mssleep(10000);
|
}
|
||||||
gpio_set(GlobalConfig::GPIO_G.zigReset, 1);
|
|
||||||
|
void Uart::getGPIOStatus()
|
||||||
|
{
|
||||||
|
//A5 5A A5 02 02 02 02 00 00 00
|
||||||
|
char command[12] = {0x00};
|
||||||
|
command[0] = 0xA5;
|
||||||
|
command[1] = 0x5A;
|
||||||
|
command[2] = 0xA5;
|
||||||
|
command[3] = 0x02;
|
||||||
|
command[4] = 0x02;
|
||||||
|
command[5] = 0x02;
|
||||||
|
command[6] = 0x02;
|
||||||
|
command[7] = 0x00;
|
||||||
|
command[8] = 0x00;
|
||||||
|
command[9] = 0x00;
|
||||||
|
unsigned char tmp = 0x00;
|
||||||
|
for (int k = 0; k < 10; k++) {
|
||||||
|
tmp += command[k];
|
||||||
|
}
|
||||||
|
command[10] = tmp;
|
||||||
|
WriteToUart(command, 11);
|
||||||
|
}
|
||||||
|
void Uart::resetZigbee()
|
||||||
|
{
|
||||||
|
//A5 5A A5 02 02 02 02 00 00 00
|
||||||
|
char command[12] = {0x00};
|
||||||
|
command[0] = 0xA5;
|
||||||
|
command[1] = 0x5A;
|
||||||
|
command[2] = 0xA5;
|
||||||
|
command[3] = 0x02;
|
||||||
|
command[4] = 0x02;
|
||||||
|
command[5] = 0x01;
|
||||||
|
command[6] = 0x00;// 低电平
|
||||||
|
command[7] = 0x00;
|
||||||
|
command[8] = 0x00;
|
||||||
|
command[9] = 0x00;
|
||||||
|
unsigned char tmp = 0x00;
|
||||||
|
for (int k = 0; k < 10; k++) {
|
||||||
|
tmp += command[k];
|
||||||
|
}
|
||||||
|
command[10] = tmp;
|
||||||
|
WriteToUart(command, 11);
|
||||||
}
|
}
|
||||||
@ -183,9 +183,6 @@ void Uart::UpdateWirelessNode(uint16_t shortAdd) {
|
|||||||
//帧头[3byte] 节点地址[2byte] 数据类型[1byte] 序号[1byte] 数据包[92byte] CRC校验[1byte]
|
//帧头[3byte] 节点地址[2byte] 数据类型[1byte] 序号[1byte] 数据包[92byte] CRC校验[1byte]
|
||||||
zlog_warn(zbt, "Start Upgrade!!! file Size = %d,fileName = %s,Count = %d,lastSize = %d,shortAddr = %02x%02x", (int)thisSize,DataNodeUpdateFile.c_str(),Count,lastSize,UINT16_HIGH(shortAdd), UINT16_LOW(shortAdd));
|
zlog_warn(zbt, "Start Upgrade!!! file Size = %d,fileName = %s,Count = %d,lastSize = %d,shortAddr = %02x%02x", (int)thisSize,DataNodeUpdateFile.c_str(),Count,lastSize,UINT16_HIGH(shortAdd), UINT16_LOW(shortAdd));
|
||||||
tmp = 0x00;
|
tmp = 0x00;
|
||||||
gpio_set(GlobalConfig::GPIO_G.zigAckreset, 0);
|
|
||||||
mssleep(1000);
|
|
||||||
gpio_set(GlobalConfig::GPIO_G.zigAckreset, 1);
|
|
||||||
for(int j = 0; j < Count;j++){
|
for(int j = 0; j < Count;j++){
|
||||||
int time ,value;
|
int time ,value;
|
||||||
UpdateData[0]=0xAA;
|
UpdateData[0]=0xAA;
|
||||||
@ -202,30 +199,20 @@ void Uart::UpdateWirelessNode(uint16_t shortAdd) {
|
|||||||
}
|
}
|
||||||
UpdateData[99] = tmp;
|
UpdateData[99] = tmp;
|
||||||
WriteToUart((const char*)UpdateData,100);
|
WriteToUart((const char*)UpdateData,100);
|
||||||
if(gpio_read(GlobalConfig::GPIO_G.zigAckrep) == 48)
|
mssleep(1000);
|
||||||
gpio_set(GlobalConfig::GPIO_G.zigAckreset,1);
|
if (ReadFromAlarm() == 0) {
|
||||||
time = 0;
|
zlog_info(zct, "Packge %d ACK send success,shortAddr = %02x%02x", j, UINT16_HIGH(shortAdd), UINT16_LOW(shortAdd));
|
||||||
do{
|
} else {
|
||||||
value = gpio_read(GlobalConfig::GPIO_G.zigAckrep);
|
zlog_warn(zct, "Packge %d ACK send failed,shortAddr = %02x%02x", j, UINT16_HIGH(shortAdd), UINT16_LOW(shortAdd));
|
||||||
if(value == 49)
|
zlog_warn(zct, "gpio_read failed shortAdd %02x %02x,index = %d", UINT16_HIGH(shortAdd), UINT16_LOW(shortAdd),j);
|
||||||
break;
|
|
||||||
mssleep(10000);
|
|
||||||
time += 1;
|
|
||||||
}while(time < 150);
|
|
||||||
if(time >= 150){
|
|
||||||
zlog_warn(zct, "gpio_read failed shortAdd %02x %02x,index = %d", UINT16_HIGH(shortAdd), UINT16_LOW(shortAdd),j);
|
|
||||||
zlog_warn(zct, "gpio_read failed \n");
|
zlog_warn(zct, "gpio_read failed \n");
|
||||||
bUpdate = false;
|
bUpdate = false;
|
||||||
upgrade_status = 3;
|
upgrade_status = 3;
|
||||||
goto endUpdate;
|
goto endUpdate;
|
||||||
}
|
}
|
||||||
gpio_set(GlobalConfig::GPIO_G.zigAckreset,0);
|
|
||||||
mssleep(2000);
|
|
||||||
memset(UpdateData,0x00,sizeof(UpdateData));
|
memset(UpdateData,0x00,sizeof(UpdateData));
|
||||||
mssleep(5000);
|
mssleep(5000);
|
||||||
}
|
}
|
||||||
if(gpio_read(GlobalConfig::GPIO_G.zigAckrep) == 48)
|
|
||||||
gpio_set(GlobalConfig::GPIO_G.zigAckreset,1);
|
|
||||||
|
|
||||||
if (lastSize > 0) {
|
if (lastSize > 0) {
|
||||||
UpdateData[0] = 0xAA;
|
UpdateData[0] = 0xAA;
|
||||||
@ -243,25 +230,14 @@ void Uart::UpdateWirelessNode(uint16_t shortAdd) {
|
|||||||
UpdateData[99] = tmp;
|
UpdateData[99] = tmp;
|
||||||
WriteToUart((const char*)UpdateData, 100);
|
WriteToUart((const char*)UpdateData, 100);
|
||||||
mssleep(1000);
|
mssleep(1000);
|
||||||
int time = 0;
|
if (ReadFromAlarm() == 0) {
|
||||||
do{
|
zlog_info(zct, "ACK send success,shortAddr = %02x%02x", UINT16_HIGH(shortAdd), UINT16_LOW(shortAdd));
|
||||||
int value = gpio_read(GlobalConfig::GPIO_G.zigAckrep);
|
} else {
|
||||||
if(value == 49){
|
zlog_warn(zct, "ACK send failed,shortAddr = %02x%02x", UINT16_HIGH(shortAdd), UINT16_LOW(shortAdd));
|
||||||
gpio_set(GlobalConfig::GPIO_G.zigAckreset,0);
|
zlog_warn(zct, "gpio_read failed \n");
|
||||||
mssleep(10000);
|
bUpdate = false;
|
||||||
if(gpio_read(GlobalConfig::GPIO_G.zigAckrep) == 48)
|
|
||||||
gpio_set(GlobalConfig::GPIO_G.zigAckreset,1);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
mssleep(10000);
|
|
||||||
time += 1;
|
|
||||||
}while(time < 150);
|
|
||||||
if (time >= 150) {
|
|
||||||
zlog_warn(zct, "gpio_read failed shortAdd %02x %02x", UINT16_HIGH(shortAdd), UINT16_LOW(shortAdd));
|
|
||||||
zlog_warn(zct, "gpio_read failed \n");
|
|
||||||
bUpdate = false;
|
|
||||||
upgrade_status = 3;
|
upgrade_status = 3;
|
||||||
goto endUpdate;
|
goto endUpdate;
|
||||||
}
|
}
|
||||||
memset(UpdateData, 0x00, sizeof(UpdateData));
|
memset(UpdateData, 0x00, sizeof(UpdateData));
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user