XbeeApi

Dependents:   XbeeAPI Hybrid_main_FirstEdtion

Revision:
2:30220fb0e20e
Parent:
1:34007fc9235e
--- a/XbeeApiLib.cpp	Fri Mar 10 06:08:40 2017 +0000
+++ b/XbeeApiLib.cpp	Mon Mar 13 06:31:22 2017 +0000
@@ -229,10 +229,22 @@
                         int DataLength = PacketLength - 12;                         //データ本体の長さは パケットの長さ - 12 ここでいう「パケットの長さ」に、最初の3バイトとチェックサムは含まない
                         OnPacketReceived(DataLength, &RxBuf[15]);                   //パケットタイプ0x90は地上局から送信されたデータが16バイト目 すなわち RxBuf[15] から格納されている
                         //OnPacketReceived(DataLength + 16, RxBuf);   //デバッグ用 パケットすべてを渡す場合
-                        if(DataLength == 2 && RxBuf[15] == 0x59 && RxBuf[16] == 0x4D){
-                            address[0].ADR16bit[0] = RxBuf[12];
-                            address[0].ADR16bit[1] = RxBuf[13];
-                            address[0].IsAvailable = true;
+                        if(DataLength == 2 && RxBuf[15] == 0x59 && RxBuf[16] == 0x4D){      //0x594Dが送られて来たら、送信元の64bitアドレスをチェックする
+                            for(int i = 0; i < 4; i++){
+                                bool IsMatchAddr = true;
+                                for(int j = 0; j < 8; j++){
+                                    if(address[i].ADR[j] != RxBuf[j + 4]){
+                                        IsMatchAddr = false;                                //16bitアドレスを調べる 1つでも一致しなければ終了するし
+                                        break;
+                                    }
+                                }
+                                if(IsMatchAddr == true){                                    //0x594Dを送信してきた地上局の64bitアドレスがaddress[i]と一致した場合
+                                    address[i].ADR16bit[0] = RxBuf[12];                     //address[i]の16bitアドレスを地上局側に合わせる
+                                    address[i].ADR16bit[1] = RxBuf[13];
+                                    address[i].IsAvailable = true;
+                                    break;
+                                }
+                            }
                         }
                     }
                 }