1 // (c) Bernhard Tittelbach, 2013
13 func MarshalEvent2ByteByte(event_interface interface{}) (data [][]byte, err error) {
15 fmt.Printf("%T%+v\n", event_interface, event_interface)
16 msg, err = json.Marshal(event_interface)
20 etype := fmt.Sprintf("%T", event_interface)
21 etype_lastsep := strings.LastIndex(etype,".")
22 data = [][]byte{[]byte(etype[etype_lastsep+1:]), msg} //works in all cases for etype_lastsep in range -1 to len(etype)-1
26 func UnmarshalByteByte2Event(data [][]byte) (event interface{}, err error) {
28 return nil, errors.New("not a r3event message")
30 switch string(data[0]) {
31 case "DoorLockUpdate":
32 event = new(DoorLockUpdate)
33 err = json.Unmarshal(data[1],event)
34 case "DoorAjarUpdate":
35 event := new(DoorAjarUpdate)
36 err = json.Unmarshal(data[1], event)
37 case "DoorCommandEvent":
38 event := new(DoorCommandEvent)
39 err = json.Unmarshal(data[1], event)
40 case "ButtonPressUpdate":
41 event := new(ButtonPressUpdate)
42 err = json.Unmarshal(data[1], event)
43 case "TempSensorUpdate":
44 event := new(TempSensorUpdate)
45 err = json.Unmarshal(data[1], event)
46 case "IlluminationSensorUpdate":
47 event := new(IlluminationSensorUpdate)
48 err = json.Unmarshal(data[1], event)
50 event := new(TimeTick)
51 err = json.Unmarshal(data[1], event)
52 case "MovementSensorUpdate":
53 event := new(MovementSensorUpdate)
54 err = json.Unmarshal(data[1], event)
55 case "PresenceUpdate":
56 event := new(PresenceUpdate)
57 err = json.Unmarshal(data[1], event)
58 case "SomethingReallyIsMoving":
59 event := new(SomethingReallyIsMoving)
60 err = json.Unmarshal(data[1], event)
63 err = errors.New("cannot unmarshal unknown type")