Просмотр исходного кода

同步NTP时间未成功前, 如果控制板发来时间, 则先用控制板的时间

niujiuru 2 недель назад
Родитель
Сommit
bb56c0d87c
1 измененных файлов с 17 добавлено и 0 удалено
  1. 17 0
      mcu_ctrl_board/mcu_ctrl_board.go

+ 17 - 0
mcu_ctrl_board/mcu_ctrl_board.go

@@ -100,6 +100,23 @@ func (b *MCUCtrlBoard) getRTUStatus(r *jsonrpc2.Request) (*jsonrpc2.Response, er
 	if netmgrd.IsSyncedNtpTime() {
 		now := time.Now()
 		systm = now.Format("2006-01-02 15:04:05")
+	} else if r.Params != nil { // 同步控制板的系统时间
+		var params struct {
+			SystemTime string `json:"systm"`
+		}
+		if err := json.Unmarshal(r.Params, &params); err != nil {
+			return jsonrpc2.BuildError(r, jsonrpc2.ErrInvalidParams, ""), nil
+		}
+
+		t, err := time.ParseInLocation("2006-01-02 15:04:05", params.SystemTime, time.Local)
+		if err == nil {
+			err = netmgrd.SetSystemTime(t)
+		}
+		if err != nil {
+			baseapp.Logger.Warnf("同步控制板时间时有错误发生: %v!", err)
+		}
+
+		baseapp.Logger.Info("控制板时间已同步")
 	}
 
 	wrkst := "idle"