package com.firstbuild.androidapp;
import android.content.Context;
import android.text.TextUtils;
import android.util.Log;
import java.util.ArrayList;
/**
* Created by hans on 16. 5. 31..
*/
public class OpalValues {
private static final String TAG = OpalValues.class.getSimpleName();
// !!! MAKE SURE TO UPDATE THIS HARDCODED VALUE WHEN CHANGING IMAGE FILE IN \ASSET FOLDER !!!
// HEXA DECIMAL VALUE
public static final String LATEST_OPAL_BLE_FIRMWARE_VERSION = "01040000";
public static final String LATEST_OPAL_FIRMWARE_VERSION = "01070510";
public static final String LATEST_OPAL_BLE_FIRMWARE_NAME = "opal_ble.bin.signed.01.04.00.00.ota";
public static final String LATEST_OPAL_FIRMWARE_NAME = "GE8868_01070510_PPR5.bin.ota";
// BLE Service UUID
public static final String OPAL_BLE_SERVICE_UUID = "3E6763C5-9429-40CC-909E-BEBF8C7487BE";
public static final String OPAL_OP_STATE_UUID = "097A2751-CA0D-432F-87B5-7D2F31E45551";
public static final String OPAL_OP_MODE_UUID = "79994230-4B04-40CD-85C9-02DD1A8D4DD0";
public static final String OPAL_LIGHT_UUID = "37988F00-EA39-4A2D-9983-AFAD6535C02E";
public static final String OPAL_CLEAN_CYCLE_UUID = "EFE4BD77-0600-47D7-B3F6-DC81AF0D9AAF";
public static final String OPAL_TIME_SYNC_UUID = "ED9E0784-FBF1-47F4-AFE2-D439A6C207FC";
public static final String OPAL_SET_SCHEDULE_UUID = "9E1AE873-CB5E-4485-9884-5C5A3AD60E47";
public static final String OPAL_ENABLE_DISABLE_SCHEDULE_UUID = "B45163B3-1092-4725-95DC-1A43AC4A9B88";
public static final String OPAL_IMG_TYPE_UUID = "5EA370C7-2059-41DB-9999-36527B43A4B4";
public static final String OPAL_FIRMWARE_VERSION_CHAR_UUID = "CF88A5B6-6687-4F14-8E21-BB9E78A40ECC"; // Firmware Version
public static final String OPAL_UPDATE_PROGRESS_UUID = "14FF6DFB-36FA-4456-927D-759E1A9A8446";
public static final String OPAL_ERROR_CHAR_UUID = "5BCBF6B1-DE80-94B6-0F4B-99FB984707B6";
public static final String OPAL_TEMPERATURE_CHAR_UUID = "BD205030-B5CE-4847-B78D-83BFF1450A6B";
public static final String OPAL_FILTER_INSTALL_CHAR_UUID = "9BFDF2DD-E92C-468C-996B-F2EB95AA9325";
public static final String OPAL_PUMP_CYCLE_CHAR_UUID = "6AF78DF8-629C-490E-9D42-100E84915753";
// OTA Upgrade Service UUID
public static final String OPAL_OTA_UPGRADE_SERVICE_UUID = "E936877A-8DD0-FAA7-B648-F46ACDA1F27B";
public static final String OPAL_OTA_CONTROL_COMMAND_CHAR_UUID = "4FB34AB1-6207-E5A0-484F-E24A7F638FFF";
public static final String OPAL_IMAGE_DATA_CHAR_UUID = "78282AE5-3060-C3B6-7D49-EC74702414E5";
public static final String OPAL_OTA_BT_VERSION_CHAR_UUID = "318DB1F5-67F1-119B-6A41-1EECA0C744CE"; //Bluetooth Version Char
// OP State Char , Permission > Read only , Property > Read/Notify
public static final byte OPAL_STATE_IDLE = 0x00;
public static final byte OPAL_STATE_ICE_MAKING = 0x01;
public static final byte OPAL_STATE_ADD_WATER = 0x02;
public static final byte OPAL_STATE_ICE_FULL = 0x03;
public static final byte OPAL_STATE_CLEANING = 0x04;
// OP Mode Char , Permission > Read/Write , Property > Read/Write/Notify
// Clean mode cannot set by app
public static final byte OPAL_MODE_OFF = 0x00;
public static final byte OPAL_MODE_ICE_MAKING = 0x01;
public static final byte OPAL_MODE_CLEAN = 0x02;
// Light Char , Permission > Read/Write , Property > Read/Write/Notify
// Available during Opal is on
public static final byte OPAL_DAY_TIME_LIGHT = 0x00;
public static final byte OPAL_NIGHT_TIME_LIGHT = 0x01;
//Clean cycle Char, Permission > Read only , Property > Read/Notify
public static final byte OPAL_CYCLE_ONE = 0x00;
public static final byte OPAL_CYCLE_TWO = 0x01;
public static final byte OPAL_CYCLE_THREE = 0x02;
public static final byte OPAL_CYCLE_FOUR = 0x03;
public static final byte OPAL_CYCLE_FIVE = 0x04;
// Enable/Disable schedule , Permission > Read/Write , Property > Read/Write
public static final byte OPAL_DISABLE_SCHEDULE = 0x00;
public static final byte OPAL_ENABLE_SCHEDULE = 0x01;
// Image Type char , Permission > Read/Write , Property > Read/Write
public static final byte OPAL_BLE_IMAGE_TYPE = 0x00;
public static final byte OPAL_OPAL_IMAGE_TYPE = 0x01;
public static final byte OPAL_CONTROL_COMMAND_PREPARE_DOWNLOAD = 0x01;
// App can abort the OTA process anytime by writing 0x07 to OTA command, data[0] = 0x07.
public static final byte OPAL_CONTROL_COMMAND_ABORT_DOWNLOAD = 0x07;
// BLE return code
public static final String OPAL_BLE_RET_SUCCESS = "0x00";
public static final String OPAL_BLE_RET_OUT_OF_RANGE = "0x80";
public static final String OPAL_BLE_RET_WRITE_NOT_ALLOWED = "0x90";
public static final String OPAL_BLE_RET_ILLEGAL_OTA_STATE_TRANSITION = "0xE0";
// Target device Opal's name
public static final String TARGET_DEVICE_NAME = "OPAL Bluetooth";
public static String getStatusText(Context c, byte value) {
String ret = "";
switch(value) {
case OPAL_STATE_IDLE:
ret = c.getString(R.string.opal_status_idle);
break;
case OPAL_STATE_ICE_MAKING:
ret = c.getString(R.string.opal_status_ice_making);
break;
case OPAL_STATE_ADD_WATER:
ret = c.getString(R.string.opal_status_add_water);
break;
case OPAL_STATE_ICE_FULL:
ret = c.getString(R.string.opal_status_ice_full);
break;
case OPAL_STATE_CLEANING:
ret = c.getString(R.string.opal_status_cleaning);
break;
default:
Log.d(TAG, "getStatusText : byte value : " + value);
break;
}
return ret;
}
public static void convertEndian() {
ArrayList<String> uuidList = new ArrayList<>();
uuidList.add(OPAL_BLE_SERVICE_UUID);
uuidList.add(OPAL_OP_STATE_UUID);
uuidList.add(OPAL_OP_MODE_UUID);
uuidList.add(OPAL_LIGHT_UUID);
uuidList.add(OPAL_CLEAN_CYCLE_UUID);
uuidList.add(OPAL_TIME_SYNC_UUID);
uuidList.add(OPAL_SET_SCHEDULE_UUID);
uuidList.add(OPAL_ENABLE_DISABLE_SCHEDULE_UUID);
uuidList.add(OPAL_IMG_TYPE_UUID);
uuidList.add(OPAL_FIRMWARE_VERSION_CHAR_UUID);
uuidList.add(OPAL_UPDATE_PROGRESS_UUID);
uuidList.add(OPAL_ERROR_CHAR_UUID);
uuidList.add(OPAL_TEMPERATURE_CHAR_UUID);
uuidList.add(OPAL_FILTER_INSTALL_CHAR_UUID);
uuidList.add(OPAL_PUMP_CYCLE_CHAR_UUID);
uuidList.add(OPAL_OTA_UPGRADE_SERVICE_UUID);
uuidList.add(OPAL_OTA_CONTROL_COMMAND_CHAR_UUID);
uuidList.add(OPAL_IMAGE_DATA_CHAR_UUID);
uuidList.add(OPAL_OTA_BT_VERSION_CHAR_UUID);
StringBuilder builder = new StringBuilder();
int start;
int end;
int delimiterLocation = 0;
for(String s : uuidList) {
s = s.replaceAll("-", "");
for(int i = s.length() -1 ; i >= 0 ; i = i - 2) {
start = i-1;
end = i+1;
if(start < 0) {
start = 0;
}
builder.append(s.substring(start, end));
delimiterLocation++;
if(delimiterLocation == 4 || delimiterLocation == 6
|| delimiterLocation == 8 || delimiterLocation == 10 ) {
builder.append("-");
}
}
Log.d("HANS", "reversed String : " + builder.toString());
builder.setLength(0);
delimiterLocation = 0;
}
}
}