diff --git a/cubesatsim/cubesatsim.ino b/cubesatsim/cubesatsim.ino index 03a8886f..df5d7751 100644 --- a/cubesatsim/cubesatsim.ino +++ b/cubesatsim/cubesatsim.ino @@ -123,4 +123,42 @@ void loop() { } +int encodeA(short int *b, int index, int val) { +// printf("Encoding A\n"); + b[index] = val & 0xff; + b[index + 1] = (short int) ((b[index + 1] & 0xf0) | ((val >> 8) & 0x0f)); + return 0; +} + +int encodeB(short int *b, int index, int val) { +// printf("Encoding B\n"); + b[index] = (short int) ((b[index] & 0x0f) | ((val << 4) & 0xf0)); + b[index + 1] = (val >> 4 ) & 0xff; + return 0; +} +int twosToInt(int val,int len) { // Convert twos compliment to integer +// from https://www.raspberrypi.org/forums/viewtopic.php?t=55815 + + if(val & (1 << (len - 1))) + val = val - (1 << len); + + return(val); +} + +float rnd_float(double min,double max) { // returns 2 decimal point random number + + int val = (rand() % ((int)(max*100) - (int)(min*100) + 1)) + (int)(min*100); + float ret = ((float)(val)/100); + + return(ret); +} + +float toAprsFormat(float input) { +// converts decimal coordinate (latitude or longitude) to APRS DDMM.MM format + int dd = (int) input; + int mm1 = (int)((input - dd) * 60.0); + int mm2 = (int)((input - dd - (float)mm1/60.0) * 60.0 * 60.0); + float output = dd * 100 + mm1 + (float)mm2 * 0.01; + return(output); +}