// 基站参数，包括基本参数和系统参数
// 秒寻科技
// zt 2024-02-15

package bparammodel

import "ipsomc/core/dao/mysql/mysqlmodel"

// 基站基本参数
type BtsBaseParam struct {
	mysqlmodel.BaseModelDB

	//使能标识符，1：启用，0：停用
	EnableFlag uint8 `json:"enable_flag" gorm:"default:1"`

	//基站参数
	BtsID     int   `json:"bts_id" gorm:"default:0"`     //基站ID，在同一个项目钟，基站ID唯一
	CarrierID uint8 `json:"carrier_id" gorm:"default:0"` //载波ID
	Timeslot  uint8 `json:"timeslot" gorm:"default:0"`   //时隙

	//安装参数
	BuildID      uint16 `json:"build_id" gorm:"default:0"`      //大楼ID
	LayerID      int16  `json:"layer_id" gorm:"default:0"`      //楼层ID
	BlockID      uint16 `json:"block_id" gorm:"default:0"`      //分区ID
	BlockDesc    string `json:"block_desc" gorm:"size:30"`      //分区描述
	Position     string `json:"position" gorm:"size:30"`        //安装位置
	CoordX       int32  `json:"coord_x" gorm:"default:0"`       //X坐标，单位厘米
	CoordY       int32  `json:"coord_y" gorm:"default:0"`       //Y坐标，单位厘米
	CoordZ       int32  `json:"coord_z" gorm:"default:0"`       //Z坐标，单位厘米
	LocationType uint8  `json:"location_type" gorm:"default:0"` //定位类型（1：一维定位，2：二维定位，3：融合定位）
	TwoBtsNum    uint8  `json:"two_bts_num" gorm:"default:0"`   //两基站数量
	TwoBtsList   string `json:"two_bts_list" gorm:"size:128"`   //两基站ID列表

	//设备参数
	BtsType      uint8  `json:"bts_type" gorm:"default:0"`    //设备类型，1：声波基站，2：同步基站，3：同步中继
	SerialNumber string `json:"serial_number" gorm:"size:32"` //生产序列号
	BtsModel     string `json:"bts_model" gorm:"size:32"`     //设备信号
	SoftVersion  string `json:"soft_version" gorm:"size:32"`  //软件版本
	BleName      string `json:"ble_name" gorm:"size:64"`      //蓝牙名称

	//网管参数
	NetworkSwitch uint8  `json:"network_switch" gorm:"default:0"` //网管中心使能开关
	WifiName      string `json:"wifi_name" gorm:"size:32"`        //wifi热点名称
	WifiPwd       string `json:"wifi_pwd" gorm:"size:32"`         //wifi热点密码
	ServiceIP     string `json:"service_ip" gorm:"size:32"`       //网管中心Ip
	ServicePort   int    `json:"service_port" gorm:"default:0"`   //网管中心端口

	//同步参数
	CenterFreq   uint8 `json:"center_freq" gorm:"default:0"`     //接收中心频率ID
	RxSyncWordId uint8 `json:"rx_sync_word_id" gorm:"default:0"` //接收同步字ID
	Rssi         int8  `json:"rssi" gorm:"default:-128"`         //接收电平
	TxSwitch     uint8 `json:"tx_switch" gorm:"default:0"`       //转发开关（1:关闭，2：打开）
	TxCenterFreq uint8 `json:"tx_center_freq" gorm:"default:0"`  //转发中心频率ID
	TxSyncWordId uint8 `json:"tx_sync_word_id" gorm:"default:0"` //转发同步字ID
	TxPower      int8  `json:"tx_power" gorm:"default:0"`        //转发功率

	//增益参数
	DaSwitch  uint8  `json:"da_switch" gorm:"default:0"` //DA开关
	DaGain    uint16 `json:"da_gain" gorm:"default:0"`   //DA增益
	PaSwitch  uint8  `json:"pa_switch" gorm:"default:0"` //PA开关
	PaGain    uint8  `json:"pa_gain" gorm:"default:0"`   //PA增益
	SaveParam uint8  `json:"save_param" gorm:"-"`        //保存参数
	ResetBts  uint8  `json:"reset_bts" gorm:"-"`         //复位设备

	//RTC参数
	RtcDateTime     string `json:"rtc_date_time" gorm:"size:32"`       //RTC初始时间，yyyy,MM,dd,HH,mm,ss以逗号分隔
	SyncTimerSwitch uint8  `json:"sync_timer_switch" gorm:"default:0"` //同步定时开关，0：关闭，1：打开
	SyncTimerNum    uint8  `json:"sync_timer_num" gorm:"default:1"`    //同步定时分段数量，只能是1或者2
	SyncTimer1Start string `json:"sync_timer1_start" gorm:"size:32"`   //同步定时1开始时间，高字节是小时，低字节是分钟
	SyncTimer1Stop  string `json:"sync_timer1_stop" gorm:"size:32"`    //同步定时1结束时间，高字节是小时，低字节是分钟
	SyncTimer2Start string `json:"sync_timer2_start" gorm:"size:32"`   //同步定时2开始时间，高字节是小时，低字节是分钟
	SyncTimer2Stop  string `json:"sync_timer2_stop" gorm:"size:32"`    //同步定时2结束时间，高字节是小时，低字节是分钟
}

// 基站设备参数
type BtsDeviceParam struct {
	//后台绑定参数
	OwnerID   int `json:"owner_id"`   //记录的所属者(没有)
	CompanyID int `json:"company_id"` //公司ID
	ProjectID int `json:"project_id"` //项目ID（项目编号由由后台维护，前端可读不可写）

	//设备参数
	BtsID        int    `json:"bts_id"`        //基站ID，在同一个项目中，基站ID唯一
	BtsType      uint8  `json:"bts_type"`      //设备类型，1：声波基站，2：同步基站，3：同步中继
	SerialNumber string `json:"serial_number"` //生产序列号
	BtsModel     string `json:"bts_model"`     //设备型号
	SoftVersion  string `json:"soft_version"`  //软件版本
	BleName      string `json:"ble_name"`      //蓝牙名称
}

// 基站系统参数
type BtsSysParam struct {
	mysqlmodel.BaseModelDB
}

// 移动端基站参数
type MobileBtsParam struct {
	//基站参数
	BtsID     int   `json:"bts_id"`     //基站ID，在同一个项目钟，基站ID唯一
	CarrierID uint8 `json:"carrier_id"` //载波ID
	Timeslot  uint8 `json:"timeslot"`   //时隙

	//安装参数
	CoordX       int32  `json:"coord_x"`       //X坐标，单位厘米
	CoordY       int32  `json:"coord_y"`       //Y坐标，单位厘米
	CoordZ       int32  `json:"coord_z"`       //Z坐标，单位厘米
	LocationType uint8  `json:"location_type"` //定位类型（1：一维定位，2：二维定位，3：融合定位）
	TwoBtsNum    uint8  `json:"two_bts_num"`   //两基站数量
	TwoBtsList   string `json:"two_bts_list"`  //两基站ID列表
	BleName      string `json:"ble_name"`      //蓝牙名称
}
