Decoding Adeunis Demonstrator V1.1

Based on the Adeunis Demonstrator V1.1 specifications

Use the code below in a Robot to decode the Adeunis Payload:

//Payload is expected to be a binary String
function decodePayload(binPayload){
    // Will check elements one at a time, 
    // and pass what's left of the payload each time
    var status = binPayload.substring(0, 8);
    var payloadLeft = binPayload.substring(8);
    
    if (status.substring(0,1) === "1"){
        print('temp is here');
        processedRecord.temperature = parseTemperature(payloadLeft);
        processedRecord.temperatureUnit = "C"; 
        payloadLeft = payloadLeft.substring(8);
    }
    
    if (status.substring(1,2) === "1"){
        print('accelerometer activated');
    }
    
    if (status.substring(2,3) === "1"){
        print('button pushed');
    }
    
    if (status.substring(3,4) === "1"){
        print('GPS is here');
        processedRecord.latitude = parseLatitude(payloadLeft);
        payloadLeft = payloadLeft.substring(32);
        processedRecord.longitude = parseLongitude(payloadLeft);
        payloadLeft = payloadLeft.substring(32);
    }
}

function parseTemperature(binPayload) {
    return lib.Bin2SignedDec(binPayload.substring(0,8));
}

function parseLatitude(binPayload) {
    print(binPayload);
    var latitude = "";
    latitude += lib.Bin2Dec(binPayload.substring(0,4));
    latitude += lib.Bin2Dec(binPayload.substring(4,8));
    latitude += "°";
    latitude += lib.Bin2Dec(binPayload.substring(8,12));
    latitude += lib.Bin2Dec(binPayload.substring(12,16));
    latitude += ".";
    latitude += lib.Bin2Dec(binPayload.substring(16,20));
    latitude += lib.Bin2Dec(binPayload.substring(20,24));
    latitude += lib.Bin2Dec(binPayload.substring(24,28));
    latitude += "0";
    if (binPayload.charAt(31) == '0'){
        latitude += "N";
    } else {
        latitude += "S";
    }
        
    return latitude;
}

function parseLongitude(binPayload) {
    var longitude = "";
    
    longitude += lib.Bin2Dec(binPayload.substring(0,4));
    longitude += lib.Bin2Dec(binPayload.substring(4,8));
    longitude += lib.Bin2Dec(binPayload.substring(8,12));
    longitude += "°";
    longitude += lib.Bin2Dec(binPayload.substring(12,16));
    longitude += lib.Bin2Dec(binPayload.substring(16,20));
    longitude += ".";
    longitude += lib.Bin2Dec(binPayload.substring(20,24));
    longitude += lib.Bin2Dec(binPayload.substring(24,28));
    longitude += "0";
    if (binPayload.charAt(31) == '0'){
        longitude += "E";
    } else {
        longitude += "W";
    }
        
    return longitude;
}