There was a problem with your SQL connection - Please contact the administrator
Prototype
Math2Var_I64 (r1, r2, funcId)
Description
Math on two int64 variables.
r1 = operation(r1, r2);
Return
Nothing
Code Example
The following code example uses the Math2Var_I64 function.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 | /* Example Code * Math2Var_I64 * Calculator for atan2: https://planetcalc.com/7954/ * * * get buffer indexes r1, r2 and funcId * set buffer in memory * operate * return 0x00 (operation not ok) or 0x01 (operation ok) on 8 bits */ #include "SMK900.evi" #define SENSORCODE 0x01 function exec_aircmd(){ local rxLen; local useParams; local r1,r2,funcId,val0,val1,val2,val3,val4,val5,val6,val7; local i; local result; rxLen=GetAirBuf(0, 0, 20); /*if(rxLen>=22){ // 1 byte for paketID + 21 bytes of payload (5 bytes for params and 16 bytes for buffer) useParams=true; r1=GetBuffer_16(1); r2=GetBuffer_16(3); funcId=GetBuffer_U8(5); for(i=6;i<rxLen;i++){ SetBuffer(i-6,GetBuffer_S8(i),1); } }else{*/ useParams= false ; r1=0; r2=8; funcId=0; // add val0=0xFFFF; // -1 val1=0xFFFF; val2=0xFFFF; val3=0xFFFF; val4=0x000A; // 10 val5=0x0000; val6=0x0000; val7=0x0000; SetBuffer_16(0,val0); SetBuffer_16(2,val1); SetBuffer_16(4,val2); SetBuffer_16(6,val3); SetBuffer_16(8,val4); SetBuffer_16(10,val5); SetBuffer_16(12,val6); SetBuffer_16(14,val7); /*}*/ Math2Var_I64(r1,r2,funcId); /*if(useParams){ SetBuffer_16(0,GetBuffer_16(r1)); SetBuffer_16(2,GetBuffer_16(r1+2)); Send(4); }else{*/ result = 0; if (GetBuffer_16(6)==0x0000&&GetBuffer_16(4)==0x0000&&GetBuffer_16(2)==0x0000&&GetBuffer_16(0)==0x0009){ //add(-1,10) SetBuffer_16(0,val0);SetBuffer_16(2,val1);SetBuffer_16(4,val2);SetBuffer_16(6,val3); SetBuffer_16(8,val4);SetBuffer_16(10,val5);SetBuffer_16(12,val6);SetBuffer_16(14,val7); funcId=1; Math2Var_I64(0,8,funcId); // substract if (GetBuffer_16(6)==0xFFFF&&GetBuffer_16(4)==0xFFFF&&GetBuffer_16(2)==0xFFFF&&GetBuffer_16(0)==0xFFF5){ //substract(-1,10) SetBuffer_16(0,val0);SetBuffer_16(2,val1);SetBuffer_16(4,val2);SetBuffer_16(6,val3); SetBuffer_16(8,val4);SetBuffer_16(10,val5);SetBuffer_16(12,val6);SetBuffer_16(14,val7); funcId=2; Math2Var_I64(0,8,funcId); // multiply if (GetBuffer_16(6)==0xFFFF&&GetBuffer_16(4)==0xFFFF&&GetBuffer_16(2)==0xFFFF&&GetBuffer_16(0)==0xFFF6){ //multiply(-1,10) SetBuffer_16(0,0xFFEC);SetBuffer_16(2,0xFFFF);SetBuffer_16(4,0xFFFF);SetBuffer_16(6,0xFFFF); SetBuffer_16(8,val4);SetBuffer_16(10,val5);SetBuffer_16(12,val6);SetBuffer_16(14,val7); funcId=3; Math2Var_I64(0,8,funcId); // divide if (GetBuffer_16(6)==0xFFFF&&GetBuffer_16(4)==0xFFFF&&GetBuffer_16(2)==0xFFFF&&GetBuffer_16(0)==0xFFFE){ //divide(-20,10) SetBuffer_16(0,val4);SetBuffer_16(2,val5);SetBuffer_16(4,val6);SetBuffer_16(6,val7); SetBuffer_16(8,0xFFFD);SetBuffer_16(10,0xFFFF);SetBuffer_16(12,0xFFFF);SetBuffer_16(14,0xFFFF); funcId=4; Math2Var_I64(0,8,funcId); // modulo if (GetBuffer_16(6)==0x0000&&GetBuffer_16(4)==0x0000&&GetBuffer_16(2)==0x0000&&GetBuffer_16(0)==0x0001){ //modulo(10,-3) SetBuffer_16(0,val0);SetBuffer_16(2,val1);SetBuffer_16(4,val2);SetBuffer_16(6,val3); SetBuffer_16(8,0x0002);SetBuffer_16(10,0x0000);SetBuffer_16(12,0x0000);SetBuffer_16(14,0x0000); funcId=5; Math2Var_I64(0,8,funcId); // shiftleft if (GetBuffer_16(6)==0xFFFF&&GetBuffer_16(4)==0xFFFF&&GetBuffer_16(2)==0xFFFF&&GetBuffer_16(0)==0xFFFC){ //shiftleft(-1,2) SetBuffer_16(0,0xFFEC);SetBuffer_16(2,0xFFFF);SetBuffer_16(4,0xFFFF);SetBuffer_16(6,0xFFFF); SetBuffer_16(8,val4);SetBuffer_16(10,val5);SetBuffer_16(12,val6);SetBuffer_16(14,val7); funcId=6; Math2Var_I64(0,8,funcId); // atan2 if (GetBuffer_16(6)==0xFFFF&&GetBuffer_16(4)==0xFFFF&&GetBuffer_16(2)==0xFFFF&&GetBuffer_16(0)==0xFFFF){ //atan2(-20,10) result = 1; /* SetBuffer(0,result,1); Send(1); */ SetBuffer(8,result,1); Send(9); } } } } } } /*}*/ if (result==0){ /* SetBuffer(0,result,1); SetBuffer(1,funcId,1); Send(2); */ SetBuffer(8,result,1); SetBuffer(9,funcId,1); Send(10); } } } function main() { local execType; execType = GetExecType(); if (execType==MESHEXECTYPE_AIRCMD_bm){ exec_aircmd(); } } |