|
@@ -140,7 +140,7 @@ func processPacket(packet []byte) {
|
|
|
|
|
|
|
|
//check if the cmd type is avtive
|
|
//check if the cmd type is avtive
|
|
|
if packet[5] == 0x03 { // ACTIVE
|
|
if packet[5] == 0x03 { // ACTIVE
|
|
|
- Active([2]byte{packet[8], packet[9]})
|
|
|
|
|
|
|
+ Active([3]byte{packet[8], packet[9], packet[10]})
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -312,32 +312,65 @@ func StationAnn(data []byte) (err error) {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// 激活信号
|
|
// 激活信号
|
|
|
-func Active(data [2]byte) {
|
|
|
|
|
-
|
|
|
|
|
- //var info model.Sysinfo
|
|
|
|
|
- Signal := int(data[0])
|
|
|
|
|
|
|
+func Active(data [3]byte) {
|
|
|
|
|
|
|
|
//check asterisk available
|
|
//check asterisk available
|
|
|
if active.Master { // master true
|
|
if active.Master { // master true
|
|
|
if !utils.CheckAsterisk() { //check asterisk not available and set master false
|
|
if !utils.CheckAsterisk() { //check asterisk not available and set master false
|
|
|
- active.Master = false
|
|
|
|
|
-
|
|
|
|
|
- utils.ExecCmd("/etc/init.d/asterisk", "stop", "PBX")
|
|
|
|
|
|
|
+ if active.MasterTag > 2 {
|
|
|
|
|
+ active.Master = false
|
|
|
|
|
+ active.MasterTag = 0
|
|
|
|
|
+ } else {
|
|
|
|
|
+ active.MasterTag++
|
|
|
|
|
+ }
|
|
|
|
|
+ //utils.ExecCmd("/etc/init.d/asterisk", "stop", "PBX")
|
|
|
|
|
+ } else {
|
|
|
|
|
+ active.MasterTag = 0
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
} else { // master false, check and start asterisk
|
|
} else { // master false, check and start asterisk
|
|
|
|
|
|
|
|
//Master == false
|
|
//Master == false
|
|
|
if !utils.CheckAsterisk() {
|
|
if !utils.CheckAsterisk() {
|
|
|
if active.CabNum == "8" {
|
|
if active.CabNum == "8" {
|
|
|
- utils.ExecCmd("/etc/init.d/asterisk", "start", "PBX")
|
|
|
|
|
|
|
+ //utils.ExecCmd("/etc/init.d/asterisk", "start", "PBX")
|
|
|
|
|
+ utils.ExecCmd("/usr/sbin/asterisk")
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
//Master == false cab == 1
|
|
//Master == false cab == 1
|
|
|
- if active.CabNum == "1" {
|
|
|
|
|
- if utils.CheckAsterisk() {
|
|
|
|
|
- utils.ExecCmd("/etc/init.d/asterisk", "stop", "PBX")
|
|
|
|
|
|
|
+ //if active.CabNum == "1" {
|
|
|
|
|
+ // if utils.CheckAsterisk() {
|
|
|
|
|
+ // utils.ExecCmd("/etc/init.d/asterisk", "stop", "PBX")
|
|
|
|
|
+ // }
|
|
|
|
|
+ //}
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ //var info model.Sysinfo
|
|
|
|
|
+ Signal := int(data[0])
|
|
|
|
|
+ TrainInfo := int(data[2])
|
|
|
|
|
+
|
|
|
|
|
+ if TrainInfo != 0 {
|
|
|
|
|
+ //Get train devide info
|
|
|
|
|
+ DevideInfo := TrainInfo & 0x10
|
|
|
|
|
+ if DevideInfo == 1 {
|
|
|
|
|
+ active.TrainDevide = 1
|
|
|
|
|
+
|
|
|
|
|
+ active.Master = true //列车断开,设置两边都Master
|
|
|
|
|
+ if !utils.CheckAsterisk() {
|
|
|
|
|
+ utils.ExecCmd("/usr/sbin/asterisk")
|
|
|
}
|
|
}
|
|
|
|
|
+ } else {
|
|
|
|
|
+ active.TrainDevide = 0
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ //Radio fault
|
|
|
|
|
+ RadioFault1 := TrainInfo & 0x03
|
|
|
|
|
+ RadioFault8 := TrainInfo & 0x0c
|
|
|
|
|
+ if RadioFault1 == 0 && RadioFault8 == 1 {
|
|
|
|
|
+ active.RadioFault = 1
|
|
|
|
|
+ } else {
|
|
|
|
|
+ active.RadioFault = 0
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|