SetPinDir

Estimated reading time: 1 min
Go back to the VM operations list

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();
	}
}

Go back to the VM operations list

Attachments

Was this article helpful?
Dislike 0
Views: 124
Go to Top