Prototype
SetPinDir (pinId, dir)
Description
Set the direction of a pin.
Return
Nothing
Code Example
The following code example uses the SetPinDir function.
The SMK900.evi file used for this example can be downloaded at the bottom of this page.
/* Example Code
* GetPinDir/SetPinDir
*
* get pinId, val
* get valInit
*
* return valInit and
* if useParams
* new dir of PIN
* else
* 0x01 (new dir == val) or 0x00 (new dir != val)
* on 16 bits
*
* example VMExecuteCmd:
* cmd: |pinId |val
* 0xfb 0x0e 0x00 0x0c 0x00 0x0e [0x?? 0x?? 0x?? = macAdress] 0x00 0x00 0x01
* rsp: 0xfb 0x0a 0x00 0x2d 0x00 0xe1 0x1e 0x01
*/
#include "SMK900.evi"
#define SENSORCODE 0x01
function exec_aircmd(){
local rxLen;
local useParams;
local pinId, valTmp, val;
local i;
local result;
rxLen=GetAirBuf(0, 0, 20);
if(rxLen>=4){ // 1 byte for paketID + 3 bytes of payload (3 bytes for param)
useParams=true;
pinId=GetBuffer_16(1);
val=(GetBuffer_U8(3)&0x01);
}else{
useParams=false;
pinId=_PA0;
val=0;
}
valTmp=GetPinDir(pinId);
SetPinDir(pinId,val);
Delay(100);
SetBuffer(0,valTmp,1);
valTmp=GetPinDir(pinId);
if(useParams){
SetBuffer(1,valTmp,1);
}else{
if(valTmp==val){
result=1;
}else{
result=0;
}
SetBuffer(1,result,1);
}
Send(2);
}
function main()
{
local execType;
execType = GetExecType();
if(execType==MESHEXECTYPE_AIRCMD_bm){
exec_aircmd();
}
}