package alstatus import ( "fmt" "net" "pbx-api-gin/api/model" "pbx-api-gin/internal/app/mysql" msgdata "pbx-api-gin/internal/app/stc/data" "pbx-api-gin/pkg/lfshook" ) func SendToStc(conn net.Conn, data []byte) { _, err := conn.Write(data) if err != nil { fmt.Println("send msg err:", err) } } // report alarm status to STC func AlarmStatus(exten string, status string, conn net.Conn) { //check exten if it is a alarm exten var data model.Extension _, er := mysql.DBOrmInstance.Where("exttype = ? and exten = ?", "PAIU", exten).Get(&data) if er != nil { lfshook.NewLogger().Logger.Infof("get alarm exten err : %+v", er.Error()) } if len(data.Extension) == 0 { return } protocol := msgdata.NewProtocol() protocol.MessageID = 0x26 protocol.DataLength = 0x04 protocol.Data[0] = byte(int(exten[3] - 0)) //车厢号 protocol.Data[1] = byte(int(exten[2] - 0)) //位置号 //报警器工作状态 switch status { case "unavailable", "Unavailable": //offline protocol.Data[2] = 0x00 case "idle", "Idle": //idle protocol.Data[2] = 0x01 case "dial": //dial protocol.Data[2] = 0x02 //invite the PACU to queue //action.Dial("PACU", "0300", "default", "0300", "0300", "PJSIP") case "queue": //hold protocol.Data[2] = 0x03 case "connect": //connect protocol.Data[2] = 0x04 } encoded, errEn := protocol.Encode() if errEn != nil { fmt.Println("Encode error:", errEn) return } SendToStc(conn, encoded) } // report broadcast status to STC func PaStatus(src string, patype string, operation string, conn net.Conn) { protocol := msgdata.NewProtocol() protocol.MessageID = 0x22 protocol.DataLength = 0x04 //广播发起方 switch src { case "2311": //offline protocol.Data[0] = 0x01 case "2381": //idle protocol.Data[0] = 0x08 case "": //idle protocol.Data[0] = 0x00 } //广播类型 switch patype { case "C2C": //司机对讲 protocol.Data[1] = 0x01 case "C2P": //人工广播 protocol.Data[1] = 0x02 case "DOR": //开关门提示音 protocol.Data[1] = 0x03 case "EMG": //紧急广播 protocol.Data[1] = 0x04 case "AlARM": //报警 protocol.Data[1] = 0x05 case "CPA": //地面广播 protocol.Data[1] = 0x06 case "SPE": //特殊 protocol.Data[1] = 0x07 case "STN": //报站 protocol.Data[1] = 0x08 case "CH": //自检 protocol.Data[1] = 0x09 } //操作类型 switch operation { case "start": // protocol.Data[2] = 0x01 case "end": // protocol.Data[2] = 0x02 case "refuse": // protocol.Data[2] = 0x03 case "fail": // protocol.Data[2] = 0x04 case "continue": // protocol.Data[2] = 0x05 } encoded, errEn := protocol.Encode() if errEn != nil { fmt.Println("Encode error:", errEn) return } SendToStc(conn, encoded) }