123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- 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
- case "queue": //PAD alarm
- 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)
- }
|