
//ңذ

unit RFKey
{
	public const uint16 ID = 0;

	//[i] linkinterface_RFreceive receive;
	public link unit receive {}
	
	#include "$run$.txt"
	
	//---------------------------------------------------
	//[i] var_uint16 OS_EventFlag;
	public uint16 OS_EventFlag;
	
	//[i] event key0_press_event;
	//[i] event key0_up_event;
	
	//[i] event key1_press_event;
	//[i] event key1_up_event;
	
	//[i] event key2_press_event;
	//[i] event key2_up_event;
	
	//[i] event key3_press_event;
	//[i] event key3_up_event;
	
	//---------------------------------------------------
	//[i] var_bool key0_press;
	public bool key0_press;
	//[i] var_bool key1_press;
	public bool key1_press;
	//[i] var_bool key2_press;
	public bool key2_press;
	//[i] var_bool key3_press;
	public bool key3_press;
	
	//---------------------------------------------------
	//[i] var_uint8 OS_time;
	public uint8 OS_time;
	
	bit last_key0_press;
	
	bit last_key1_press;
	
	bit last_key2_press;
	
	bit last_key3_press;
	
	//------------------------------------------------------------
	//[i] function_void OS_init;
	public void OS_init()
	{
		KEY0_DIR = 0;
		KEY0_OUT = 1;
		
		KEY1_DIR = 0;
		KEY1_OUT = 1;
		
		KEY2_DIR = 0;
		KEY2_OUT = 1;
		
		KEY3_DIR = 0;
		KEY3_OUT = 1;
		
		OS_time = 50;
		OS_EventFlag = 0;
		
		last_key0_press = 0;
		last_key1_press = 0;
		last_key2_press = 0;
		last_key3_press = 0;
	}
	//------------------------------------------------------------
	//[i] function_void OS_run;
	public void OS_run()
	{
		//0
		bit key0_down = KEY0_IN & ~last_key0_press;
		bit key0_up = ~KEY0_IN & last_key0_press;
		
		if( key0_down == 1 ) OS_EventFlag.0(bit) = 1;
		if( key0_up == 1 ) OS_EventFlag.1(bit) = 1;
		
		last_key0_press = KEY0_IN;
		
		if( KEY0_IN == 1 ) {
			key0_press = true;
		} else {
			key0_press = false;
		}
		//1
		bit key1_down = KEY1_IN & ~last_key1_press;
		bit key1_up = ~KEY1_IN & last_key1_press;
		
		if( key1_down == 1 ) OS_EventFlag.2(bit) = 1;
		if( key1_up == 1 ) OS_EventFlag.3(bit) = 1;
		
		last_key1_press = KEY1_IN;
		
		if( KEY1_IN == 1 ) {
			key1_press = true;
		} else {
			key1_press = false;
		}
		//2
		bit key2_down = KEY2_IN & ~last_key2_press;
		bit key2_up = ~KEY2_IN & last_key2_press;
		
		if( key2_down == 1 ) OS_EventFlag.4(bit) = 1;
		if( key2_up == 1 ) OS_EventFlag.5(bit) = 1;
		
		last_key2_press = KEY2_IN;
		
		if( KEY2_IN == 1 ) {
			key2_press = true;
		} else {
			key2_press = false;
		}
		//3
		bit key3_down = KEY3_IN & ~last_key3_press;
		bit key3_up = ~KEY3_IN & last_key3_press;
		
		if( key3_down == 1 ) OS_EventFlag.6(bit) = 1;
		if( key3_up == 1 ) OS_EventFlag.7(bit) = 1;
		
		last_key3_press = KEY3_IN;
		
		if( KEY3_IN == 1 ) {
			key3_press = true;
		} else {
			key3_press = false;
		}
	}
}





















