GetPerReg

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

Prototype

GetPerReg (reg)

Description

Get peripheral register reg (8 bit)

Return
The value of the register

Code Example

The following code example uses the GetPerReg function.

The SMK900.evi file used for this example can be downloaded at the bottom of this page.
/* Example Code
* GetPerReg/SetPerReg
*
* get reg, val
* get valInit
*
* return valInit and
* if useParams
*	new reg of Periph
* else
* 	0x01 (new reg == val) or 0x00 (new reg != val)
* on 16 bits
*
* example VMExecuteCmd:
* cmd: 															   |reg      |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 reg, 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;
		reg=GetBuffer_16(1);
		val=(GetBuffer_U8(3)&0x01);
	}else{	
		useParams=false;
		reg=0;
		val=0;
	}
	valTmp=GetPerReg(reg);
	SetPerReg(reg,val);
	Delay(100);
	
	SetBuffer(0,valTmp,1);
	valTmp=GetPerReg(reg);
	if(useParams){
		SetBuffer(1,valTmp,1);
		//Send(2);
	}else{
		if(valTmp==val){
			result=1;
		}else{
			result=0;
		}
		SetBuffer(1,result,1);
		//Send(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: 87
Go to Top