Skip to content

Commit

Permalink
add functionality to storeHeader method
Browse files Browse the repository at this point in the history
  • Loading branch information
LukasRolle committed Dec 15, 2016
1 parent 0c303d9 commit 7713a39
Show file tree
Hide file tree
Showing 2 changed files with 64 additions and 8 deletions.
45 changes: 41 additions & 4 deletions Core/mqttUplink/headerHandler.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,20 +37,57 @@ func (h *headerHandler) CreateNewHeader(payload []byte, devEUI string) ([]compon
return sensors, nil
}

func (h *headerHandler) StoreHeader(sensor []components.Sensor, devEUI string) error {
oldHeader := DatabaseConnector.GetNodeSensors(devEUI) //TODO: DatabaseConnector.GetFullHeader()
func (h *headerHandler) StoreHeader(newHeader []components.Sensor, devEUI string) error {
oldHeader, err := DatabaseConnector.GetFullHeader(devEUI)
if err != nil {
return err
}
var headerOrderChanges, activationChanged []components.Sensor

for i := range oldHeader {
fmt.Println(i)
if b, position := h.containsSensor(oldHeader[i], newHeader); b {
sensor := newHeader[position]
newHeader = append(newHeader[:i], newHeader[i+1:]...)
oldHeader[i].Soft_deleted = false
activationChanged = append(activationChanged, oldHeader[i])
if sensor.HeaderOrder != oldHeader[i].HeaderOrder {
oldHeader[i].HeaderOrder = sensor.HeaderOrder
headerOrderChanges = append(headerOrderChanges, oldHeader[i])
}
} else if !oldHeader[i].Soft_deleted {
oldHeader[i].Soft_deleted = true
activationChanged = append(activationChanged, oldHeader[i])
}
}
if len(newHeader) != 0 {
//TODO: DatabaseConnector.NewSensor(newHeader)
}
if len(activationChanged) != 0 {
//TODO: DatabaseConnector.ChangeSensorActivationStates(activationChanged)
}
if len(headerOrderChanges) != 0 {
//TODO: DatabaseConnector.ChangeSensorOrder(headerOrderChanges)
}

return nil
}

func (h *headerHandler) containsSensor(sensor components.Sensor, sensors []components.Sensor) (bool, int) {
for i := range sensors {
fmt.Printf("%+v \n %+v \n", sensor, sensors[i])
if sensor.SameSensor(sensors[i]) {
return true, i
}
}
return false, 0
}

func (h *headerHandler) createSensor(payload []byte) components.Sensor {
var sensor components.Sensor

ioType := payload[0]
ioType = ioType >> 6
sensor.IoType = int64(ioType)
sensor.IoType = int(ioType)

ioAddress := payload[0]
ioAddress = ioAddress << 2 >> 4
Expand Down
27 changes: 23 additions & 4 deletions Core/mqttUplink/headerHandler_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,14 @@ import (

var h = NewHeaderHandler()
var headerPayload = []byte{0x10, 0x00, 0x4F, 0x08, 0x00, 0x65, 0x20, 0x0C, 0x4F, 0x08}
var expectedSensors = []components.Sensor{
components.Sensor{IoType: 0, IoAddress: 0, SensorType: 79, LenghtOfValues: 1, NumberOfValues: 1, HeaderOrder: 1},
components.Sensor{IoType: 0, IoAddress: 0, SensorType: 101, LenghtOfValues: 1, NumberOfValues: 4, HeaderOrder: 2},
components.Sensor{IoType: 0, IoAddress: 3, SensorType: 79, LenghtOfValues: 1, NumberOfValues: 1, HeaderOrder: 3},
var expectedSensors []components.Sensor

func setUp() {
expectedSensors = []components.Sensor{
components.Sensor{IoType: 0, IoAddress: 0, SensorType: 79, LenghtOfValues: 1, NumberOfValues: 1, HeaderOrder: 1},
components.Sensor{IoType: 0, IoAddress: 0, SensorType: 101, LenghtOfValues: 1, NumberOfValues: 4, HeaderOrder: 2},
components.Sensor{IoType: 0, IoAddress: 3, SensorType: 79, LenghtOfValues: 1, NumberOfValues: 1, HeaderOrder: 3},
}
}

func TestCreateNewHeader(t *testing.T) {
Expand All @@ -35,3 +39,18 @@ func TestHeaderWithWrongLength(t *testing.T) {
t.Errorf("Payload with %d, should generate an error in the header handler", len(wrongLengthPayload))
}
}

func TestStorePayload(t *testing.T) {
err := h.StoreHeader(expectedSensors, devEuiS)
if err != nil {
t.Errorf("The addition of %+v \n Should not fail, but got %+v.", expectedSensors, err)
}

differentSensor := components.Sensor{IoType: 1, IoAddress: 1, SensorType: 0, LenghtOfValues: 4, NumberOfValues: 2, HeaderOrder: 1}
expectedSensors[2] = differentSensor
err = h.StoreHeader(expectedSensors, devEuiS)
if err != nil {
t.Errorf("The addition of %+v \n Should not fail, but got %+v.", expectedSensors, err)
}

}

0 comments on commit 7713a39

Please sign in to comment.