# Prerequisites To be able to compile your solutions and execute the tests, you will need the following: - working gcc compiler - working ruby installation - rubygems: rake and bake-toolkit ## Install the bake tool see https://esrlabs.github.io/bake/ # GPS on CAN In this task you will need to receive Can-frames on the can-bus that contain the GPS location of the vehicle. The raw data has to be converted to arc-milliseconds **Beware that the system you are running your code on will not support floating point operations. Use only unsigned and signed integers!** Still the precision of your calculations has to be +-100 milli-arc-seconds Dynamic allocation is not supported on the system. You will have to complete the *GpsConverter.cpp* (and .h). ## Conversion between Arc-Degree and arc-milliseconds 1°2'5" == (1*3600+ 2*60 + 5)*1000 ## Conversion of raw values to Arc-Degree value [degree] = 180/(2^31-1) * value[raw] #### HINT 1 Try to use constants as much as possible, instead of computing stuff on the go. #### HINT 2 In order to avoid losing decimals first, multiply with a large factor and then divide to get the result in ms. ## GPS Datalayout in CAN Message Byte7 ST_LAT_NAVI Byte6 ST_LAT_NAVI Byte5 ST_LAT_NAVI Byte4 ST_LAT_NAVI Byte3 ST_LONG_NAVI Byte2 ST_LONG_NAVI Byte1 ST_LONG_NAVI Byte0 ST_LONG_NAVI ## Byteorder Little Endian (Least Significant Byte is at lowest address) # Signal Descriptions ## Status Longitude Navigation ST_LONG_NAVI ### Possible Values -180° ... +180° ### Signal type 32 Bit Signed Integer (Byte 0 ... Byte 3) ### Invalid Data Invalid-Value: 80 00 00 00 Signal not available value: 7F FF FF FF and FF FF FF FF **Do not forget to check for these values** ## Status Latitude Navigation ST_LAT_NAVI ### Possible Values -180° ... +180° ### Signal type 32 Bit Signed Integer (Byte 4 ... Byte 7) ### Invalid Data Invalid-Value: 80 00 00 00 Signal not available value: 7F FF FF FF and FF FF FF FF # Tests Use the rake file in the "ppc" folder to build your project and run the tests ## Building the project execute `rake build` from this directory ## Running the tests execute `rake run` from this directory