|
@@ -41,12 +41,9 @@ func HandleStcCmd(ctx context.Context, conn net.Conn) {
|
|
|
}
|
|
}
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
- if active.Actived { // check actived or not
|
|
|
|
|
- // 将新读取的数据追加到缓冲区
|
|
|
|
|
- buf.Write(tmp[:n])
|
|
|
|
|
- } else {
|
|
|
|
|
- break
|
|
|
|
|
- }
|
|
|
|
|
|
|
+
|
|
|
|
|
+ // 将新读取的数据追加到缓冲区
|
|
|
|
|
+ buf.Write(tmp[:n])
|
|
|
}
|
|
}
|
|
|
// 尝试从缓冲区中提取完整数据包
|
|
// 尝试从缓冲区中提取完整数据包
|
|
|
for {
|
|
for {
|
|
@@ -67,10 +64,22 @@ func processPacket(packet []byte) {
|
|
|
fmt.Println("Invalid packet length")
|
|
fmt.Println("Invalid packet length")
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
- lfshook.NewLogger().Logger.Infof("Get data from STC ===============:%x", packet)
|
|
|
|
|
|
|
+
|
|
|
|
|
+ //for test
|
|
|
|
|
+ if packet[5] != 0x03 && packet[5] != 0x0c && packet[5] != 0x01 {
|
|
|
|
|
+ lfshook.NewLogger().Logger.Infof("Get data from STC ===============:%x", packet)
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
//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([1]byte{packet[7]})
|
|
|
|
|
|
|
+ Active([1]byte{packet[8]})
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ //check if actived
|
|
|
|
|
+ if !active.Actived {
|
|
|
|
|
+ lfshook.NewLogger().Logger.Infof("===========Inactived retrun==============")
|
|
|
|
|
+ return
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
switch packet[5] {
|
|
switch packet[5] {
|
|
@@ -79,9 +88,8 @@ func processPacket(packet []byte) {
|
|
|
case 0x02: // STN
|
|
case 0x02: // STN
|
|
|
lfshook.NewLogger().Infof("=====STN=========")
|
|
lfshook.NewLogger().Infof("=====STN=========")
|
|
|
StationAnn(packet)
|
|
StationAnn(packet)
|
|
|
- case 0x03: // ACTIVE
|
|
|
|
|
-
|
|
|
|
|
- Active([1]byte{packet[8]})
|
|
|
|
|
|
|
+ //case 0x03: // ACTIVE
|
|
|
|
|
+ // Active([1]byte{packet[8]})
|
|
|
case 0x05: // SPC
|
|
case 0x05: // SPC
|
|
|
lfshook.NewLogger().Infof("=====SPC=========")
|
|
lfshook.NewLogger().Infof("=====SPC=========")
|
|
|
SpecialAnn(packet)
|
|
SpecialAnn(packet)
|
|
@@ -131,56 +139,63 @@ func StationAnn(data []byte) (err error) {
|
|
|
// 激活信号
|
|
// 激活信号
|
|
|
func Active(data [1]byte) {
|
|
func Active(data [1]byte) {
|
|
|
|
|
|
|
|
- var info model.Sysinfo
|
|
|
|
|
-
|
|
|
|
|
- Num := int(data[0])
|
|
|
|
|
- lfshook.NewLogger().Logger.Infof("Active data : %x", Num)
|
|
|
|
|
-
|
|
|
|
|
- switch Num { // 设置全局的激活信号,并通过协议(待定)通知终端注册到对应的激活主机上
|
|
|
|
|
- case 0:
|
|
|
|
|
- lfshook.NewLogger().Logger.Infof("=================Inactive==================")
|
|
|
|
|
- info.Name = "cab_active"
|
|
|
|
|
- info.Value = "0"
|
|
|
|
|
|
|
+ //var info model.Sysinfo
|
|
|
|
|
+ active.Actived = true
|
|
|
|
|
+ //Num := int(data[0])
|
|
|
|
|
+ //lfshook.NewLogger().Logger.Infof("Active data : %x", Num)
|
|
|
|
|
+ /*
|
|
|
|
|
+ switch Num { // 设置全局的激活信号,并通过协议(待定)通知终端注册到对应的激活主机上
|
|
|
|
|
+ case 0:
|
|
|
|
|
|
|
|
- _, er := mysql.DBOrmInstance.Where("name = ?", "cab_active").Update(&info)
|
|
|
|
|
- if er != nil {
|
|
|
|
|
- lfshook.NewLogger().Logger.Infof("update sysinfo err : %+v", er.Error())
|
|
|
|
|
- return
|
|
|
|
|
- }
|
|
|
|
|
- case 1:
|
|
|
|
|
- lfshook.NewLogger().Logger.Infof("=================active===MC1===============")
|
|
|
|
|
- if active.CabNum == "1" { // local cab is MC1
|
|
|
|
|
- info.Name = "cab_active"
|
|
|
|
|
- info.Value = "1"
|
|
|
|
|
- active.Actived = true
|
|
|
|
|
- } else {
|
|
|
|
|
- info.Name = "cab_active"
|
|
|
|
|
- info.Value = "0"
|
|
|
|
|
- active.Actived = false
|
|
|
|
|
- }
|
|
|
|
|
- _, er := mysql.DBOrmInstance.Where("name = ?", "cab_active").Update(&info)
|
|
|
|
|
- if er != nil {
|
|
|
|
|
- lfshook.NewLogger().Logger.Infof("update sysinfo err : %+v", er.Error())
|
|
|
|
|
- return
|
|
|
|
|
- }
|
|
|
|
|
- case 8:
|
|
|
|
|
- lfshook.NewLogger().Logger.Infof("=================active===MC8===============")
|
|
|
|
|
- if active.CabNum == "8" { //Local cab is MC8
|
|
|
|
|
- info.Name = "cab_active"
|
|
|
|
|
- info.Value = "1"
|
|
|
|
|
- active.Actived = true
|
|
|
|
|
- } else {
|
|
|
|
|
- info.Name = "cab_active"
|
|
|
|
|
- info.Value = "0"
|
|
|
|
|
|
|
+ lfshook.NewLogger().Logger.Infof("=================Inactive==================")
|
|
|
|
|
+ info.Name = "cab_active"
|
|
|
|
|
+ info.Value = "0"
|
|
|
active.Actived = false
|
|
active.Actived = false
|
|
|
- }
|
|
|
|
|
|
|
|
|
|
- _, er := mysql.DBOrmInstance.Where("name = ?", "cab_active").Update(&info)
|
|
|
|
|
- if er != nil {
|
|
|
|
|
- lfshook.NewLogger().Logger.Infof("update sysinfo err : %+v", er.Error())
|
|
|
|
|
- return
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ _, er := mysql.DBOrmInstance.Where("name = ?", "cab_active").Update(&info)
|
|
|
|
|
+ if er != nil {
|
|
|
|
|
+ lfshook.NewLogger().Logger.Infof("update sysinfo err : %+v", er.Error())
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ case 1:
|
|
|
|
|
+
|
|
|
|
|
+ lfshook.NewLogger().Logger.Infof("=================active===MC1===============")
|
|
|
|
|
+ if active.CabNum == "1" { // local cab is MC1
|
|
|
|
|
+ info.Name = "cab_active"
|
|
|
|
|
+ info.Value = "1"
|
|
|
|
|
+ active.Actived = true
|
|
|
|
|
+ } else {
|
|
|
|
|
+ info.Name = "cab_active"
|
|
|
|
|
+ info.Value = "0"
|
|
|
|
|
+ active.Actived = false
|
|
|
|
|
+ }
|
|
|
|
|
+ _, er := mysql.DBOrmInstance.Where("name = ?", "cab_active").Update(&info)
|
|
|
|
|
+ if er != nil {
|
|
|
|
|
+ lfshook.NewLogger().Logger.Infof("update sysinfo err : %+v", er.Error())
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ case 8:
|
|
|
|
|
+
|
|
|
|
|
+ lfshook.NewLogger().Logger.Infof("=================active===MC8===============")
|
|
|
|
|
+ if active.CabNum == "8" { //Local cab is MC8
|
|
|
|
|
+ info.Name = "cab_active"
|
|
|
|
|
+ info.Value = "1"
|
|
|
|
|
+ active.Actived = true
|
|
|
|
|
+ } else {
|
|
|
|
|
+ info.Name = "cab_active"
|
|
|
|
|
+ info.Value = "0"
|
|
|
|
|
+ active.Actived = false
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ _, er := mysql.DBOrmInstance.Where("name = ?", "cab_active").Update(&info)
|
|
|
|
|
+ if er != nil {
|
|
|
|
|
+ lfshook.NewLogger().Logger.Infof("update sysinfo err : %+v", er.Error())
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ */
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// SPC ,特殊服务消息广播
|
|
// SPC ,特殊服务消息广播
|
|
@@ -300,6 +315,8 @@ func SelfCheck(data []byte) {
|
|
|
for _, ext := range Pacus {
|
|
for _, ext := range Pacus {
|
|
|
asterisk.Hangup(ext)
|
|
asterisk.Hangup(ext)
|
|
|
}
|
|
}
|
|
|
|
|
+ asterisk.Hangup("2311")
|
|
|
|
|
+ asterisk.Hangup("2381")
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -354,15 +371,15 @@ func AlarmHandle(data []byte) {
|
|
|
lfshook.NewLogger().Logger.Infof("================ICP Answer PAD================:%s ", exten)
|
|
lfshook.NewLogger().Logger.Infof("================ICP Answer PAD================:%s ", exten)
|
|
|
if infoExt.Status == "Idle" {
|
|
if infoExt.Status == "Idle" {
|
|
|
if active.CabNum == "1" && active.Actived {
|
|
if active.CabNum == "1" && active.Actived {
|
|
|
- action.Dial("0402", PacuNum, "default", PacuNum, exten, "1") // PACU dial ICP
|
|
|
|
|
|
|
+ action.Dial("0402", PacuNum, "default", PacuNum, exten, "1") // PACU dial ICP MC1
|
|
|
} else if active.CabNum == "8" && active.Actived {
|
|
} else if active.CabNum == "8" && active.Actived {
|
|
|
- action.Dial("0402", PacuNum, "default", PacuNum, exten, "8") // PACU dial ICP
|
|
|
|
|
|
|
+ action.Dial("0402", PacuNum, "default", PacuNum, exten, "8") // PACU dial ICP MC8
|
|
|
}
|
|
}
|
|
|
} else {
|
|
} else {
|
|
|
if active.CabNum == "1" && active.Actived {
|
|
if active.CabNum == "1" && active.Actived {
|
|
|
- action.RedirectInQueue(exten, "0402", "default", "1") // PACU dial ICP
|
|
|
|
|
|
|
+ action.RedirectInQueue(exten, "0402", "default", "1") // PAD dial ICP MC1
|
|
|
} else if active.CabNum == "8" && active.Actived {
|
|
} else if active.CabNum == "8" && active.Actived {
|
|
|
- action.RedirectInQueue(exten, "0402", "default", "8") // PACU dial ICP
|
|
|
|
|
|
|
+ action.RedirectInQueue(exten, "0402", "default", "8") // PAD dial ICP MC8
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -426,7 +443,7 @@ func AlarmResetAll() {
|
|
|
|
|
|
|
|
var AlarmExts []model.Extension
|
|
var AlarmExts []model.Extension
|
|
|
|
|
|
|
|
- er := mysql.DBOrmInstance.Where("dev_type = ?", "PAIU").Find(&AlarmExts)
|
|
|
|
|
|
|
+ er := mysql.DBOrmInstance.Where("dev_type = ? and status != ?", "PAIU", "Idle").Find(&AlarmExts)
|
|
|
if er != nil {
|
|
if er != nil {
|
|
|
lfshook.NewLogger().Logger.Infof("update special voice to exten err : %+v", er.Error())
|
|
lfshook.NewLogger().Logger.Infof("update special voice to exten err : %+v", er.Error())
|
|
|
}
|
|
}
|
|
@@ -435,22 +452,34 @@ func AlarmResetAll() {
|
|
|
action.Hangup(ext.Extension)
|
|
action.Hangup(ext.Extension)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- action.Hangup("2311")
|
|
|
|
|
|
|
+ if active.CabNum == "1" && active.Actived {
|
|
|
|
|
+ action.Hangup("2311") //1 车接听
|
|
|
|
|
+ } else if active.CabNum == "8" && active.Actived {
|
|
|
|
|
+ action.Hangup("2381") //8 车接听
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
func RecordStorageConf(data []byte) {
|
|
func RecordStorageConf(data []byte) {
|
|
|
- /*padRcd := data[0]
|
|
|
|
|
- padRcdStorage := data[1]
|
|
|
|
|
- paRcdStorage := data[2]
|
|
|
|
|
- cpaRcdStorage := data[3]
|
|
|
|
|
- padRcdDel := data[4]
|
|
|
|
|
- PaRcdDel := data[5]
|
|
|
|
|
- cpaRcdDel := data[6]
|
|
|
|
|
|
|
|
|
|
- //update pa type
|
|
|
|
|
- _, er := mysql.DBOrmInstance.In("exten", Pacus).Update(&model.Extension{PaType: "CHK"})
|
|
|
|
|
|
|
+ var info model.RcdConf
|
|
|
|
|
+
|
|
|
|
|
+ info.PadRcdEnable = int(data[0])
|
|
|
|
|
+ info.PadRcdStorageDays = int(data[1])
|
|
|
|
|
+ info.PaRcdStorageDays = int(data[2])
|
|
|
|
|
+ info.CpaRcdStorageDays = int(data[3])
|
|
|
|
|
+
|
|
|
|
|
+ info.PadRcdDelDays = int(data[4])
|
|
|
|
|
+ info.PaRcdDelDays = int(data[5])
|
|
|
|
|
+ info.CpaRcdDelDays = int(data[6])
|
|
|
|
|
+ info.OpaRcdStorageDays = int(data[7])
|
|
|
|
|
+ info.OpaRcdDelDays = int(data[8])
|
|
|
|
|
+
|
|
|
|
|
+ //lfshook.NewLogger().Infof("=============Set record Conf : %+v", info)
|
|
|
|
|
+
|
|
|
|
|
+ //update record config
|
|
|
|
|
+ _, er := mysql.DBOrmInstance.AllCols().Update(&info)
|
|
|
if er != nil {
|
|
if er != nil {
|
|
|
lfshook.NewLogger().Logger.Infof("update special voice to exten err : %+v", er.Error())
|
|
lfshook.NewLogger().Logger.Infof("update special voice to exten err : %+v", er.Error())
|
|
|
}
|
|
}
|
|
|
- */
|
|
|
|
|
|
|
+
|
|
|
}
|
|
}
|