예제 #1
0
파일: motions.go 프로젝트: gtfour/actuator
func HandleNewMotion(motion *activa.Motion) (err error) {
	err = cross.WriteMotion(motion)
	if err == nil {
		motion.TaskState = activa.TASK_STATE_inprogress
	} else {
		motion.TaskState = activa.TASK_STATE_failed
		return err
	}
	return err
}
예제 #2
0
파일: event.go 프로젝트: gtfour/actuator
func Handle(messages chan CompNotes) {
	motions := make(chan *activa.Motion, 100)
	go activa.Handle(motions)
	var websocket_connection = wsclient.WsConn
	for {
		select {
		case message := <-messages:
			fmt.Printf("\n<<Evebridge: message has been recieved>>\n")
			var ws_message_data = wsclient.DataUpdate{SourcePath: message.Path, SourceType: message.SourceType}
			message_data_raw, err := ws_message_data.GetRaw()
			if err == nil {
				var ws_message = &wsclient.Message{DataType: "data_update", Data: message_data_raw}
				fmt.Printf("\nStart writing\n")
				websocket_connection.Write(ws_message)
				fmt.Printf("\nFinish writing\n")
				fmt.Printf("Message: %v HaveToParse: %v\n", message, message.FieldExists("HashSum"))
			}
		case message := <-websocket_connection.OutChannel:
			if message.DataType == "server_response" {
				var response wsclient.Response
				data := message.Data
				err_unmarshal := json.Unmarshal(data, &response)
				if err_unmarshal == nil {
					fmt.Printf("\nMessage from server: %v\n", response)
				}
			} else if message.DataType == "motion" {
				var motion activa.Motion
				data := message.Data
				err_unmarshal := json.Unmarshal(data, &motion)
				if err_unmarshal == nil {
					//fmt.Printf("\nNew motion %v\n", motion)
					motion.TaskState = activa.TASK_STATE_inprogress
					cross.WriteMotion(&motion)
					//
					if motion.Type == activa.MOTION_TYPE_BLACKOUT {

					} else if motion.Type == activa.MOTION_TYPE_BLACKTOP {

					}

					//
					motions <- &motion
				}

			}
		default:
			time.Sleep(LOG_CHANNEL_TIMEOUT_MS * time.Millisecond)
			//fmt.Println("No messages")
		}
	}
}
예제 #3
0
파일: motions.go 프로젝트: gtfour/actuator
func HandleCompletedMotion(motion *activa.Motion) (err error) {
	_ = cross.WriteMotion(motion)
	return err
}