There was a problem with your SQL connection - Please contact the administrator
Prototype
ShiftLeftBuffer_U32 (r, shLeft)
Description
Divide the values of two int32 stored in the buffer.
r «= arithShLeft (assumes uint32); note that shLeft CAN be <0 in which case it shifts r right buffer[r] <<= r2;
Return
Nothing
Code Example
The following code example uses the ShiftLeftBuffer_U32 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 | /* Example Code * ShiftLeftBuffer_U32 * * get buffer index r and shLeft * set buffer in memory * shiftLeft buffer[r] by shLeft * if params used * return result of shiftLeft on 32 bits * else * return 0x00 (shift not ok) or 0x01 (shift ok) on 8 bits * * example VMExecuteCmd: * cmd: |r |shLeft |buffer * 0xfb 0x0e 0x00 0x0c 0x00 0x0e [0x?? 0x?? 0x?? = macAdress] 0x00 0x00 0x04 0x00 0x12 0x34 0x56 0x78 * rsp: 0xfb 0x08 0x00 0x2d 0x00 0xe1 0x1e 0x20 0x41 0x63 0x85 * cmd: |r |shLeft |buffer * 0xfb 0x0e 0x00 0x0c 0x00 0x0e [0x?? 0x?? 0x?? = macAdress] 0x00 0x00 0xfc 0xff 0x21 0x43 0x65 0x87 * rsp: 0xfb 0x08 0x00 0x2d 0x00 0xe1 0x1e 0x32 0x54 0x76 0x08 */ #include "SMK900.evi" #define SENSORCODE 0x01 function exec_aircmd(){ local rxLen; local useParams; local idx,shift; local i; local result; rxLen=GetAirBuf(0, 0, 20); if (rxLen>=9){ // 1 byte for paketID + 8 bytes of payload (4 bytes for buffer indexes and minimum 4 bytes for buffer) useParams= true ; idx=GetBuffer_16(1); shift=GetBuffer_16(3); for (i=5;i<rxLen;i++){ SetBuffer(i-5,GetBuffer_S8(i),1); } } else { useParams= false ; idx=0; shift=-4; SetBuffer_16(0,0x4321); SetBuffer_16(2,0x8765); } ShiftLeftBuffer_U32(idx,shift); if (useParams){ SetBuffer_16(0,GetBuffer_16(idx)); SetBuffer_16(2,GetBuffer_16(idx+2)); Send(4); } else { if (GetBuffer_16(idx+2)==0x0876&&GetBuffer_16(idx)==0x5432){ result = 1; } else { result = 0; } SetBuffer(0,result,1); Send(1); } } function main() { local execType; execType = GetExecType(); if (execType==MESHEXECTYPE_AIRCMD_bm){ exec_aircmd(); } } |