From 4d134d43c3755d2fdeebf9015862bc2f2264bb98 Mon Sep 17 00:00:00 2001 From: Jeffrey Martin <jmartin5229@mail.kvcc.edu> Date: Mon, 9 Nov 2015 13:57:34 -0500 Subject: [PATCH] Add Database with Thermo Table --- .../broadcom/app/wicedsense/MainActivity.java | 405 +++++++++++------- .../app/wicedsense/ThermoBaseHelper.java | 38 ++ .../app/wicedsense/WicedDBSchema.java | 18 + 3 files changed, 299 insertions(+), 162 deletions(-) create mode 100644 WicedSense/app/src/main/java/com/broadcom/app/wicedsense/ThermoBaseHelper.java create mode 100644 WicedSense/app/src/main/java/com/broadcom/app/wicedsense/WicedDBSchema.java diff --git a/WicedSense/app/src/main/java/com/broadcom/app/wicedsense/MainActivity.java b/WicedSense/app/src/main/java/com/broadcom/app/wicedsense/MainActivity.java index 0732cad..25204c0 100644 --- a/WicedSense/app/src/main/java/com/broadcom/app/wicedsense/MainActivity.java +++ b/WicedSense/app/src/main/java/com/broadcom/app/wicedsense/MainActivity.java @@ -17,6 +17,7 @@ package com.broadcom.app.wicedsense; import java.util.ArrayList; +import java.util.Calendar; import java.util.Iterator; import com.broadcom.app.ledevicepicker.DevicePicker; import com.broadcom.app.ledevicepicker.DevicePickerActivity; @@ -38,10 +39,12 @@ import android.app.FragmentTransaction; import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothDevice; import android.content.BroadcastReceiver; +import android.content.ContentValues; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; +import android.database.sqlite.SQLiteDatabase; import android.net.Uri; import android.os.Bundle; import android.os.Handler; @@ -114,9 +117,9 @@ public class MainActivity extends Activity implements OnLicenseAcceptListener, BluetoothAdapter.ERROR); switch (btState) { - case BluetoothAdapter.STATE_TURNING_OFF: - exitApp(); - break; + case BluetoothAdapter.STATE_TURNING_OFF: + exitApp(); + break; } } }); @@ -129,23 +132,23 @@ public class MainActivity extends Activity implements OnLicenseAcceptListener, public boolean handleMessage(Message msg) { switch (msg.what) { - // These events run on the mUiHandler on the UI Main Thread - case COMPLETE_INIT: - initResourcesAndResume(); - break; - case PROCESS_EVENT_DEVICE_UNSUPPORTED: - Toast.makeText(getApplicationContext(), R.string.error_unsupported_device, - Toast.LENGTH_SHORT).show(); - break; - case PROCESS_CONNECTION_STATE_CHANGE_UI: - updateConnectionStateWidgets(); - break; - case PROCESS_BATTERY_STATUS_UI: - updateBatteryLevelWidget(msg.arg1); - break; - case PROCESS_SENSOR_DATA_ON_UI: - processSensorData((byte[]) msg.obj); - break; + // These events run on the mUiHandler on the UI Main Thread + case COMPLETE_INIT: + initResourcesAndResume(); + break; + case PROCESS_EVENT_DEVICE_UNSUPPORTED: + Toast.makeText(getApplicationContext(), R.string.error_unsupported_device, + Toast.LENGTH_SHORT).show(); + break; + case PROCESS_CONNECTION_STATE_CHANGE_UI: + updateConnectionStateWidgets(); + break; + case PROCESS_BATTERY_STATUS_UI: + updateBatteryLevelWidget(msg.arg1); + break; + case PROCESS_SENSOR_DATA_ON_UI: + processSensorData((byte[]) msg.obj); + break; } return true; } @@ -192,26 +195,26 @@ public class MainActivity extends Activity implements OnLicenseAcceptListener, */ private boolean initResourcesAndResume() { switch (mInitState) { - case 0: - // Check if license accepted. If not, prompt user - if (!mLicense.checkLicenseAccepted(getFragmentManager())) { - return false; - } - mInitState++; - case 1: - // Check if BT is on, If not, prompt user - if (!BluetoothEnabler.checkBluetoothOn(this)) { - return false; - } - mInitState++; - SenseManager.init(this); - case 2: - // Check if sense manager initialized. If not, keep waiting - if (waitForSenseManager()) { - return false; - } - mInitState = -1; - checkDevicePicked(); + case 0: + // Check if license accepted. If not, prompt user + if (!mLicense.checkLicenseAccepted(getFragmentManager())) { + return false; + } + mInitState++; + case 1: + // Check if BT is on, If not, prompt user + if (!BluetoothEnabler.checkBluetoothOn(this)) { + return false; + } + mInitState++; + SenseManager.init(this); + case 2: + // Check if sense manager initialized. If not, keep waiting + if (waitForSenseManager()) { + return false; + } + mInitState = -1; + checkDevicePicked(); } mSenseManager.registerEventCallbackHandler(mSensorDataEventHandler); @@ -562,25 +565,25 @@ public class MainActivity extends Activity implements OnLicenseAcceptListener, @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { - case R.id.action_connectdisconnect: - mConnectDisconnectPending = true; - invalidateOptionsMenu(); - doConnectDisconnect(); - return true; - case R.id.action_pick: - launchDevicePicker(); - return true; - case R.id.update_fw: - checkForFirmwareUpdate(); - return true; - case R.id.get_fw_info: - getFirmwareInfo(); - return true; - case R.id.action_settings: - // Launch setttings menu - Intent i = new Intent(this, SettingsActivity.class); - startActivity(i); - return true; + case R.id.action_connectdisconnect: + mConnectDisconnectPending = true; + invalidateOptionsMenu(); + doConnectDisconnect(); + return true; + case R.id.action_pick: + launchDevicePicker(); + return true; + case R.id.update_fw: + checkForFirmwareUpdate(); + return true; + case R.id.get_fw_info: + getFirmwareInfo(); + return true; + case R.id.action_settings: + // Launch setttings menu + Intent i = new Intent(this, SettingsActivity.class); + startActivity(i); + return true; } return false; } @@ -646,44 +649,44 @@ public class MainActivity extends Activity implements OnLicenseAcceptListener, @Override public boolean handleMessage(Message msg) { switch (msg.what) { - case SenseManager.EVENT_DEVICE_UNSUPPORTED: - mUiHandler.sendEmptyMessage(PROCESS_EVENT_DEVICE_UNSUPPORTED); - break; - case SenseManager.EVENT_CONNECTED: - mUiHandler.sendEmptyMessage(PROCESS_CONNECTION_STATE_CHANGE_UI); - onConnected(); - break; - case SenseManager.EVENT_DISCONNECTED: - mUiHandler.sendEmptyMessage(PROCESS_CONNECTION_STATE_CHANGE_UI); - break; - case SenseManager.EVENT_BATTERY_STATUS: - mUiHandler.sendMessage(mUiHandler.obtainMessage(PROCESS_BATTERY_STATUS_UI, msg.arg1, - msg.arg1)); - break; - case SenseManager.EVENT_SENSOR_DATA: - mUiHandler.sendMessage(mUiHandler.obtainMessage(PROCESS_SENSOR_DATA_ON_UI, msg.obj)); - break; - case SenseManager.EVENT_APP_INFO: - boolean success = msg.arg1 == 1; - OtaAppInfo appInfo = (OtaAppInfo) msg.obj; - if (DBG) { - Log.d(TAG, "EVENT_APP_INFO: success=" + success + ",otaAppInfo=" + appInfo); - } - if (mFirmwareUpdateCheckPending) { - mFirmwareUpdateCheckPending = false; - checkForFirmwareUpdate(appInfo); + case SenseManager.EVENT_DEVICE_UNSUPPORTED: + mUiHandler.sendEmptyMessage(PROCESS_EVENT_DEVICE_UNSUPPORTED); break; - } + case SenseManager.EVENT_CONNECTED: + mUiHandler.sendEmptyMessage(PROCESS_CONNECTION_STATE_CHANGE_UI); + onConnected(); + break; + case SenseManager.EVENT_DISCONNECTED: + mUiHandler.sendEmptyMessage(PROCESS_CONNECTION_STATE_CHANGE_UI); + break; + case SenseManager.EVENT_BATTERY_STATUS: + mUiHandler.sendMessage(mUiHandler.obtainMessage(PROCESS_BATTERY_STATUS_UI, msg.arg1, + msg.arg1)); + break; + case SenseManager.EVENT_SENSOR_DATA: + mUiHandler.sendMessage(mUiHandler.obtainMessage(PROCESS_SENSOR_DATA_ON_UI, msg.obj)); + break; + case SenseManager.EVENT_APP_INFO: + boolean success = msg.arg1 == 1; + OtaAppInfo appInfo = (OtaAppInfo) msg.obj; + if (DBG) { + Log.d(TAG, "EVENT_APP_INFO: success=" + success + ",otaAppInfo=" + appInfo); + } + if (mFirmwareUpdateCheckPending) { + mFirmwareUpdateCheckPending = false; + checkForFirmwareUpdate(appInfo); + break; + } - if (mShowAppInfoDialog) { - mShowAppInfoDialog = false; - if (success) { - OtaAppInfoFragment mOtaAppInfoFragment = OtaAppInfoFragment.createDialog( - mSenseManager.getDevice(), appInfo); - mOtaAppInfoFragment.show(getFragmentManager(), null); + if (mShowAppInfoDialog) { + mShowAppInfoDialog = false; + if (success) { + OtaAppInfoFragment mOtaAppInfoFragment = OtaAppInfoFragment.createDialog( + mSenseManager.getDevice(), appInfo); + mOtaAppInfoFragment.show(getFragmentManager(), null); + } } - } - break; + break; } return true; } @@ -712,85 +715,90 @@ public class MainActivity extends Activity implements OnLicenseAcceptListener, boolean updateView = false; long currentTimeMs = System.currentTimeMillis(); switch (sensorData.length) { - case 19: - if (currentTimeMs - mLastRefreshTimeMs < Settings.REFRESH_INTERVAL_MS) { - return; - } else { - mLastRefreshTimeMs = currentTimeMs; - } + case 19: + if (currentTimeMs - mLastRefreshTimeMs < Settings.REFRESH_INTERVAL_MS) { + return; + } else { + mLastRefreshTimeMs = currentTimeMs; + } - // packet type specifying accelerometer, gyro, magno - offset = 1; - if (SensorDataParser.accelerometerHasChanged(maskField)) { - if (Settings.accelerometerEnabled() && mAccelerometerFrag.isVisible()) { - SensorDataParser.getAccelorometerData(sensorData, offset, values); - mAccelerometerFrag.setValue(mAnimation, values[0], values[1], values[2]); - updateView = true; + // packet type specifying accelerometer, gyro, magno + offset = 1; + if (SensorDataParser.accelerometerHasChanged(maskField)) { + if (Settings.accelerometerEnabled() && mAccelerometerFrag.isVisible()) { + SensorDataParser.getAccelorometerData(sensorData, offset, values); + mAccelerometerFrag.setValue(mAnimation, values[0], values[1], values[2]); + updateView = true; + } + offset += SensorDataParser.SENSOR_ACCEL_DATA_SIZE; } - offset += SensorDataParser.SENSOR_ACCEL_DATA_SIZE; - } - if (SensorDataParser.gyroHasChanged(maskField)) { - if (Settings.gyroEnabled() && mGyroFrag.isVisible()) { - SensorDataParser.getGyroData(sensorData, offset, values); - mGyroFrag.setValue(mAnimation, values[0], values[1], values[2]); - updateView = true; + if (SensorDataParser.gyroHasChanged(maskField)) { + if (Settings.gyroEnabled() && mGyroFrag.isVisible()) { + SensorDataParser.getGyroData(sensorData, offset, values); + mGyroFrag.setValue(mAnimation, values[0], values[1], values[2]); + updateView = true; + } + offset += SensorDataParser.SENSOR_GYRO_DATA_SIZE; } - offset += SensorDataParser.SENSOR_GYRO_DATA_SIZE; - } - if (SensorDataParser.magnetometerHasChanged(maskField)) { - if (Settings.compassEnabled() && mCompassFrag.isVisible()) { - SensorDataParser.getMagnometerData(sensorData, offset, values); - float angle = SensorDataParser.getCompassAngleDegrees(values); - mCompassFrag.setValue(mAnimation, angle, values[0], values[1], values[2]); - updateView = true; + if (SensorDataParser.magnetometerHasChanged(maskField)) { + if (Settings.compassEnabled() && mCompassFrag.isVisible()) { + SensorDataParser.getMagnometerData(sensorData, offset, values); + float angle = SensorDataParser.getCompassAngleDegrees(values); + mCompassFrag.setValue(mAnimation, angle, values[0], values[1], values[2]); + updateView = true; + } + offset += SensorDataParser.SENSOR_MAGNO_DATA_SIZE; } - offset += SensorDataParser.SENSOR_MAGNO_DATA_SIZE; - } - if (updateView && mAnimation != null) { - mAnimation.animate(); - } - break; - case 7: + if (updateView && mAnimation != null) { + mAnimation.animate(); + } + break; + case 7: - if (currentTimeMs - mLastRefreshSlowerTimeMs < Settings.REFRESH_INTERVAL_SLOWER_MS) { - return; - } else { - mLastRefreshSlowerTimeMs = currentTimeMs; - } + if (currentTimeMs - mLastRefreshSlowerTimeMs < Settings.REFRESH_INTERVAL_SLOWER_MS) { + return; + } else { + mLastRefreshSlowerTimeMs = currentTimeMs; + } - // packet type specifying temp, humid, press - offset = 1; - float value = 0; - if (mHumidityFrag.isVisible() && SensorDataParser.humidityHasChanged(maskField)) { - value = SensorDataParser.getHumidityPercent(sensorData, offset); - offset += SensorDataParser.SENSOR_HUMD_DATA_SIZE; - mHumidityFrag.setValue(mAnimationSlower, value); - updateView = true; - } - if (mPressureFrag.isVisible() && SensorDataParser.pressureHasChanged(maskField)) { - value = SensorDataParser.getPressureMBar(sensorData, offset); - offset += SensorDataParser.SENSOR_PRES_DATA_SIZE; - mPressureFrag.setValue(mAnimationSlower, value); - updateView = true; - } + // packet type specifying temp, humid, press + offset = 1; + float value = 0; + if (mHumidityFrag.isVisible() && SensorDataParser.humidityHasChanged(maskField)) { + value = SensorDataParser.getHumidityPercent(sensorData, offset); + mHumidityValue = Float.toString(value); + offset += SensorDataParser.SENSOR_HUMD_DATA_SIZE; + mHumidityFrag.setValue(mAnimationSlower, value); + updateView = true; + } + if (mPressureFrag.isVisible() && SensorDataParser.pressureHasChanged(maskField)) { + value = SensorDataParser.getPressureMBar(sensorData, offset); + mPressureValue = Float.toString(value); + offset += SensorDataParser.SENSOR_PRES_DATA_SIZE; + mPressureFrag.setValue(mAnimationSlower, value); + updateView = true; + } - if (mTemperatureFrag.isVisible() && SensorDataParser.temperatureHasChanged(maskField)) { - if (mIsTempScaleF) { - value = SensorDataParser.getTemperatureF(sensorData, offset); - } else { - value = SensorDataParser.getTemperatureC(sensorData, offset); + if (mTemperatureFrag.isVisible() && SensorDataParser.temperatureHasChanged(maskField)) { + if (mIsTempScaleF) { + value = SensorDataParser.getTemperatureF(sensorData, offset); + } else { + value = SensorDataParser.getTemperatureC(sensorData, offset); + } + mTemperatureValue = Float.toString(value); + offset += SensorDataParser.SENSOR_TEMP_DATA_SIZE; + mTemperatureFrag.setValue(mAnimationSlower, value); + updateView = true; } - offset += SensorDataParser.SENSOR_TEMP_DATA_SIZE; - mTemperatureFrag.setValue(mAnimationSlower, value); - updateView = true; - } - if (updateView && mAnimationSlower != null) { - mAnimationSlower.animate(); - } - break; + if (updateView && mAnimationSlower != null) { + mAnimationSlower.animate(); + addThermoData(); + //*********************************************************************************************************************** + } + break; } // If animation is enabled, call animate... @@ -1062,4 +1070,77 @@ public class MainActivity extends Activity implements OnLicenseAcceptListener, mTemperatureFrag = f; } + //************************************ This is to open the database - JEFF Added****************** + + private Context mContext; + private SQLiteDatabase mDatabase; + + private String mHumidityValue; + private String mPressureValue; + private String mTemperatureValue; + + private MainActivity(Context context){ + mContext = context.getApplicationContext(); + mDatabase = new ThermoBaseHelper(mContext).getReadableDatabase(); + } + + private ContentValues getContentValues(){ // To place values in the database ????? What am I passing in? see page 325 + + Calendar time = new Calendar() {// Created to get the time + @Override + public void add(int field, int value) { + + } + + @Override + protected void computeFields() { + + } + + @Override + protected void computeTime() { + + } + + @Override + public int getGreatestMinimum(int field) { + return 0; + } + + @Override + public int getLeastMaximum(int field) { + return 0; + } + + @Override + public int getMaximum(int field) { + return 0; + } + + @Override + public int getMinimum(int field) { + return 0; + } + + @Override + public void roll(int field, boolean increment) { + + } + }; + time.getTime(); + + ContentValues values = new ContentValues(); + values.put(WicedDBSchema.ThermoTable.Cols.TIME, time.toString()); + values.put(WicedDBSchema.ThermoTable.Cols.HUMIDITY, mHumidityValue ); + values.put(WicedDBSchema.ThermoTable.Cols.PRESSURE, mPressureValue); + values.put(WicedDBSchema.ThermoTable.Cols.TEMPERATURE, mTemperatureValue); + + return values; + } + + public void addThermoData () {// Add a row of data????????????What am I passing in? see page 326 + ContentValues values = getContentValues(); + mDatabase.insert(WicedDBSchema.ThermoTable.NAME, null, values); + } + } diff --git a/WicedSense/app/src/main/java/com/broadcom/app/wicedsense/ThermoBaseHelper.java b/WicedSense/app/src/main/java/com/broadcom/app/wicedsense/ThermoBaseHelper.java new file mode 100644 index 0000000..a6d4922 --- /dev/null +++ b/WicedSense/app/src/main/java/com/broadcom/app/wicedsense/ThermoBaseHelper.java @@ -0,0 +1,38 @@ +package com.broadcom.app.wicedsense; + +import android.content.Context; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteOpenHelper; + + +/** + * Created by jmartin5229 on 11/9/2015. + */ +public class ThermoBaseHelper extends SQLiteOpenHelper {// The SQLiteOpenHelper does the following + // 1. Check to see if the database already exists. + // 2. If it does not, create it and create the tables and initial data it needs. + // 3. If it does, open it up and see what version of your ThermoDbSchema it has. + // 4. If it is an old version, run code to upgrade it to a newer version. + private static final int VERSION = 1; + private static final String DATABASE_NAME = "thermoBase.db"; + + public ThermoBaseHelper(Context context) { + super(context, DATABASE_NAME, null, VERSION); + } + + @Override + public void onCreate(SQLiteDatabase db){ // Creates the ThermoTable and defines its fields. + db.execSQL("create table " + WicedDBSchema.ThermoTable.NAME + "(" + + " _id integer primary key autoincrement, " + + WicedDBSchema.ThermoTable.Cols.TIME + ", "+ + WicedDBSchema.ThermoTable.Cols.HUMIDITY + ", " + + WicedDBSchema.ThermoTable.Cols.PRESSURE + ", " + + WicedDBSchema.ThermoTable.Cols.TEMPERATURE + ")" + ); + } + + @Override + public void onUpgrade(SQLiteDatabase db, int OldVersion, int newVersion){ + + } +} diff --git a/WicedSense/app/src/main/java/com/broadcom/app/wicedsense/WicedDBSchema.java b/WicedSense/app/src/main/java/com/broadcom/app/wicedsense/WicedDBSchema.java new file mode 100644 index 0000000..af9b11a --- /dev/null +++ b/WicedSense/app/src/main/java/com/broadcom/app/wicedsense/WicedDBSchema.java @@ -0,0 +1,18 @@ +package com.broadcom.app.wicedsense; + +/** + * Created by jmartin5229 on 11/9/2015. + */ +public class WicedDBSchema { + public static final class ThermoTable { // Name of the Table + public static final String NAME = "thermo"; + + public static final class Cols { // Name of the Columns (Fields) + public static final String TIME = "time"; + public static final String HUMIDITY = "humidity"; + public static final String PRESSURE = "pressure"; + public static final String TEMPERATURE = "temerature"; + + } + } +} -- GitLab