package kr.co.icontrols.v40ioctl; import android.util.Log; import com.util.LogUtil; import kr.co.icontrols.wallpadsupport.Version; public class V40IOInterface2 { private static final String TAG = "V40IOInterface2"; public native int WpdInterfaceOpen(); public native int WpdInterfaceClose(); public native int WpdInterfaceControl(int cmd, int arg); public native void SetMacAddr(String mac); public native void IpAddr(String ip); public native void GatewayIp(String gw); public native void NetMask(String mask); public native void NetAll(String ip, String mask, String gw, String mac); public native void LiveUpdate(); public native void UsbUpdate(); public native int LcdWakeUp(); public native void Reboot(int sec); public native void NetDns1(String dns); public native void NetDns2(String dns); public native int sensorread(); static { System.loadLibrary("wpd_v40interface2-jni"); } public void setV40Reboot(int sec) { Log.i(TAG, "V40 Device will reboot : " +sec + " second !!!"); Reboot(sec); } /* #define TYPE_GPIO_CMD (0xFF << 8) #define TYPE_GPIO2_CMD (0xFE << 8) #define IOCTL_LEDNEMR_ONOFF (TYPE_GPIO_CMD|0x02) //LED on/off #define IOCTL_EMR_TYPE (TYPE_GPIOS_CMD|0x02) //비상기능 타입 #define IOCTL_EMR_OFF (TYPE_GPIOS_CMD|0x03) //비상종료 #define IOCTL_PROX_THR (TYPE_GPIOS_CMD|0x04) //근접센서 감도. */ public static final int TYPE_GPIO_CMD = (0xFF << 8); public static final int TYPE_GPIO2_CMD = (0xFE << 8); public static final int IOCTL_LEDNEMR_ONOFF = (TYPE_GPIO_CMD | 0x02); public static final int IOCTL_EMR_TYPE = (TYPE_GPIO2_CMD | 0x02); public static final int IOCTL_EMR_OFF = (TYPE_GPIO2_CMD | 0x03); public static final int IOCTL_PROX_THR = (TYPE_GPIO2_CMD | 0x04); public void Ctrl_CloseSensor(int value) { if (!(value >= 0 && value <= 15)) { Log.d(TAG, "[Ctrl_CloseSensor] Value Range Error : " + value); return; } Log.d(TAG, "[Ctrl_CloseSensor] Change Close Value : " + value); WpdInterfaceOpen(); WpdInterfaceControl(IOCTL_PROX_THR, value); WpdInterfaceClose(); } public void Ctrl_LCD_WakeUp() { Log.d(TAG, "[Ctrl_LCD_WakeUp] LCD Wake Up RUN"); WpdInterfaceOpen(); LcdWakeUp(); WpdInterfaceClose(); } public void Emergency_Type_Set() { WpdInterfaceOpen(); if (Version.getModelType() == Version.MODEL_TYPE.IHN_D101 || Version.getModelType() == Version.MODEL_TYPE.IHN_D101_I || Version.getModelType() == Version.MODEL_TYPE.IHN_D101K || Version.getModelType() == Version.MODEL_TYPE.IHN_D101K_I || Version.getModelType() == Version.MODEL_TYPE.IHN_D101_I_OCF) { Log.d(TAG, "[Emergency_Type_Set] V40 - D101 mode"); WpdInterfaceControl(IOCTL_EMR_TYPE, 0); } else { Log.d(TAG, "[Emergency_Type_Set] A20 - Previous mode"); WpdInterfaceControl(IOCTL_EMR_TYPE, 1); } WpdInterfaceClose(); } public void Emergency_LED_On() { Log.d(TAG, "[Emergency_LED_On] Emergency LED On&Off START"); WpdInterfaceOpen(); WpdInterfaceControl(IOCTL_LEDNEMR_ONOFF, 1); WpdInterfaceClose(); } public void Emergency_LED_Off() { Log.d(TAG, "[Emergency_LED_On] Emergency LED On&Off END"); WpdInterfaceOpen(); WpdInterfaceControl(IOCTL_LEDNEMR_ONOFF, 0); if (Version.getModelType() != Version.MODEL_TYPE.IHN_D101 && Version.getModelType() != Version.MODEL_TYPE.IHN_D101_I && Version.getModelType() != Version.MODEL_TYPE.IHN_D101K && Version.getModelType() != Version.MODEL_TYPE.IHN_D101K_I && Version.getModelType() != Version.MODEL_TYPE.IHN_D101_I_OCF) { WpdInterfaceControl(IOCTL_EMR_OFF, 0); } WpdInterfaceClose(); } public void Emergency_LED_blink() { } public int DoControl(int cmd, int arg) { WpdInterfaceOpen(); int ctr = WpdInterfaceControl( cmd, arg); WpdInterfaceClose(); return ctr; } public void DoorLockControl(boolean ctr) { try { if (WpdInterfaceOpen() >= 0) { WpdInterfaceControl(0xFF09, (ctr)?1:0); WpdInterfaceClose(); } } catch (RuntimeException re) { LogUtil.errorLogInfo("", TAG, re); } catch (Exception e) { //e.printStackTrace(); LogUtil.errorLogInfo("", TAG, e); } } }