From 38d9692cfd15fea35854d3163aaf600d98b3fc5e Mon Sep 17 00:00:00 2001 From: Anashuman Singh <125425881+AsCress@users.noreply.github.com> Date: Fri, 8 Nov 2024 17:52:12 +0530 Subject: [PATCH 001/224] feat: initialized Flutter app (#2570) --- .github/ISSUE_TEMPLATE | 23 - .github/PULL_REQUEST_TEMPLATE | 13 - .github/dependabot.yml | 17 - .github/release-drafter.yml | 27 - .github/workflows/pull-request-comment.yml | 128 - .github/workflows/pull-request.yml | 42 - .github/workflows/push-event.yml | 167 - .github/workflows/release.yml | 67 - .gitignore | 46 +- .metadata | 45 + Gemfile | 4 +- LICENSE | 201 -- analysis_options.yaml | 28 + android/.gitignore | 13 + android/app/build.gradle | 44 + android/app/src/debug/AndroidManifest.xml | 7 + android/app/src/main/AndroidManifest.xml | 45 + .../java/io/pslab/activity/MainActivity.java | 6 + .../res/drawable-v21/launch_background.xml | 12 + .../main/res/drawable/launch_background.xml | 12 + .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 544 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 442 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 721 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 1031 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 1443 bytes .../app/src/main/res/values-night/styles.xml | 18 + android/app/src/main/res/values/styles.xml | 18 + android/app/src/profile/AndroidManifest.xml | 7 + android/build.gradle | 18 + android/gradle.properties | 3 + .../gradle}/wrapper/gradle-wrapper.properties | 3 +- android/settings.gradle | 25 + app/.gitignore | 1 - app/build.gradle.kts | 122 - app/proguard-rules.pro | 25 - app/src/main/AndroidManifest.xml | 145 - .../main/assets/fonts/digital-7 (italic).ttf | Bin 22924 -> 0 bytes .../main/java/io/pslab/CheckBoxGetter.java | 30 - app/src/main/java/io/pslab/DataFormatter.java | 17 - .../main/java/io/pslab/InputMinMaxFilter.java | 36 - .../main/java/io/pslab/PSLabApplication.java | 23 - app/src/main/java/io/pslab/SearchModel.java | 25 - .../pslab/activity/AccelerometerActivity.java | 139 - .../io/pslab/activity/BarometerActivity.java | 138 - .../io/pslab/activity/CompassActivity.java | 132 - .../io/pslab/activity/ControlActivity.java | 73 - .../pslab/activity/CreateConfigActivity.java | 204 -- .../io/pslab/activity/DataLoggerActivity.java | 356 -- .../io/pslab/activity/DustSensorActivity.java | 148 - .../io/pslab/activity/GasSensorActivity.java | 113 - .../io/pslab/activity/GyroscopeActivity.java | 134 - .../activity/LogicalAnalyzerActivity.java | 149 - .../io/pslab/activity/LuxMeterActivity.java | 151 - .../java/io/pslab/activity/MainActivity.java | 582 ---- .../java/io/pslab/activity/MapsActivity.java | 80 - .../io/pslab/activity/MultimeterActivity.java | 568 ---- .../pslab/activity/OscilloscopeActivity.java | 1376 -------- .../pslab/activity/PowerSourceActivity.java | 1073 ------ .../io/pslab/activity/RoboticArmActivity.java | 712 ---- .../io/pslab/activity/SensorActivity.java | 229 -- .../activity/SensorDataLoggerActivity.java | 334 -- .../io/pslab/activity/SettingsActivity.java | 123 - .../io/pslab/activity/ShowLoggedData.java | 318 -- .../io/pslab/activity/SoundMeterActivity.java | 135 - .../io/pslab/activity/SplashActivity.java | 72 - .../pslab/activity/ThermometerActivity.java | 144 - .../pslab/activity/WaveGeneratorActivity.java | 1503 --------- .../pslab/activity/guide/GuideActivity.java | 133 - .../io/pslab/adapters/ApplicationAdapter.java | 82 - .../io/pslab/adapters/CheckBoxAdapter.java | 75 - .../io/pslab/adapters/ControlMainAdapter.java | 985 ------ .../io/pslab/adapters/MPUDataAdapter.java | 70 - .../OscilloscopeMeasurementsAdapter.java | 77 - .../adapters/SensorLoggerListAdapter.java | 588 ---- .../pslab/communication/AnalyticsClass.java | 602 ---- .../io/pslab/communication/CommandsProto.java | 285 -- .../communication/CommunicationHandler.java | 152 - .../io/pslab/communication/HttpAsyncTask.java | 43 - .../io/pslab/communication/HttpHandler.java | 87 - .../io/pslab/communication/PacketHandler.java | 295 -- .../io/pslab/communication/ScienceLab.java | 2932 ----------------- .../io/pslab/communication/SensorList.java | 54 - .../AnalogAquisitionChannel.java | 79 - .../analogChannel/AnalogConstants.java | 39 - .../analogChannel/AnalogInputSource.java | 136 - .../digitalChannel/DigitalChannel.java | 156 - .../communication/peripherals/DACChannel.java | 69 - .../pslab/communication/peripherals/I2C.java | 284 -- .../communication/peripherals/MCP4728.java | 81 - .../communication/peripherals/NRF24L01.java | 530 --- .../communication/peripherals/RadioLink.java | 184 -- .../pslab/communication/peripherals/SPI.java | 107 - .../pslab/communication/sensors/AD7718.java | 322 -- .../pslab/communication/sensors/AD9833.java | 108 - .../pslab/communication/sensors/ADS1115.java | 236 -- .../pslab/communication/sensors/APDS9960.java | 255 -- .../pslab/communication/sensors/BH1750.java | 55 - .../pslab/communication/sensors/BMP180.java | 185 -- .../pslab/communication/sensors/CCS811.java | 103 - .../sensors/ComplementaryFilter.java | 35 - .../pslab/communication/sensors/HMC5883L.java | 100 - .../communication/sensors/KalmanFilter.java | 34 - .../io/pslab/communication/sensors/MF522.java | 533 --- .../pslab/communication/sensors/MLX90614.java | 82 - .../pslab/communication/sensors/MPU6050.java | 133 - .../pslab/communication/sensors/MPU925x.java | 194 -- .../io/pslab/communication/sensors/SHT21.java | 115 - .../pslab/communication/sensors/SSD1306.java | 463 --- .../pslab/communication/sensors/Sx1276.java | 453 --- .../pslab/communication/sensors/TSL2561.java | 124 - .../pslab/communication/sensors/VL53L0X.java | 313 -- .../java/io/pslab/filters/BandstopFilter.java | 205 -- .../main/java/io/pslab/filters/Lfilter.java | 64 - .../io/pslab/fragment/AboutUsFragment.java | 104 - .../fragment/AccelerometerDataFragment.java | 497 --- .../AccelerometerSettingsFragment.java | 123 - .../fragment/AccelerometerViewFragment.java | 188 -- .../pslab/fragment/BaroMeterDataFragment.java | 666 ---- .../fragment/BaroMeterSettingsFragment.java | 119 - .../pslab/fragment/BluetoothScanFragment.java | 162 - .../fragment/ChannelParametersFragment.java | 310 -- .../pslab/fragment/CompassDataFragment.java | 675 ---- .../fragment/CompassSettingsFragment.java | 62 - .../fragment/ControlFragmentAdvanced.java | 447 --- .../pslab/fragment/ControlFragmentMain.java | 44 - .../pslab/fragment/ControlFragmentRead.java | 150 - .../pslab/fragment/DataAnalysisFragment.java | 289 -- .../fragment/DustSensorDataFragment.java | 471 --- .../fragment/DustSensorSettingsFragment.java | 118 - .../java/io/pslab/fragment/ESPFragment.java | 128 - .../java/io/pslab/fragment/FAQFragment.java | 153 - .../pslab/fragment/GasSensorDataFragment.java | 449 --- .../pslab/fragment/GyroscopeDataFragment.java | 516 --- .../fragment/GyroscopeSettingsFragment.java | 126 - .../pslab/fragment/GyroscopeViewFragment.java | 174 - .../fragment/HelpAndFeedbackFragment.java | 49 - .../java/io/pslab/fragment/HomeFragment.java | 206 -- .../pslab/fragment/InstrumentsFragment.java | 242 -- .../pslab/fragment/LALogicLinesFragment.java | 1475 --------- .../pslab/fragment/LuxMeterDataFragment.java | 632 ---- .../fragment/LuxMeterSettingFragment.java | 136 - .../fragment/MultimeterSettingsFragment.java | 88 - .../OscilloscopePlaybackFragment.java | 53 - .../fragment/PSLabPinLayoutFragment.java | 250 -- .../io/pslab/fragment/SettingsFragment.java | 51 - .../fragment/SoundMeterDataFragment.java | 606 ---- .../fragment/SoundmeterSettingsFragment.java | 64 - .../fragment/ThermometerDataFragment.java | 627 ---- .../fragment/ThermometerSettingsFragment.java | 103 - .../fragment/TimebaseTriggerFragment.java | 375 --- .../io/pslab/fragment/XYPlotFragment.java | 115 - .../io/pslab/interfaces/HttpCallback.java | 6 - .../pslab/interfaces/OperationCallback.java | 10 - .../AccelerometerRecordables.java | 17 - .../sensorloggers/BaroMeterRecordables.java | 21 - .../sensorloggers/CompassRecordables.java | 16 - .../sensorloggers/DustSensorRecordables.java | 13 - .../sensorloggers/GasSensorRecordables.java | 12 - .../sensorloggers/GyroscopeRecordables.java | 16 - .../LogicAnalyzerRecordables.java | 12 - .../sensorloggers/LuxMeterRecordables.java | 21 - .../sensorloggers/MultimeterRecordables.java | 12 - .../OscilloscopeRecordables.java | 16 - .../sensorloggers/PowerSourceRecordables.java | 12 - .../sensorloggers/SensorRecordables.java | 23 - .../sensorloggers/ServoRecordables.java | 16 - .../sensorloggers/SoundMeterRecordables.java | 21 - .../sensorloggers/ThermometerRecordables.java | 16 - .../WaveGeneratorRecordables.java | 16 - .../java/io/pslab/items/ApplicationItem.java | 43 - .../main/java/io/pslab/items/PinDetails.java | 36 - .../io/pslab/items/SquareImageButton.java | 35 - .../io/pslab/items/SquareLinearLayout.java | 31 - .../io/pslab/models/AccelerometerData.java | 96 - .../main/java/io/pslab/models/BaroData.java | 82 - .../java/io/pslab/models/CompassData.java | 95 - .../java/io/pslab/models/DataMPU6050.java | 102 - .../java/io/pslab/models/DustSensorData.java | 68 - .../java/io/pslab/models/GasSensorData.java | 68 - .../main/java/io/pslab/models/GyroData.java | 91 - .../io/pslab/models/LogicAnalyzerData.java | 95 - .../main/java/io/pslab/models/LuxData.java | 72 - .../java/io/pslab/models/MultimeterData.java | 78 - .../io/pslab/models/OscilloscopeData.java | 105 - .../java/io/pslab/models/PSLabSensor.java | 535 --- .../java/io/pslab/models/PowerSourceData.java | 99 - .../java/io/pslab/models/SensorDataBlock.java | 36 - .../java/io/pslab/models/SensorLogged.java | 86 - .../main/java/io/pslab/models/ServoData.java | 95 - .../main/java/io/pslab/models/SoundData.java | 67 - .../java/io/pslab/models/ThermometerData.java | 67 - .../io/pslab/models/WaveGeneratorData.java | 113 - .../main/java/io/pslab/others/AudioJack.java | 122 - .../java/io/pslab/others/CSVDataLine.java | 53 - .../main/java/io/pslab/others/CSVLogger.java | 114 - .../io/pslab/others/ChannelAxisFormatter.java | 36 - .../pslab/others/ControlActivityCommon.java | 16 - .../io/pslab/others/CustomScrollView.java | 42 - .../java/io/pslab/others/CustomSnackBar.java | 31 - .../io/pslab/others/CustomTabService.java | 66 - .../java/io/pslab/others/EditTextWidget.java | 136 - .../java/io/pslab/others/FloatSeekBar.java | 66 - .../main/java/io/pslab/others/GPSLogger.java | 147 - .../pslab/others/InitializationVariable.java | 33 - .../java/io/pslab/others/LocalDataLog.java | 656 ---- .../others/LogicAnalyzerAxisFormatter.java | 47 - .../main/java/io/pslab/others/MathUtils.java | 43 - .../others/NothingSelectedSpinnerAdapter.java | 171 - .../others/OscilloscopeMeasurements.java | 47 - .../java/io/pslab/others/PSLabPermission.java | 149 - app/src/main/java/io/pslab/others/Plot2D.java | 211 -- .../io/pslab/others/PreferenceManager.java | 34 - .../io/pslab/others/ScienceLabCommon.java | 56 - .../io/pslab/others/SwipeGestureDetector.java | 59 - .../java/io/pslab/others/ViewGroupUtils.java | 33 - .../pslab/others/WaveGeneratorConstants.java | 58 - .../main/java/io/pslab/others/ZoomLayout.java | 134 - .../io/pslab/receivers/USBDetachReceiver.java | 68 - .../java/io/pslab/sensors/SensorADS1115.java | 302 -- .../java/io/pslab/sensors/SensorAPDS9960.java | 393 --- .../java/io/pslab/sensors/SensorBMP180.java | 400 --- .../java/io/pslab/sensors/SensorCCS811.java | 349 -- .../java/io/pslab/sensors/SensorHMC5883L.java | 323 -- .../java/io/pslab/sensors/SensorMLX90614.java | 399 --- .../java/io/pslab/sensors/SensorMPU6050.java | 424 --- .../java/io/pslab/sensors/SensorMPU925X.java | 428 --- .../java/io/pslab/sensors/SensorSHT21.java | 352 -- .../java/io/pslab/sensors/SensorTSL2561.java | 341 -- .../java/io/pslab/sensors/SensorVL53L0X.java | 289 -- app/src/main/res/anim/fade_in.xml | 9 - app/src/main/res/anim/fade_out.xml | 8 - .../res/animator-v21/selector_animator.xml | 45 - .../main/res/drawable-hdpi/compass_icon.png | Bin 67234 -> 0 bytes app/src/main/res/drawable-hdpi/ic_pwm_pic.png | Bin 585 -> 0 bytes app/src/main/res/drawable-hdpi/ic_sin.png | Bin 496 -> 0 bytes app/src/main/res/drawable-hdpi/ic_square.png | Bin 169 -> 0 bytes .../main/res/drawable-hdpi/ic_triangular.png | Bin 563 -> 0 bytes .../main/res/drawable-hdpi/sin_wave_guide.PNG | Bin 39416 -> 0 bytes .../res/drawable-hdpi/wav_gen_square_img.png | Bin 5236 -> 0 bytes .../main/res/drawable-ldpi/compass_icon.png | Bin 20219 -> 0 bytes .../main/res/drawable-mdpi/compass_icon.png | Bin 33179 -> 0 bytes app/src/main/res/drawable-mdpi/ic_pwm_pic.png | Bin 412 -> 0 bytes app/src/main/res/drawable-mdpi/ic_sin.png | Bin 334 -> 0 bytes app/src/main/res/drawable-mdpi/ic_square.png | Bin 157 -> 0 bytes .../main/res/drawable-mdpi/ic_triangular.png | Bin 356 -> 0 bytes .../drawable-mdpi/rectangle_border_black.xml | 8 - .../main/res/drawable-xhdpi/compass_icon.png | Bin 114811 -> 0 bytes .../main/res/drawable-xhdpi/ic_pwm_pic.png | Bin 850 -> 0 bytes app/src/main/res/drawable-xhdpi/ic_sin.png | Bin 698 -> 0 bytes app/src/main/res/drawable-xhdpi/ic_square.png | Bin 165 -> 0 bytes .../main/res/drawable-xhdpi/ic_triangular.png | Bin 770 -> 0 bytes .../main/res/drawable-xxhdpi/compass_icon.png | Bin 252462 -> 0 bytes .../main/res/drawable-xxhdpi/ic_pwm_pic.png | Bin 1386 -> 0 bytes app/src/main/res/drawable-xxhdpi/ic_sin.png | Bin 1025 -> 0 bytes .../main/res/drawable-xxhdpi/ic_square.png | Bin 244 -> 0 bytes .../res/drawable-xxhdpi/ic_triangular.png | Bin 1112 -> 0 bytes .../res/drawable-xxhdpi/tile_icon_gas.xml | 11 - .../res/drawable-xxxhdpi/compass_icon.png | Bin 436188 -> 0 bytes .../res/drawable/action_item_advanced.png | Bin 645 -> 0 bytes .../main/res/drawable/action_item_main.png | Bin 168 -> 0 bytes .../main/res/drawable/action_item_read.png | Bin 233 -> 0 bytes app/src/main/res/drawable/ads1115.jpg | Bin 25877 -> 0 bytes app/src/main/res/drawable/app_icon.png | Bin 8741 -> 0 bytes app/src/main/res/drawable/app_icon_round.png | Bin 18082 -> 0 bytes .../main/res/drawable/baseline_article_24.xml | 5 - .../res/drawable/baseline_attribution_24.xml | 9 - .../res/drawable/baseline_menu_book_24.xml | 11 - .../main/res/drawable/baseline_star_24.xml | 5 - app/src/main/res/drawable/bg_circle.xml | 9 - .../main/res/drawable/bh1750_schematic.png | Bin 71092 -> 0 bytes app/src/main/res/drawable/bmp180.jpg | Bin 295051 -> 0 bytes .../main/res/drawable/bmp180_schematic.png | Bin 56762 -> 0 bytes .../main/res/drawable/btn_back_rounded.xml | 16 - .../res/drawable/btn_back_rounded_light.xml | 6 - app/src/main/res/drawable/btn_sheet_back.xml | 8 - app/src/main/res/drawable/button_clicked.xml | 4 - app/src/main/res/drawable/button_normal.xml | 4 - app/src/main/res/drawable/capacitor.png | Bin 5544 -> 0 bytes .../res/drawable/carousel_view_background.xml | 27 - app/src/main/res/drawable/ccs811.jpg | Bin 83403 -> 0 bytes .../main/res/drawable/channel_parameters.gif | Bin 10949 -> 0 bytes .../main/res/drawable/circle_pause_button.xml | 5 - .../main/res/drawable/circle_play_button.xml | 5 - .../main/res/drawable/compass_help_icon.xml | 9 - .../res/drawable/control_custom_border.xml | 6 - .../main/res/drawable/control_edittext.xml | 8 - .../main/res/drawable/create_config_icon.xml | 9 - app/src/main/res/drawable/data_analysis.png | Bin 15336 -> 0 bytes .../main/res/drawable/data_analysis_view.png | Bin 60952 -> 0 bytes app/src/main/res/drawable/delete_icon.xml | 10 - .../res/drawable/dialog_body_background.xml | 13 - .../res/drawable/dialog_header_background.xml | 13 - .../main/res/drawable/find_mobile_axis.png | Bin 17625 -> 0 bytes app/src/main/res/drawable/green_led.png | Bin 4686 -> 0 bytes .../drawable/gyroscope_axes_orientation.png | Bin 23216 -> 0 bytes .../res/drawable/gyroscope_logdata_logo.png | Bin 10463 -> 0 bytes app/src/main/res/drawable/gyroscope_logo.xml | 38 - app/src/main/res/drawable/hmc5883l.jpg | Bin 79288 -> 0 bytes .../res/drawable/ic_android_black_24dp.xml | 9 - .../main/res/drawable/ic_apps_black_24dp.xml | 9 - .../res/drawable/ic_arrow_back_white_24dp.xml | 5 - .../ic_arrow_drop_down_black_24dp.xml | 5 - .../ic_arrow_drop_down_white_24dp.xml | 9 - .../drawable/ic_arrow_drop_up_black_24dp.xml | 5 - .../drawable/ic_arrow_drop_up_white_24dp.xml | 9 - .../main/res/drawable/ic_arrow_left_24dp.xml | 5 - .../main/res/drawable/ic_arrow_right_24dp.xml | 5 - .../res/drawable/ic_bug_report_black_24dp.png | Bin 527 -> 0 bytes .../main/res/drawable/ic_delete_red_24dp.xml | 9 - .../ic_developer_board_black_24dp.xml | 9 - app/src/main/res/drawable/ic_export_file.xml | 5 - .../res/drawable/ic_feedback_black_24dp.png | Bin 311 -> 0 bytes .../res/drawable/ic_fullscreen_black_24dp.xml | 9 - .../main/res/drawable/ic_info_black_24dp.png | Bin 766 -> 0 bytes app/src/main/res/drawable/ic_map_red_24dp.xml | 9 - .../main/res/drawable/ic_nav_header_logo.xml | 14 - .../main/res/drawable/ic_pause_white_24dp.xml | 9 - .../res/drawable/ic_play_arrow_white_24dp.xml | 9 - app/src/main/res/drawable/ic_play_button.xml | 4 - .../res/drawable/ic_record_stop_white.xml | 21 - app/src/main/res/drawable/ic_record_white.xml | 19 - .../res/drawable/ic_settings_black_24dp.xml | 9 - .../drawable/ic_shopping_cart_black_24dp.xml | 9 - .../main/res/drawable/ic_stop_white_24dp.xml | 9 - .../main/res/drawable/ic_usb_connected.xml | 5 - .../main/res/drawable/ic_usb_disconnected.xml | 5 - app/src/main/res/drawable/ic_user__24dp.xml | 5 - .../res/drawable/ic_widgets_black_24dp.xml | 9 - .../drawable/ic_wifi_tethering_black_24dp.xml | 9 - .../drawable/icon_logic_analyzer_white.xml | 15 - .../res/drawable/icon_oscilloscope_white.xml | 10 - .../res/drawable/icons8_usb_connected_100.png | Bin 1796 -> 0 bytes .../drawable/icons_usb_disconnected_100.png | Bin 1901 -> 0 bytes app/src/main/res/drawable/knob.xml | 27 - app/src/main/res/drawable/knob_base.xml | 36 - .../res/drawable/la_chart_custom_border.xml | 14 - .../main/res/drawable/la_custom_border.xml | 13 - .../main/res/drawable/la_formatted_button.xml | 27 - .../res/drawable/logic_analyzer_circuit.png | Bin 91718 -> 0 bytes app/src/main/res/drawable/logo.png | Bin 11906 -> 0 bytes app/src/main/res/drawable/logo200x200.png | Bin 7612 -> 0 bytes app/src/main/res/drawable/menu_icon_guide.xml | 9 - app/src/main/res/drawable/menu_icon_map.xml | 9 - app/src/main/res/drawable/menu_icon_save.xml | 9 - app/src/main/res/drawable/mic_schematic.png | Bin 60726 -> 0 bytes app/src/main/res/drawable/mlx90614.jpg | Bin 103531 -> 0 bytes .../main/res/drawable/mlx90614_schematic.png | Bin 91721 -> 0 bytes .../main/res/drawable/multimeter_circuit.png | Bin 160727 -> 0 bytes app/src/main/res/drawable/nav_header_logo.png | Bin 73448 -> 0 bytes .../res/drawable/oscilloscope_schematic.png | Bin 37693 -> 0 bytes app/src/main/res/drawable/pause.png | Bin 1912 -> 0 bytes app/src/main/res/drawable/pause_icon.xml | 10 - app/src/main/res/drawable/phone_x_axis.png | Bin 23634 -> 0 bytes app/src/main/res/drawable/phone_y_axis.png | Bin 18332 -> 0 bytes app/src/main/res/drawable/phone_z_axis.png | Bin 21940 -> 0 bytes app/src/main/res/drawable/play.png | Bin 1909 -> 0 bytes .../main/res/drawable/powersource_circuit.png | Bin 147931 -> 0 bytes .../res/drawable/pslab_v5_back_colormap.png | Bin 5249 -> 0 bytes .../res/drawable/pslab_v5_back_layout.png | Bin 528000 -> 0 bytes .../res/drawable/pslab_v5_front_colormap.png | Bin 5312 -> 0 bytes .../res/drawable/pslab_v5_front_layout.png | Bin 380165 -> 0 bytes .../main/res/drawable/rectangle_border.xml | 8 - app/src/main/res/drawable/red_led.png | Bin 3509 -> 0 bytes app/src/main/res/drawable/robotic_arm.xml | 67 - .../res/drawable/rounded_custom_border.xml | 7 - .../res/drawable/rounded_custom_border_2.xml | 7 - app/src/main/res/drawable/selector_button.xml | 14 - .../main/res/drawable/servo_drag_handle.png | Bin 302 -> 0 bytes app/src/main/res/drawable/share_icon.png | Bin 857 -> 0 bytes app/src/main/res/drawable/text.png | Bin 7271 -> 0 bytes .../main/res/drawable/text_color_selector.xml | 7 - .../main/res/drawable/thermometer_logo.xml | 37 - .../res/drawable/tile_icon_accelerometer.xml | 40 - .../main/res/drawable/tile_icon_barometer.xml | 13 - .../res/drawable/tile_icon_barometer_log.xml | 24 - .../main/res/drawable/tile_icon_compass.xml | 17 - .../res/drawable/tile_icon_compass_log.xml | 9 - .../drawable/tile_icon_horizontal_bars.xml | 10 - .../res/drawable/tile_icon_logic_analyzer.xml | 25 - .../main/res/drawable/tile_icon_lux_meter.xml | 83 - .../res/drawable/tile_icon_lux_meter_log.xml | 63 - .../res/drawable/tile_icon_multimeter.xml | 16 - .../res/drawable/tile_icon_oscilloscope.xml | 18 - .../res/drawable/tile_icon_power_source.xml | 18 - .../main/res/drawable/tile_icon_sensors.xml | 15 - .../res/drawable/tile_icon_vertical_bars.xml | 9 - .../res/drawable/tile_icon_wave_generator.xml | 25 - app/src/main/res/drawable/timebase.png | Bin 3272 -> 0 bytes app/src/main/res/drawable/timebase_view.png | Bin 39840 -> 0 bytes app/src/main/res/drawable/tv_border.xml | 9 - app/src/main/res/drawable/vl53l0x.jpg | Bin 124195 -> 0 bytes app/src/main/res/drawable/xy_plot_view.png | Bin 40612 -> 0 bytes app/src/main/res/drawable/xymode.png | Bin 21561 -> 0 bytes .../res/layout-hdpi/activity_multimeter.xml | 433 --- .../layout-hdpi/control_main_list_item.xml | 110 - .../layout-hdpi/fragment_control_advanced.xml | 533 --- .../res/layout-hdpi/fragment_control_read.xml | 376 --- .../activity_powersource_layout.xml | 566 ---- .../layout-land/activity_wave_generator.xml | 92 - .../logic_analyzer_logic_lines.xml | 292 -- .../main/res/layout-land/splash_screen.xml | 23 - .../wave_generator_wave_controls.xml | 399 --- .../main/res/layout-sw600dp/activity_main.xml | 32 - .../layout-sw600dp/activity_multimeter.xml | 471 --- .../layout-sw600dp/activity_power_source.xml | 35 - .../activity_wave_generator.xml | 93 - .../fragment_channel_parameters.xml | 173 - .../layout-sw600dp/fragment_data_analysis.xml | 77 - .../res/layout-sw600dp/fragment_xyplot.xml | 93 - .../res/layout-xhdpi/activity_multimeter.xml | 439 --- .../layout-xhdpi/control_main_list_item.xml | 110 - .../fragment_control_advanced.xml | 532 --- .../layout-xhdpi/fragment_control_read.xml | 377 --- .../res/layout/accelerometer_list_item.xml | 141 - app/src/main/res/layout/activity_compass.xml | 197 -- .../main/res/layout/activity_compass_main.xml | 38 - app/src/main/res/layout/activity_control.xml | 26 - .../res/layout/activity_create_config.xml | 146 - .../main/res/layout/activity_data_logger.xml | 48 - .../layout/activity_data_sensor_logger.xml | 48 - .../res/layout/activity_generic_sensor.xml | 18 - .../res/layout/activity_logic_analyzer.xml | 45 - app/src/main/res/layout/activity_main.xml | 26 - app/src/main/res/layout/activity_maps.xml | 20 - .../main/res/layout/activity_multimeter.xml | 438 --- .../res/layout/activity_multimeter_main.xml | 18 - .../main/res/layout/activity_oscilloscope.xml | 363 -- .../main/res/layout/activity_power_source.xml | 35 - .../layout/activity_powersource_layout.xml | 521 --- .../main/res/layout/activity_robotic_arm.xml | 125 - .../res/layout/activity_sensor_graph_view.xml | 266 -- app/src/main/res/layout/activity_settings.xml | 28 - .../res/layout/activity_show_logged_data.xml | 30 - .../main/res/layout/activity_thermometer.xml | 136 - .../res/layout/activity_wave_generator.xml | 92 - .../layout/activity_wave_generator_main.xml | 43 - app/src/main/res/layout/app_bar_main.xml | 29 - .../main/res/layout/application_list_item.xml | 96 - .../main/res/layout/applications_fragment.xml | 15 - .../main/res/layout/bottom_sheet_custom.xml | 106 - .../res/layout/bottom_sheet_oscilloscope.xml | 214 -- .../res/layout/bottom_sheet_powersource.xml | 103 - .../res/layout/bottom_sheet_robotic_arm.xml | 91 - .../main/res/layout/bottomsheet_compass.xml | 103 - .../res/layout/bottomsheet_thermometer.xml | 103 - .../res/layout/btm_sheet_wavegen_custom.xml | 142 - .../res/layout/control_main_list_item.xml | 109 - app/src/main/res/layout/custom_dialog_box.xml | 75 - app/src/main/res/layout/custom_spinner.xml | 9 - .../main/res/layout/custom_spinner_mic.xml | 10 - .../res/layout/custom_spinner_mic_tablet.xml | 10 - .../main/res/layout/custom_spinner_tablet.xml | 9 - .../layout/dialog_input_edit_text_widget.xml | 23 - app/src/main/res/layout/edittext_control.xml | 37 - app/src/main/res/layout/fragment_about_us.xml | 6 - .../layout/fragment_accelerometer_data.xml | 40 - .../res/layout/fragment_barometer_data.xml | 146 - .../res/layout/fragment_bluetooth_scan.xml | 48 - .../layout/fragment_channel_parameters.xml | 163 - .../res/layout/fragment_control_advanced.xml | 535 --- .../main/res/layout/fragment_control_main.xml | 17 - .../main/res/layout/fragment_control_read.xml | 371 --- .../res/layout/fragment_data_analysis.xml | 68 - .../layout/fragment_data_analysis_main.xml | 35 - .../main/res/layout/fragment_dust_sensor.xml | 127 - app/src/main/res/layout/fragment_esp.xml | 33 - app/src/main/res/layout/fragment_faq.xml | 17 - .../main/res/layout/fragment_gas_sensor.xml | 119 - .../res/layout/fragment_gyroscope_data.xml | 40 - .../res/layout/fragment_help_feedback.xml | 6 - .../res/layout/fragment_lux_meter_data.xml | 137 - .../layout/fragment_oscilloscope_playback.xml | 31 - .../main/res/layout/fragment_pin_layout.xml | 23 - .../res/layout/fragment_sound_meter_data.xml | 137 - .../res/layout/fragment_timebase_tigger.xml | 170 - app/src/main/res/layout/fragment_xyplot.xml | 70 - .../main/res/layout/generic_sensor_layout.xml | 29 - .../main/res/layout/gyroscope_list_item.xml | 141 - app/src/main/res/layout/home_fragment.xml | 204 -- app/src/main/res/layout/item_checkbox.xml | 28 - app/src/main/res/layout/list_group.xml | 46 - app/src/main/res/layout/list_item.xml | 35 - app/src/main/res/layout/logger_data_item.xml | 81 - .../res/layout/logic_analyzer_logic_lines.xml | 294 -- app/src/main/res/layout/measurement_item.xml | 45 - .../layout/modified_spinner_dropdown_list.xml | 12 - app/src/main/res/layout/nav_header_main.xml | 34 - .../layout/nothing_selected_spinner_row.xml | 11 - .../res/layout/pin_description_dialog.xml | 55 - app/src/main/res/layout/position_controls.xml | 132 - .../layout/robotic_arm_timeline_textview.xml | 21 - app/src/main/res/layout/sensor_ads1115.xml | 399 --- app/src/main/res/layout/sensor_apds9960.xml | 906 ----- app/src/main/res/layout/sensor_bmp180.xml | 590 ---- app/src/main/res/layout/sensor_ccs811.xml | 451 --- app/src/main/res/layout/sensor_hmc5883l.xml | 345 -- app/src/main/res/layout/sensor_list_item.xml | 13 - .../layout/sensor_list_long_click_dailog.xml | 12 - app/src/main/res/layout/sensor_main.xml | 98 - app/src/main/res/layout/sensor_mlx90614.xml | 450 --- app/src/main/res/layout/sensor_mpu6050.xml | 484 --- .../res/layout/sensor_mpu6050_data_card.xml | 245 -- app/src/main/res/layout/sensor_mpu925x.xml | 692 ---- app/src/main/res/layout/sensor_sht21.xml | 451 --- app/src/main/res/layout/sensor_tsl2561.xml | 451 --- app/src/main/res/layout/sensor_vl53l0x.xml | 300 -- .../res/layout/servo_controller_layout.xml | 61 - app/src/main/res/layout/splash_screen.xml | 25 - .../wave_generator_analog_mode_layout.xml | 163 - .../wave_generator_digital_mode_layout.xml | 194 -- .../layout/wave_generator_main_controls.xml | 54 - .../res/layout/wave_generator_preview.xml | 19 - .../res/layout/wave_generator_seekbar.xml | 51 - .../layout/wave_generator_wave_controls.xml | 398 --- .../main/res/layout/wavegen_intent_dialog.xml | 74 - .../res/menu/activity_compass_help_menu.xml | 17 - .../activity_control_bottom_navigationbar.xml | 15 - .../main/res/menu/activity_landscape_menu.xml | 40 - .../main/res/menu/activity_main_drawer.xml | 73 - .../res/menu/activity_sensor_data_logger.xml | 8 - .../menu/activity_show_item_logged_data.xml | 16 - app/src/main/res/menu/data_log_menu.xml | 40 - app/src/main/res/menu/log_activity_menu.xml | 9 - .../main/res/menu/logical_analyzer_menu.xml | 19 - app/src/main/res/menu/multimeter_log_menu.xml | 38 - app/src/main/res/menu/power_source_menu.xml | 28 - .../main/res/menu/pslab_connectivity_menu.xml | 23 - app/src/main/res/menu/robotic_arm_menu.xml | 28 - .../main/res/menu/sensor_data_log_menu.xml | 45 - app/src/main/res/menu/sensor_menu.xml | 9 - app/src/main/res/menu/wave_generator_menu.xml | 24 - app/src/main/res/values-ar/strings.xml | 975 ------ app/src/main/res/values-hdpi/dimens.xml | 14 - app/src/main/res/values-land/dimens.xml | 4 - app/src/main/res/values-pl/strings.xml | 1040 ------ app/src/main/res/values-ru/strings.xml | 1059 ------ app/src/main/res/values-si/string.xml | 1028 ------ app/src/main/res/values-sw600dp/dimens.xml | 17 - app/src/main/res/values-sw600dp/isTablet.xml | 4 - app/src/main/res/values-v21/styles.xml | 30 - app/src/main/res/values-w820dp/dimens.xml | 6 - app/src/main/res/values-xhdpi/dimens.xml | 17 - app/src/main/res/values/attr.xml | 21 - app/src/main/res/values/colors.xml | 86 - app/src/main/res/values/dimens.xml | 424 --- app/src/main/res/values/isTablet.xml | 4 - app/src/main/res/values/strings.xml | 1197 ------- app/src/main/res/values/styles.xml | 231 -- .../main/res/xml/accelerometer_settings.xml | 48 - app/src/main/res/xml/baro_meter_settings.xml | 38 - app/src/main/res/xml/compass_settings.xml | 11 - .../main/res/xml/data_extraction_rules.xml | 17 - app/src/main/res/xml/device_filter.xml | 39 - app/src/main/res/xml/dust_sensor_settings.xml | 38 - app/src/main/res/xml/gyro_scope_settings.xml | 43 - app/src/main/res/xml/lux_meter_settings.xml | 48 - app/src/main/res/xml/multimeter_settings.xml | 20 - .../res/xml/settings_preference_fragment.xml | 19 - app/src/main/res/xml/sound_meter_settings.xml | 9 - app/src/main/res/xml/thermometer_settings.xml | 37 - build.gradle.kts | 15 - docs/Lux meter.md | 66 - docs/Oscilloscope.md | 90 - docs/commitstyle.md | 55 - docs/images/bh1750_schematic.png | Bin 71092 -> 0 bytes docs/images/fdroid_badge.png | Bin 14224 -> 0 bytes .../images/instrument_accelerometer_guide.png | Bin 93974 -> 0 bytes docs/images/instrument_accelerometer_view.png | Bin 150553 -> 0 bytes docs/images/instrument_barometer_config.png | Bin 50064 -> 0 bytes docs/images/instrument_barometer_guide.png | Bin 146963 -> 0 bytes docs/images/instrument_barometer_view.png | Bin 174629 -> 0 bytes docs/images/instrument_compass_guide.png | Bin 104794 -> 0 bytes docs/images/instrument_compass_view.png | Bin 271569 -> 0 bytes docs/images/instrument_dust_sensor_view.png | Bin 210354 -> 0 bytes docs/images/instrument_gas_sensor_view.png | Bin 219388 -> 0 bytes docs/images/instrument_gyro_view.png | Bin 145245 -> 0 bytes .../instrument_logic_analyzer_guide.png | Bin 207300 -> 0 bytes .../instrument_logical_analyzer_view.png | Bin 146216 -> 0 bytes docs/images/instrument_luxmeter_config.png | Bin 55828 -> 0 bytes docs/images/instrument_luxmeter_guide.png | Bin 282902 -> 0 bytes docs/images/instrument_luxmeter_view.png | Bin 81069 -> 0 bytes docs/images/instrument_multi_meter_view.png | Bin 141098 -> 0 bytes docs/images/instrument_multimeter_guide.png | Bin 151527 -> 0 bytes ...instrument_oscilloscope_audiojack_view.png | Bin 109519 -> 0 bytes .../instrument_oscilloscope_channel_view.png | Bin 108179 -> 0 bytes .../instrument_oscilloscope_dataanalysis.png | Bin 80606 -> 0 bytes docs/images/instrument_oscilloscope_guide.png | Bin 160472 -> 0 bytes .../instrument_oscilloscope_timebase.png | Bin 82098 -> 0 bytes .../images/instrument_oscilloscope_xyplot.png | Bin 57031 -> 0 bytes docs/images/instrument_power_source_guide.png | Bin 145652 -> 0 bytes docs/images/instrument_power_source_view.png | Bin 127091 -> 0 bytes ...instrument_robotic_arm_controller_view.png | Bin 124603 -> 0 bytes docs/images/instrument_sensors_view.png | Bin 211720 -> 0 bytes docs/images/instrument_thermo_view.png | Bin 148421 -> 0 bytes .../instrument_wave_generator_analog.png | Bin 153667 -> 0 bytes .../instrument_wave_generator_digital.png | Bin 122138 -> 0 bytes .../images/instrument_wavegenerator_guide.png | Bin 122784 -> 0 bytes docs/images/oscilloscope_channel_params.png | Bin 49646 -> 0 bytes docs/images/oscilloscope_data_analysis.png | Bin 42811 -> 0 bytes docs/images/oscilloscope_schematic.png | Bin 37693 -> 0 bytes docs/images/playstore_badge.png | Bin 13957 -> 0 bytes docs/images/view_about_us.png | Bin 164125 -> 0 bytes docs/images/view_app_settings.png | Bin 44358 -> 0 bytes docs/images/view_create_config_file.png | Bin 93873 -> 0 bytes docs/images/view_data_logger.png | Bin 141069 -> 0 bytes docs/images/view_datalogger_play.png | Bin 107651 -> 0 bytes docs/images/view_device_not_found.png | Bin 110775 -> 0 bytes docs/images/view_faq.png | Bin 145376 -> 0 bytes docs/images/view_home_screen.png | Bin 73092 -> 0 bytes docs/images/view_initialization.png | Bin 65102 -> 0 bytes docs/images/view_instrument_panel.png | Bin 127963 -> 0 bytes docs/images/view_log_map_location.png | Bin 1436517 -> 0 bytes docs/images/view_not_connected_nav_menu.png | Bin 127158 -> 0 bytes docs/images/view_pin_detail_dialog.png | Bin 157009 -> 0 bytes docs/images/view_pin_layout_back.png | Bin 910783 -> 0 bytes docs/images/view_pin_layout_front.png | Bin 784729 -> 0 bytes docs/images/view_side_navigation_drawer.png | Bin 123378 -> 0 bytes docs/privacy_policy.html | 60 - gradle.properties | 26 - gradle/wrapper/gradle-wrapper.jar | Bin 53636 -> 0 bytes gradlew | 160 - gradlew.bat | 90 - ios/.gitignore | 34 + ios/Flutter/AppFrameworkInfo.plist | 26 + ios/Flutter/Debug.xcconfig | 1 + ios/Flutter/Release.xcconfig | 1 + ios/Runner.xcodeproj/project.pbxproj | 616 ++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/WorkspaceSettings.xcsettings | 8 + .../xcshareddata/xcschemes/Runner.xcscheme | 98 + .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/WorkspaceSettings.xcsettings | 8 + ios/Runner/AppDelegate.swift | 13 + .../AppIcon.appiconset/Contents.json | 122 + .../Icon-App-1024x1024@1x.png | Bin 0 -> 10932 bytes .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin 0 -> 295 bytes .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin 0 -> 406 bytes .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin 0 -> 450 bytes .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin 0 -> 282 bytes .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin 0 -> 462 bytes .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin 0 -> 704 bytes .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin 0 -> 406 bytes .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin 0 -> 586 bytes .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin 0 -> 862 bytes .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin 0 -> 862 bytes .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin 0 -> 1674 bytes .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin 0 -> 762 bytes .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin 0 -> 1226 bytes .../Icon-App-83.5x83.5@2x.png | Bin 0 -> 1418 bytes .../LaunchImage.imageset/Contents.json | 23 + .../LaunchImage.imageset/LaunchImage.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/LaunchImage@2x.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/LaunchImage@3x.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/README.md | 5 + ios/Runner/Base.lproj/LaunchScreen.storyboard | 37 + ios/Runner/Base.lproj/Main.storyboard | 26 + ios/Runner/Info.plist | 49 + ios/Runner/Runner-Bridging-Header.h | 1 + ios/RunnerTests/RunnerTests.swift | 12 + lib/main.dart | 125 + libs/croller-release.aar | Bin 23560 -> 0 bytes linux/.gitignore | 1 + linux/CMakeLists.txt | 145 + linux/flutter/CMakeLists.txt | 88 + linux/flutter/generated_plugin_registrant.cc | 11 + linux/flutter/generated_plugin_registrant.h | 15 + linux/flutter/generated_plugins.cmake | 23 + linux/main.cc | 6 + linux/my_application.cc | 124 + linux/my_application.h | 18 + macos/.gitignore | 7 + macos/Flutter/Flutter-Debug.xcconfig | 1 + macos/Flutter/Flutter-Release.xcconfig | 1 + macos/Flutter/GeneratedPluginRegistrant.swift | 10 + macos/Runner.xcodeproj/project.pbxproj | 705 ++++ .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/xcschemes/Runner.xcscheme | 98 + .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + macos/Runner/AppDelegate.swift | 9 + .../AppIcon.appiconset/Contents.json | 68 + .../AppIcon.appiconset/app_icon_1024.png | Bin 0 -> 102994 bytes .../AppIcon.appiconset/app_icon_128.png | Bin 0 -> 5680 bytes .../AppIcon.appiconset/app_icon_16.png | Bin 0 -> 520 bytes .../AppIcon.appiconset/app_icon_256.png | Bin 0 -> 14142 bytes .../AppIcon.appiconset/app_icon_32.png | Bin 0 -> 1066 bytes .../AppIcon.appiconset/app_icon_512.png | Bin 0 -> 36406 bytes .../AppIcon.appiconset/app_icon_64.png | Bin 0 -> 2218 bytes macos/Runner/Base.lproj/MainMenu.xib | 343 ++ macos/Runner/Configs/AppInfo.xcconfig | 14 + macos/Runner/Configs/Debug.xcconfig | 2 + macos/Runner/Configs/Release.xcconfig | 2 + macos/Runner/Configs/Warnings.xcconfig | 13 + macos/Runner/DebugProfile.entitlements | 12 + macos/Runner/Info.plist | 32 + macos/Runner/MainFlutterWindow.swift | 15 + macos/Runner/Release.entitlements | 8 + macos/RunnerTests/RunnerTests.swift | 12 + pubspec.lock | 213 ++ pubspec.yaml | 90 + scripts/.gitignore | 3 - scripts/prep-key.sh | 5 - scripts/secrets.tar.enc | Bin 10256 -> 0 bytes settings.gradle.kts | 19 - test/widget_test.dart | 30 + web/favicon.png | Bin 0 -> 917 bytes web/icons/Icon-192.png | Bin 0 -> 5292 bytes web/icons/Icon-512.png | Bin 0 -> 8252 bytes web/icons/Icon-maskable-192.png | Bin 0 -> 5594 bytes web/icons/Icon-maskable-512.png | Bin 0 -> 20998 bytes web/index.html | 38 + web/manifest.json | 35 + windows/.gitignore | 17 + windows/CMakeLists.txt | 108 + windows/flutter/CMakeLists.txt | 109 + .../flutter/generated_plugin_registrant.cc | 11 + windows/flutter/generated_plugin_registrant.h | 15 + windows/flutter/generated_plugins.cmake | 23 + windows/runner/CMakeLists.txt | 40 + windows/runner/Runner.rc | 121 + windows/runner/flutter_window.cpp | 71 + windows/runner/flutter_window.h | 33 + windows/runner/main.cpp | 43 + windows/runner/resource.h | 16 + windows/runner/resources/app_icon.ico | Bin 0 -> 33772 bytes windows/runner/runner.exe.manifest | 14 + windows/runner/utils.cpp | 65 + windows/runner/utils.h | 19 + windows/runner/win32_window.cpp | 288 ++ windows/runner/win32_window.h | 102 + 732 files changed, 4889 insertions(+), 71106 deletions(-) delete mode 100644 .github/ISSUE_TEMPLATE delete mode 100644 .github/PULL_REQUEST_TEMPLATE delete mode 100644 .github/dependabot.yml delete mode 100644 .github/release-drafter.yml delete mode 100644 .github/workflows/pull-request-comment.yml delete mode 100644 .github/workflows/pull-request.yml delete mode 100644 .github/workflows/push-event.yml delete mode 100644 .github/workflows/release.yml create mode 100644 .metadata delete mode 100644 LICENSE create mode 100644 analysis_options.yaml create mode 100644 android/.gitignore create mode 100644 android/app/build.gradle create mode 100644 android/app/src/debug/AndroidManifest.xml create mode 100644 android/app/src/main/AndroidManifest.xml create mode 100644 android/app/src/main/java/io/pslab/activity/MainActivity.java create mode 100644 android/app/src/main/res/drawable-v21/launch_background.xml create mode 100644 android/app/src/main/res/drawable/launch_background.xml create mode 100644 android/app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 android/app/src/main/res/values-night/styles.xml create mode 100644 android/app/src/main/res/values/styles.xml create mode 100644 android/app/src/profile/AndroidManifest.xml create mode 100644 android/build.gradle create mode 100644 android/gradle.properties rename {gradle => android/gradle}/wrapper/gradle-wrapper.properties (80%) create mode 100644 android/settings.gradle delete mode 100644 app/.gitignore delete mode 100644 app/build.gradle.kts delete mode 100644 app/proguard-rules.pro delete mode 100644 app/src/main/AndroidManifest.xml delete mode 100644 app/src/main/assets/fonts/digital-7 (italic).ttf delete mode 100644 app/src/main/java/io/pslab/CheckBoxGetter.java delete mode 100644 app/src/main/java/io/pslab/DataFormatter.java delete mode 100644 app/src/main/java/io/pslab/InputMinMaxFilter.java delete mode 100644 app/src/main/java/io/pslab/PSLabApplication.java delete mode 100644 app/src/main/java/io/pslab/SearchModel.java delete mode 100644 app/src/main/java/io/pslab/activity/AccelerometerActivity.java delete mode 100644 app/src/main/java/io/pslab/activity/BarometerActivity.java delete mode 100644 app/src/main/java/io/pslab/activity/CompassActivity.java delete mode 100644 app/src/main/java/io/pslab/activity/ControlActivity.java delete mode 100644 app/src/main/java/io/pslab/activity/CreateConfigActivity.java delete mode 100644 app/src/main/java/io/pslab/activity/DataLoggerActivity.java delete mode 100644 app/src/main/java/io/pslab/activity/DustSensorActivity.java delete mode 100644 app/src/main/java/io/pslab/activity/GasSensorActivity.java delete mode 100644 app/src/main/java/io/pslab/activity/GyroscopeActivity.java delete mode 100644 app/src/main/java/io/pslab/activity/LogicalAnalyzerActivity.java delete mode 100644 app/src/main/java/io/pslab/activity/LuxMeterActivity.java delete mode 100644 app/src/main/java/io/pslab/activity/MainActivity.java delete mode 100644 app/src/main/java/io/pslab/activity/MapsActivity.java delete mode 100644 app/src/main/java/io/pslab/activity/MultimeterActivity.java delete mode 100644 app/src/main/java/io/pslab/activity/OscilloscopeActivity.java delete mode 100644 app/src/main/java/io/pslab/activity/PowerSourceActivity.java delete mode 100644 app/src/main/java/io/pslab/activity/RoboticArmActivity.java delete mode 100644 app/src/main/java/io/pslab/activity/SensorActivity.java delete mode 100644 app/src/main/java/io/pslab/activity/SensorDataLoggerActivity.java delete mode 100644 app/src/main/java/io/pslab/activity/SettingsActivity.java delete mode 100644 app/src/main/java/io/pslab/activity/ShowLoggedData.java delete mode 100644 app/src/main/java/io/pslab/activity/SoundMeterActivity.java delete mode 100644 app/src/main/java/io/pslab/activity/SplashActivity.java delete mode 100644 app/src/main/java/io/pslab/activity/ThermometerActivity.java delete mode 100644 app/src/main/java/io/pslab/activity/WaveGeneratorActivity.java delete mode 100644 app/src/main/java/io/pslab/activity/guide/GuideActivity.java delete mode 100644 app/src/main/java/io/pslab/adapters/ApplicationAdapter.java delete mode 100644 app/src/main/java/io/pslab/adapters/CheckBoxAdapter.java delete mode 100644 app/src/main/java/io/pslab/adapters/ControlMainAdapter.java delete mode 100644 app/src/main/java/io/pslab/adapters/MPUDataAdapter.java delete mode 100644 app/src/main/java/io/pslab/adapters/OscilloscopeMeasurementsAdapter.java delete mode 100644 app/src/main/java/io/pslab/adapters/SensorLoggerListAdapter.java delete mode 100644 app/src/main/java/io/pslab/communication/AnalyticsClass.java delete mode 100644 app/src/main/java/io/pslab/communication/CommandsProto.java delete mode 100644 app/src/main/java/io/pslab/communication/CommunicationHandler.java delete mode 100644 app/src/main/java/io/pslab/communication/HttpAsyncTask.java delete mode 100644 app/src/main/java/io/pslab/communication/HttpHandler.java delete mode 100644 app/src/main/java/io/pslab/communication/PacketHandler.java delete mode 100644 app/src/main/java/io/pslab/communication/ScienceLab.java delete mode 100644 app/src/main/java/io/pslab/communication/SensorList.java delete mode 100644 app/src/main/java/io/pslab/communication/analogChannel/AnalogAquisitionChannel.java delete mode 100644 app/src/main/java/io/pslab/communication/analogChannel/AnalogConstants.java delete mode 100644 app/src/main/java/io/pslab/communication/analogChannel/AnalogInputSource.java delete mode 100644 app/src/main/java/io/pslab/communication/digitalChannel/DigitalChannel.java delete mode 100644 app/src/main/java/io/pslab/communication/peripherals/DACChannel.java delete mode 100644 app/src/main/java/io/pslab/communication/peripherals/I2C.java delete mode 100644 app/src/main/java/io/pslab/communication/peripherals/MCP4728.java delete mode 100644 app/src/main/java/io/pslab/communication/peripherals/NRF24L01.java delete mode 100644 app/src/main/java/io/pslab/communication/peripherals/RadioLink.java delete mode 100644 app/src/main/java/io/pslab/communication/peripherals/SPI.java delete mode 100644 app/src/main/java/io/pslab/communication/sensors/AD7718.java delete mode 100644 app/src/main/java/io/pslab/communication/sensors/AD9833.java delete mode 100644 app/src/main/java/io/pslab/communication/sensors/ADS1115.java delete mode 100644 app/src/main/java/io/pslab/communication/sensors/APDS9960.java delete mode 100644 app/src/main/java/io/pslab/communication/sensors/BH1750.java delete mode 100644 app/src/main/java/io/pslab/communication/sensors/BMP180.java delete mode 100644 app/src/main/java/io/pslab/communication/sensors/CCS811.java delete mode 100644 app/src/main/java/io/pslab/communication/sensors/ComplementaryFilter.java delete mode 100644 app/src/main/java/io/pslab/communication/sensors/HMC5883L.java delete mode 100644 app/src/main/java/io/pslab/communication/sensors/KalmanFilter.java delete mode 100644 app/src/main/java/io/pslab/communication/sensors/MF522.java delete mode 100644 app/src/main/java/io/pslab/communication/sensors/MLX90614.java delete mode 100644 app/src/main/java/io/pslab/communication/sensors/MPU6050.java delete mode 100644 app/src/main/java/io/pslab/communication/sensors/MPU925x.java delete mode 100644 app/src/main/java/io/pslab/communication/sensors/SHT21.java delete mode 100644 app/src/main/java/io/pslab/communication/sensors/SSD1306.java delete mode 100644 app/src/main/java/io/pslab/communication/sensors/Sx1276.java delete mode 100644 app/src/main/java/io/pslab/communication/sensors/TSL2561.java delete mode 100644 app/src/main/java/io/pslab/communication/sensors/VL53L0X.java delete mode 100644 app/src/main/java/io/pslab/filters/BandstopFilter.java delete mode 100644 app/src/main/java/io/pslab/filters/Lfilter.java delete mode 100644 app/src/main/java/io/pslab/fragment/AboutUsFragment.java delete mode 100644 app/src/main/java/io/pslab/fragment/AccelerometerDataFragment.java delete mode 100644 app/src/main/java/io/pslab/fragment/AccelerometerSettingsFragment.java delete mode 100644 app/src/main/java/io/pslab/fragment/AccelerometerViewFragment.java delete mode 100644 app/src/main/java/io/pslab/fragment/BaroMeterDataFragment.java delete mode 100644 app/src/main/java/io/pslab/fragment/BaroMeterSettingsFragment.java delete mode 100644 app/src/main/java/io/pslab/fragment/BluetoothScanFragment.java delete mode 100644 app/src/main/java/io/pslab/fragment/ChannelParametersFragment.java delete mode 100644 app/src/main/java/io/pslab/fragment/CompassDataFragment.java delete mode 100644 app/src/main/java/io/pslab/fragment/CompassSettingsFragment.java delete mode 100644 app/src/main/java/io/pslab/fragment/ControlFragmentAdvanced.java delete mode 100644 app/src/main/java/io/pslab/fragment/ControlFragmentMain.java delete mode 100644 app/src/main/java/io/pslab/fragment/ControlFragmentRead.java delete mode 100644 app/src/main/java/io/pslab/fragment/DataAnalysisFragment.java delete mode 100644 app/src/main/java/io/pslab/fragment/DustSensorDataFragment.java delete mode 100644 app/src/main/java/io/pslab/fragment/DustSensorSettingsFragment.java delete mode 100644 app/src/main/java/io/pslab/fragment/ESPFragment.java delete mode 100644 app/src/main/java/io/pslab/fragment/FAQFragment.java delete mode 100644 app/src/main/java/io/pslab/fragment/GasSensorDataFragment.java delete mode 100644 app/src/main/java/io/pslab/fragment/GyroscopeDataFragment.java delete mode 100644 app/src/main/java/io/pslab/fragment/GyroscopeSettingsFragment.java delete mode 100644 app/src/main/java/io/pslab/fragment/GyroscopeViewFragment.java delete mode 100644 app/src/main/java/io/pslab/fragment/HelpAndFeedbackFragment.java delete mode 100644 app/src/main/java/io/pslab/fragment/HomeFragment.java delete mode 100644 app/src/main/java/io/pslab/fragment/InstrumentsFragment.java delete mode 100644 app/src/main/java/io/pslab/fragment/LALogicLinesFragment.java delete mode 100644 app/src/main/java/io/pslab/fragment/LuxMeterDataFragment.java delete mode 100644 app/src/main/java/io/pslab/fragment/LuxMeterSettingFragment.java delete mode 100644 app/src/main/java/io/pslab/fragment/MultimeterSettingsFragment.java delete mode 100644 app/src/main/java/io/pslab/fragment/OscilloscopePlaybackFragment.java delete mode 100644 app/src/main/java/io/pslab/fragment/PSLabPinLayoutFragment.java delete mode 100644 app/src/main/java/io/pslab/fragment/SettingsFragment.java delete mode 100644 app/src/main/java/io/pslab/fragment/SoundMeterDataFragment.java delete mode 100644 app/src/main/java/io/pslab/fragment/SoundmeterSettingsFragment.java delete mode 100644 app/src/main/java/io/pslab/fragment/ThermometerDataFragment.java delete mode 100644 app/src/main/java/io/pslab/fragment/ThermometerSettingsFragment.java delete mode 100644 app/src/main/java/io/pslab/fragment/TimebaseTriggerFragment.java delete mode 100644 app/src/main/java/io/pslab/fragment/XYPlotFragment.java delete mode 100644 app/src/main/java/io/pslab/interfaces/HttpCallback.java delete mode 100644 app/src/main/java/io/pslab/interfaces/OperationCallback.java delete mode 100644 app/src/main/java/io/pslab/interfaces/sensorloggers/AccelerometerRecordables.java delete mode 100644 app/src/main/java/io/pslab/interfaces/sensorloggers/BaroMeterRecordables.java delete mode 100644 app/src/main/java/io/pslab/interfaces/sensorloggers/CompassRecordables.java delete mode 100644 app/src/main/java/io/pslab/interfaces/sensorloggers/DustSensorRecordables.java delete mode 100644 app/src/main/java/io/pslab/interfaces/sensorloggers/GasSensorRecordables.java delete mode 100644 app/src/main/java/io/pslab/interfaces/sensorloggers/GyroscopeRecordables.java delete mode 100644 app/src/main/java/io/pslab/interfaces/sensorloggers/LogicAnalyzerRecordables.java delete mode 100644 app/src/main/java/io/pslab/interfaces/sensorloggers/LuxMeterRecordables.java delete mode 100644 app/src/main/java/io/pslab/interfaces/sensorloggers/MultimeterRecordables.java delete mode 100644 app/src/main/java/io/pslab/interfaces/sensorloggers/OscilloscopeRecordables.java delete mode 100644 app/src/main/java/io/pslab/interfaces/sensorloggers/PowerSourceRecordables.java delete mode 100644 app/src/main/java/io/pslab/interfaces/sensorloggers/SensorRecordables.java delete mode 100644 app/src/main/java/io/pslab/interfaces/sensorloggers/ServoRecordables.java delete mode 100644 app/src/main/java/io/pslab/interfaces/sensorloggers/SoundMeterRecordables.java delete mode 100644 app/src/main/java/io/pslab/interfaces/sensorloggers/ThermometerRecordables.java delete mode 100644 app/src/main/java/io/pslab/interfaces/sensorloggers/WaveGeneratorRecordables.java delete mode 100644 app/src/main/java/io/pslab/items/ApplicationItem.java delete mode 100644 app/src/main/java/io/pslab/items/PinDetails.java delete mode 100644 app/src/main/java/io/pslab/items/SquareImageButton.java delete mode 100644 app/src/main/java/io/pslab/items/SquareLinearLayout.java delete mode 100644 app/src/main/java/io/pslab/models/AccelerometerData.java delete mode 100644 app/src/main/java/io/pslab/models/BaroData.java delete mode 100644 app/src/main/java/io/pslab/models/CompassData.java delete mode 100644 app/src/main/java/io/pslab/models/DataMPU6050.java delete mode 100644 app/src/main/java/io/pslab/models/DustSensorData.java delete mode 100644 app/src/main/java/io/pslab/models/GasSensorData.java delete mode 100644 app/src/main/java/io/pslab/models/GyroData.java delete mode 100644 app/src/main/java/io/pslab/models/LogicAnalyzerData.java delete mode 100644 app/src/main/java/io/pslab/models/LuxData.java delete mode 100644 app/src/main/java/io/pslab/models/MultimeterData.java delete mode 100644 app/src/main/java/io/pslab/models/OscilloscopeData.java delete mode 100644 app/src/main/java/io/pslab/models/PSLabSensor.java delete mode 100644 app/src/main/java/io/pslab/models/PowerSourceData.java delete mode 100644 app/src/main/java/io/pslab/models/SensorDataBlock.java delete mode 100644 app/src/main/java/io/pslab/models/SensorLogged.java delete mode 100644 app/src/main/java/io/pslab/models/ServoData.java delete mode 100644 app/src/main/java/io/pslab/models/SoundData.java delete mode 100644 app/src/main/java/io/pslab/models/ThermometerData.java delete mode 100644 app/src/main/java/io/pslab/models/WaveGeneratorData.java delete mode 100644 app/src/main/java/io/pslab/others/AudioJack.java delete mode 100644 app/src/main/java/io/pslab/others/CSVDataLine.java delete mode 100644 app/src/main/java/io/pslab/others/CSVLogger.java delete mode 100644 app/src/main/java/io/pslab/others/ChannelAxisFormatter.java delete mode 100644 app/src/main/java/io/pslab/others/ControlActivityCommon.java delete mode 100644 app/src/main/java/io/pslab/others/CustomScrollView.java delete mode 100644 app/src/main/java/io/pslab/others/CustomSnackBar.java delete mode 100644 app/src/main/java/io/pslab/others/CustomTabService.java delete mode 100644 app/src/main/java/io/pslab/others/EditTextWidget.java delete mode 100644 app/src/main/java/io/pslab/others/FloatSeekBar.java delete mode 100644 app/src/main/java/io/pslab/others/GPSLogger.java delete mode 100644 app/src/main/java/io/pslab/others/InitializationVariable.java delete mode 100644 app/src/main/java/io/pslab/others/LocalDataLog.java delete mode 100644 app/src/main/java/io/pslab/others/LogicAnalyzerAxisFormatter.java delete mode 100644 app/src/main/java/io/pslab/others/MathUtils.java delete mode 100644 app/src/main/java/io/pslab/others/NothingSelectedSpinnerAdapter.java delete mode 100644 app/src/main/java/io/pslab/others/OscilloscopeMeasurements.java delete mode 100644 app/src/main/java/io/pslab/others/PSLabPermission.java delete mode 100644 app/src/main/java/io/pslab/others/Plot2D.java delete mode 100644 app/src/main/java/io/pslab/others/PreferenceManager.java delete mode 100644 app/src/main/java/io/pslab/others/ScienceLabCommon.java delete mode 100644 app/src/main/java/io/pslab/others/SwipeGestureDetector.java delete mode 100644 app/src/main/java/io/pslab/others/ViewGroupUtils.java delete mode 100644 app/src/main/java/io/pslab/others/WaveGeneratorConstants.java delete mode 100644 app/src/main/java/io/pslab/others/ZoomLayout.java delete mode 100644 app/src/main/java/io/pslab/receivers/USBDetachReceiver.java delete mode 100644 app/src/main/java/io/pslab/sensors/SensorADS1115.java delete mode 100644 app/src/main/java/io/pslab/sensors/SensorAPDS9960.java delete mode 100644 app/src/main/java/io/pslab/sensors/SensorBMP180.java delete mode 100644 app/src/main/java/io/pslab/sensors/SensorCCS811.java delete mode 100644 app/src/main/java/io/pslab/sensors/SensorHMC5883L.java delete mode 100644 app/src/main/java/io/pslab/sensors/SensorMLX90614.java delete mode 100644 app/src/main/java/io/pslab/sensors/SensorMPU6050.java delete mode 100644 app/src/main/java/io/pslab/sensors/SensorMPU925X.java delete mode 100644 app/src/main/java/io/pslab/sensors/SensorSHT21.java delete mode 100644 app/src/main/java/io/pslab/sensors/SensorTSL2561.java delete mode 100644 app/src/main/java/io/pslab/sensors/SensorVL53L0X.java delete mode 100644 app/src/main/res/anim/fade_in.xml delete mode 100644 app/src/main/res/anim/fade_out.xml delete mode 100644 app/src/main/res/animator-v21/selector_animator.xml delete mode 100644 app/src/main/res/drawable-hdpi/compass_icon.png delete mode 100644 app/src/main/res/drawable-hdpi/ic_pwm_pic.png delete mode 100644 app/src/main/res/drawable-hdpi/ic_sin.png delete mode 100644 app/src/main/res/drawable-hdpi/ic_square.png delete mode 100644 app/src/main/res/drawable-hdpi/ic_triangular.png delete mode 100644 app/src/main/res/drawable-hdpi/sin_wave_guide.PNG delete mode 100644 app/src/main/res/drawable-hdpi/wav_gen_square_img.png delete mode 100644 app/src/main/res/drawable-ldpi/compass_icon.png delete mode 100644 app/src/main/res/drawable-mdpi/compass_icon.png delete mode 100644 app/src/main/res/drawable-mdpi/ic_pwm_pic.png delete mode 100644 app/src/main/res/drawable-mdpi/ic_sin.png delete mode 100644 app/src/main/res/drawable-mdpi/ic_square.png delete mode 100644 app/src/main/res/drawable-mdpi/ic_triangular.png delete mode 100644 app/src/main/res/drawable-mdpi/rectangle_border_black.xml delete mode 100644 app/src/main/res/drawable-xhdpi/compass_icon.png delete mode 100644 app/src/main/res/drawable-xhdpi/ic_pwm_pic.png delete mode 100644 app/src/main/res/drawable-xhdpi/ic_sin.png delete mode 100644 app/src/main/res/drawable-xhdpi/ic_square.png delete mode 100644 app/src/main/res/drawable-xhdpi/ic_triangular.png delete mode 100644 app/src/main/res/drawable-xxhdpi/compass_icon.png delete mode 100644 app/src/main/res/drawable-xxhdpi/ic_pwm_pic.png delete mode 100644 app/src/main/res/drawable-xxhdpi/ic_sin.png delete mode 100644 app/src/main/res/drawable-xxhdpi/ic_square.png delete mode 100644 app/src/main/res/drawable-xxhdpi/ic_triangular.png delete mode 100644 app/src/main/res/drawable-xxhdpi/tile_icon_gas.xml delete mode 100644 app/src/main/res/drawable-xxxhdpi/compass_icon.png delete mode 100644 app/src/main/res/drawable/action_item_advanced.png delete mode 100644 app/src/main/res/drawable/action_item_main.png delete mode 100644 app/src/main/res/drawable/action_item_read.png delete mode 100644 app/src/main/res/drawable/ads1115.jpg delete mode 100644 app/src/main/res/drawable/app_icon.png delete mode 100644 app/src/main/res/drawable/app_icon_round.png delete mode 100644 app/src/main/res/drawable/baseline_article_24.xml delete mode 100644 app/src/main/res/drawable/baseline_attribution_24.xml delete mode 100644 app/src/main/res/drawable/baseline_menu_book_24.xml delete mode 100644 app/src/main/res/drawable/baseline_star_24.xml delete mode 100644 app/src/main/res/drawable/bg_circle.xml delete mode 100644 app/src/main/res/drawable/bh1750_schematic.png delete mode 100644 app/src/main/res/drawable/bmp180.jpg delete mode 100644 app/src/main/res/drawable/bmp180_schematic.png delete mode 100644 app/src/main/res/drawable/btn_back_rounded.xml delete mode 100644 app/src/main/res/drawable/btn_back_rounded_light.xml delete mode 100644 app/src/main/res/drawable/btn_sheet_back.xml delete mode 100644 app/src/main/res/drawable/button_clicked.xml delete mode 100644 app/src/main/res/drawable/button_normal.xml delete mode 100644 app/src/main/res/drawable/capacitor.png delete mode 100644 app/src/main/res/drawable/carousel_view_background.xml delete mode 100644 app/src/main/res/drawable/ccs811.jpg delete mode 100644 app/src/main/res/drawable/channel_parameters.gif delete mode 100644 app/src/main/res/drawable/circle_pause_button.xml delete mode 100644 app/src/main/res/drawable/circle_play_button.xml delete mode 100644 app/src/main/res/drawable/compass_help_icon.xml delete mode 100644 app/src/main/res/drawable/control_custom_border.xml delete mode 100644 app/src/main/res/drawable/control_edittext.xml delete mode 100644 app/src/main/res/drawable/create_config_icon.xml delete mode 100644 app/src/main/res/drawable/data_analysis.png delete mode 100644 app/src/main/res/drawable/data_analysis_view.png delete mode 100755 app/src/main/res/drawable/delete_icon.xml delete mode 100644 app/src/main/res/drawable/dialog_body_background.xml delete mode 100644 app/src/main/res/drawable/dialog_header_background.xml delete mode 100644 app/src/main/res/drawable/find_mobile_axis.png delete mode 100644 app/src/main/res/drawable/green_led.png delete mode 100644 app/src/main/res/drawable/gyroscope_axes_orientation.png delete mode 100644 app/src/main/res/drawable/gyroscope_logdata_logo.png delete mode 100644 app/src/main/res/drawable/gyroscope_logo.xml delete mode 100644 app/src/main/res/drawable/hmc5883l.jpg delete mode 100644 app/src/main/res/drawable/ic_android_black_24dp.xml delete mode 100644 app/src/main/res/drawable/ic_apps_black_24dp.xml delete mode 100644 app/src/main/res/drawable/ic_arrow_back_white_24dp.xml delete mode 100644 app/src/main/res/drawable/ic_arrow_drop_down_black_24dp.xml delete mode 100644 app/src/main/res/drawable/ic_arrow_drop_down_white_24dp.xml delete mode 100644 app/src/main/res/drawable/ic_arrow_drop_up_black_24dp.xml delete mode 100644 app/src/main/res/drawable/ic_arrow_drop_up_white_24dp.xml delete mode 100644 app/src/main/res/drawable/ic_arrow_left_24dp.xml delete mode 100644 app/src/main/res/drawable/ic_arrow_right_24dp.xml delete mode 100644 app/src/main/res/drawable/ic_bug_report_black_24dp.png delete mode 100644 app/src/main/res/drawable/ic_delete_red_24dp.xml delete mode 100644 app/src/main/res/drawable/ic_developer_board_black_24dp.xml delete mode 100644 app/src/main/res/drawable/ic_export_file.xml delete mode 100644 app/src/main/res/drawable/ic_feedback_black_24dp.png delete mode 100644 app/src/main/res/drawable/ic_fullscreen_black_24dp.xml delete mode 100644 app/src/main/res/drawable/ic_info_black_24dp.png delete mode 100644 app/src/main/res/drawable/ic_map_red_24dp.xml delete mode 100644 app/src/main/res/drawable/ic_nav_header_logo.xml delete mode 100644 app/src/main/res/drawable/ic_pause_white_24dp.xml delete mode 100644 app/src/main/res/drawable/ic_play_arrow_white_24dp.xml delete mode 100644 app/src/main/res/drawable/ic_play_button.xml delete mode 100644 app/src/main/res/drawable/ic_record_stop_white.xml delete mode 100644 app/src/main/res/drawable/ic_record_white.xml delete mode 100644 app/src/main/res/drawable/ic_settings_black_24dp.xml delete mode 100644 app/src/main/res/drawable/ic_shopping_cart_black_24dp.xml delete mode 100644 app/src/main/res/drawable/ic_stop_white_24dp.xml delete mode 100644 app/src/main/res/drawable/ic_usb_connected.xml delete mode 100644 app/src/main/res/drawable/ic_usb_disconnected.xml delete mode 100644 app/src/main/res/drawable/ic_user__24dp.xml delete mode 100644 app/src/main/res/drawable/ic_widgets_black_24dp.xml delete mode 100644 app/src/main/res/drawable/ic_wifi_tethering_black_24dp.xml delete mode 100644 app/src/main/res/drawable/icon_logic_analyzer_white.xml delete mode 100644 app/src/main/res/drawable/icon_oscilloscope_white.xml delete mode 100644 app/src/main/res/drawable/icons8_usb_connected_100.png delete mode 100644 app/src/main/res/drawable/icons_usb_disconnected_100.png delete mode 100644 app/src/main/res/drawable/knob.xml delete mode 100644 app/src/main/res/drawable/knob_base.xml delete mode 100644 app/src/main/res/drawable/la_chart_custom_border.xml delete mode 100644 app/src/main/res/drawable/la_custom_border.xml delete mode 100644 app/src/main/res/drawable/la_formatted_button.xml delete mode 100644 app/src/main/res/drawable/logic_analyzer_circuit.png delete mode 100644 app/src/main/res/drawable/logo.png delete mode 100644 app/src/main/res/drawable/logo200x200.png delete mode 100644 app/src/main/res/drawable/menu_icon_guide.xml delete mode 100644 app/src/main/res/drawable/menu_icon_map.xml delete mode 100644 app/src/main/res/drawable/menu_icon_save.xml delete mode 100644 app/src/main/res/drawable/mic_schematic.png delete mode 100644 app/src/main/res/drawable/mlx90614.jpg delete mode 100644 app/src/main/res/drawable/mlx90614_schematic.png delete mode 100644 app/src/main/res/drawable/multimeter_circuit.png delete mode 100644 app/src/main/res/drawable/nav_header_logo.png delete mode 100644 app/src/main/res/drawable/oscilloscope_schematic.png delete mode 100644 app/src/main/res/drawable/pause.png delete mode 100755 app/src/main/res/drawable/pause_icon.xml delete mode 100644 app/src/main/res/drawable/phone_x_axis.png delete mode 100644 app/src/main/res/drawable/phone_y_axis.png delete mode 100644 app/src/main/res/drawable/phone_z_axis.png delete mode 100644 app/src/main/res/drawable/play.png delete mode 100644 app/src/main/res/drawable/powersource_circuit.png delete mode 100644 app/src/main/res/drawable/pslab_v5_back_colormap.png delete mode 100644 app/src/main/res/drawable/pslab_v5_back_layout.png delete mode 100644 app/src/main/res/drawable/pslab_v5_front_colormap.png delete mode 100644 app/src/main/res/drawable/pslab_v5_front_layout.png delete mode 100644 app/src/main/res/drawable/rectangle_border.xml delete mode 100644 app/src/main/res/drawable/red_led.png delete mode 100644 app/src/main/res/drawable/robotic_arm.xml delete mode 100644 app/src/main/res/drawable/rounded_custom_border.xml delete mode 100644 app/src/main/res/drawable/rounded_custom_border_2.xml delete mode 100644 app/src/main/res/drawable/selector_button.xml delete mode 100644 app/src/main/res/drawable/servo_drag_handle.png delete mode 100755 app/src/main/res/drawable/share_icon.png delete mode 100644 app/src/main/res/drawable/text.png delete mode 100644 app/src/main/res/drawable/text_color_selector.xml delete mode 100644 app/src/main/res/drawable/thermometer_logo.xml delete mode 100644 app/src/main/res/drawable/tile_icon_accelerometer.xml delete mode 100644 app/src/main/res/drawable/tile_icon_barometer.xml delete mode 100644 app/src/main/res/drawable/tile_icon_barometer_log.xml delete mode 100644 app/src/main/res/drawable/tile_icon_compass.xml delete mode 100644 app/src/main/res/drawable/tile_icon_compass_log.xml delete mode 100644 app/src/main/res/drawable/tile_icon_horizontal_bars.xml delete mode 100644 app/src/main/res/drawable/tile_icon_logic_analyzer.xml delete mode 100644 app/src/main/res/drawable/tile_icon_lux_meter.xml delete mode 100644 app/src/main/res/drawable/tile_icon_lux_meter_log.xml delete mode 100644 app/src/main/res/drawable/tile_icon_multimeter.xml delete mode 100644 app/src/main/res/drawable/tile_icon_oscilloscope.xml delete mode 100644 app/src/main/res/drawable/tile_icon_power_source.xml delete mode 100644 app/src/main/res/drawable/tile_icon_sensors.xml delete mode 100644 app/src/main/res/drawable/tile_icon_vertical_bars.xml delete mode 100644 app/src/main/res/drawable/tile_icon_wave_generator.xml delete mode 100644 app/src/main/res/drawable/timebase.png delete mode 100644 app/src/main/res/drawable/timebase_view.png delete mode 100644 app/src/main/res/drawable/tv_border.xml delete mode 100644 app/src/main/res/drawable/vl53l0x.jpg delete mode 100644 app/src/main/res/drawable/xy_plot_view.png delete mode 100644 app/src/main/res/drawable/xymode.png delete mode 100644 app/src/main/res/layout-hdpi/activity_multimeter.xml delete mode 100644 app/src/main/res/layout-hdpi/control_main_list_item.xml delete mode 100644 app/src/main/res/layout-hdpi/fragment_control_advanced.xml delete mode 100644 app/src/main/res/layout-hdpi/fragment_control_read.xml delete mode 100644 app/src/main/res/layout-land/activity_powersource_layout.xml delete mode 100644 app/src/main/res/layout-land/activity_wave_generator.xml delete mode 100644 app/src/main/res/layout-land/logic_analyzer_logic_lines.xml delete mode 100644 app/src/main/res/layout-land/splash_screen.xml delete mode 100644 app/src/main/res/layout-land/wave_generator_wave_controls.xml delete mode 100644 app/src/main/res/layout-sw600dp/activity_main.xml delete mode 100644 app/src/main/res/layout-sw600dp/activity_multimeter.xml delete mode 100644 app/src/main/res/layout-sw600dp/activity_power_source.xml delete mode 100644 app/src/main/res/layout-sw600dp/activity_wave_generator.xml delete mode 100644 app/src/main/res/layout-sw600dp/fragment_channel_parameters.xml delete mode 100644 app/src/main/res/layout-sw600dp/fragment_data_analysis.xml delete mode 100644 app/src/main/res/layout-sw600dp/fragment_xyplot.xml delete mode 100644 app/src/main/res/layout-xhdpi/activity_multimeter.xml delete mode 100644 app/src/main/res/layout-xhdpi/control_main_list_item.xml delete mode 100644 app/src/main/res/layout-xhdpi/fragment_control_advanced.xml delete mode 100644 app/src/main/res/layout-xhdpi/fragment_control_read.xml delete mode 100644 app/src/main/res/layout/accelerometer_list_item.xml delete mode 100644 app/src/main/res/layout/activity_compass.xml delete mode 100644 app/src/main/res/layout/activity_compass_main.xml delete mode 100644 app/src/main/res/layout/activity_control.xml delete mode 100644 app/src/main/res/layout/activity_create_config.xml delete mode 100644 app/src/main/res/layout/activity_data_logger.xml delete mode 100644 app/src/main/res/layout/activity_data_sensor_logger.xml delete mode 100644 app/src/main/res/layout/activity_generic_sensor.xml delete mode 100644 app/src/main/res/layout/activity_logic_analyzer.xml delete mode 100644 app/src/main/res/layout/activity_main.xml delete mode 100644 app/src/main/res/layout/activity_maps.xml delete mode 100644 app/src/main/res/layout/activity_multimeter.xml delete mode 100644 app/src/main/res/layout/activity_multimeter_main.xml delete mode 100644 app/src/main/res/layout/activity_oscilloscope.xml delete mode 100644 app/src/main/res/layout/activity_power_source.xml delete mode 100644 app/src/main/res/layout/activity_powersource_layout.xml delete mode 100644 app/src/main/res/layout/activity_robotic_arm.xml delete mode 100644 app/src/main/res/layout/activity_sensor_graph_view.xml delete mode 100644 app/src/main/res/layout/activity_settings.xml delete mode 100644 app/src/main/res/layout/activity_show_logged_data.xml delete mode 100644 app/src/main/res/layout/activity_thermometer.xml delete mode 100644 app/src/main/res/layout/activity_wave_generator.xml delete mode 100644 app/src/main/res/layout/activity_wave_generator_main.xml delete mode 100644 app/src/main/res/layout/app_bar_main.xml delete mode 100644 app/src/main/res/layout/application_list_item.xml delete mode 100644 app/src/main/res/layout/applications_fragment.xml delete mode 100644 app/src/main/res/layout/bottom_sheet_custom.xml delete mode 100644 app/src/main/res/layout/bottom_sheet_oscilloscope.xml delete mode 100644 app/src/main/res/layout/bottom_sheet_powersource.xml delete mode 100644 app/src/main/res/layout/bottom_sheet_robotic_arm.xml delete mode 100644 app/src/main/res/layout/bottomsheet_compass.xml delete mode 100644 app/src/main/res/layout/bottomsheet_thermometer.xml delete mode 100644 app/src/main/res/layout/btm_sheet_wavegen_custom.xml delete mode 100644 app/src/main/res/layout/control_main_list_item.xml delete mode 100644 app/src/main/res/layout/custom_dialog_box.xml delete mode 100644 app/src/main/res/layout/custom_spinner.xml delete mode 100644 app/src/main/res/layout/custom_spinner_mic.xml delete mode 100644 app/src/main/res/layout/custom_spinner_mic_tablet.xml delete mode 100644 app/src/main/res/layout/custom_spinner_tablet.xml delete mode 100644 app/src/main/res/layout/dialog_input_edit_text_widget.xml delete mode 100644 app/src/main/res/layout/edittext_control.xml delete mode 100644 app/src/main/res/layout/fragment_about_us.xml delete mode 100644 app/src/main/res/layout/fragment_accelerometer_data.xml delete mode 100644 app/src/main/res/layout/fragment_barometer_data.xml delete mode 100644 app/src/main/res/layout/fragment_bluetooth_scan.xml delete mode 100644 app/src/main/res/layout/fragment_channel_parameters.xml delete mode 100644 app/src/main/res/layout/fragment_control_advanced.xml delete mode 100644 app/src/main/res/layout/fragment_control_main.xml delete mode 100644 app/src/main/res/layout/fragment_control_read.xml delete mode 100644 app/src/main/res/layout/fragment_data_analysis.xml delete mode 100644 app/src/main/res/layout/fragment_data_analysis_main.xml delete mode 100644 app/src/main/res/layout/fragment_dust_sensor.xml delete mode 100644 app/src/main/res/layout/fragment_esp.xml delete mode 100644 app/src/main/res/layout/fragment_faq.xml delete mode 100644 app/src/main/res/layout/fragment_gas_sensor.xml delete mode 100644 app/src/main/res/layout/fragment_gyroscope_data.xml delete mode 100644 app/src/main/res/layout/fragment_help_feedback.xml delete mode 100644 app/src/main/res/layout/fragment_lux_meter_data.xml delete mode 100644 app/src/main/res/layout/fragment_oscilloscope_playback.xml delete mode 100644 app/src/main/res/layout/fragment_pin_layout.xml delete mode 100644 app/src/main/res/layout/fragment_sound_meter_data.xml delete mode 100644 app/src/main/res/layout/fragment_timebase_tigger.xml delete mode 100644 app/src/main/res/layout/fragment_xyplot.xml delete mode 100644 app/src/main/res/layout/generic_sensor_layout.xml delete mode 100644 app/src/main/res/layout/gyroscope_list_item.xml delete mode 100644 app/src/main/res/layout/home_fragment.xml delete mode 100644 app/src/main/res/layout/item_checkbox.xml delete mode 100644 app/src/main/res/layout/list_group.xml delete mode 100644 app/src/main/res/layout/list_item.xml delete mode 100644 app/src/main/res/layout/logger_data_item.xml delete mode 100644 app/src/main/res/layout/logic_analyzer_logic_lines.xml delete mode 100644 app/src/main/res/layout/measurement_item.xml delete mode 100644 app/src/main/res/layout/modified_spinner_dropdown_list.xml delete mode 100644 app/src/main/res/layout/nav_header_main.xml delete mode 100644 app/src/main/res/layout/nothing_selected_spinner_row.xml delete mode 100644 app/src/main/res/layout/pin_description_dialog.xml delete mode 100644 app/src/main/res/layout/position_controls.xml delete mode 100644 app/src/main/res/layout/robotic_arm_timeline_textview.xml delete mode 100644 app/src/main/res/layout/sensor_ads1115.xml delete mode 100644 app/src/main/res/layout/sensor_apds9960.xml delete mode 100644 app/src/main/res/layout/sensor_bmp180.xml delete mode 100644 app/src/main/res/layout/sensor_ccs811.xml delete mode 100644 app/src/main/res/layout/sensor_hmc5883l.xml delete mode 100644 app/src/main/res/layout/sensor_list_item.xml delete mode 100644 app/src/main/res/layout/sensor_list_long_click_dailog.xml delete mode 100644 app/src/main/res/layout/sensor_main.xml delete mode 100644 app/src/main/res/layout/sensor_mlx90614.xml delete mode 100644 app/src/main/res/layout/sensor_mpu6050.xml delete mode 100644 app/src/main/res/layout/sensor_mpu6050_data_card.xml delete mode 100644 app/src/main/res/layout/sensor_mpu925x.xml delete mode 100644 app/src/main/res/layout/sensor_sht21.xml delete mode 100644 app/src/main/res/layout/sensor_tsl2561.xml delete mode 100644 app/src/main/res/layout/sensor_vl53l0x.xml delete mode 100644 app/src/main/res/layout/servo_controller_layout.xml delete mode 100644 app/src/main/res/layout/splash_screen.xml delete mode 100644 app/src/main/res/layout/wave_generator_analog_mode_layout.xml delete mode 100644 app/src/main/res/layout/wave_generator_digital_mode_layout.xml delete mode 100644 app/src/main/res/layout/wave_generator_main_controls.xml delete mode 100644 app/src/main/res/layout/wave_generator_preview.xml delete mode 100644 app/src/main/res/layout/wave_generator_seekbar.xml delete mode 100644 app/src/main/res/layout/wave_generator_wave_controls.xml delete mode 100644 app/src/main/res/layout/wavegen_intent_dialog.xml delete mode 100644 app/src/main/res/menu/activity_compass_help_menu.xml delete mode 100644 app/src/main/res/menu/activity_control_bottom_navigationbar.xml delete mode 100644 app/src/main/res/menu/activity_landscape_menu.xml delete mode 100644 app/src/main/res/menu/activity_main_drawer.xml delete mode 100644 app/src/main/res/menu/activity_sensor_data_logger.xml delete mode 100644 app/src/main/res/menu/activity_show_item_logged_data.xml delete mode 100644 app/src/main/res/menu/data_log_menu.xml delete mode 100644 app/src/main/res/menu/log_activity_menu.xml delete mode 100644 app/src/main/res/menu/logical_analyzer_menu.xml delete mode 100644 app/src/main/res/menu/multimeter_log_menu.xml delete mode 100644 app/src/main/res/menu/power_source_menu.xml delete mode 100644 app/src/main/res/menu/pslab_connectivity_menu.xml delete mode 100644 app/src/main/res/menu/robotic_arm_menu.xml delete mode 100644 app/src/main/res/menu/sensor_data_log_menu.xml delete mode 100644 app/src/main/res/menu/sensor_menu.xml delete mode 100644 app/src/main/res/menu/wave_generator_menu.xml delete mode 100644 app/src/main/res/values-ar/strings.xml delete mode 100644 app/src/main/res/values-hdpi/dimens.xml delete mode 100644 app/src/main/res/values-land/dimens.xml delete mode 100644 app/src/main/res/values-pl/strings.xml delete mode 100644 app/src/main/res/values-ru/strings.xml delete mode 100644 app/src/main/res/values-si/string.xml delete mode 100644 app/src/main/res/values-sw600dp/dimens.xml delete mode 100644 app/src/main/res/values-sw600dp/isTablet.xml delete mode 100644 app/src/main/res/values-v21/styles.xml delete mode 100644 app/src/main/res/values-w820dp/dimens.xml delete mode 100644 app/src/main/res/values-xhdpi/dimens.xml delete mode 100644 app/src/main/res/values/attr.xml delete mode 100644 app/src/main/res/values/colors.xml delete mode 100644 app/src/main/res/values/dimens.xml delete mode 100644 app/src/main/res/values/isTablet.xml delete mode 100644 app/src/main/res/values/strings.xml delete mode 100644 app/src/main/res/values/styles.xml delete mode 100644 app/src/main/res/xml/accelerometer_settings.xml delete mode 100644 app/src/main/res/xml/baro_meter_settings.xml delete mode 100644 app/src/main/res/xml/compass_settings.xml delete mode 100644 app/src/main/res/xml/data_extraction_rules.xml delete mode 100644 app/src/main/res/xml/device_filter.xml delete mode 100644 app/src/main/res/xml/dust_sensor_settings.xml delete mode 100644 app/src/main/res/xml/gyro_scope_settings.xml delete mode 100644 app/src/main/res/xml/lux_meter_settings.xml delete mode 100644 app/src/main/res/xml/multimeter_settings.xml delete mode 100644 app/src/main/res/xml/settings_preference_fragment.xml delete mode 100644 app/src/main/res/xml/sound_meter_settings.xml delete mode 100644 app/src/main/res/xml/thermometer_settings.xml delete mode 100644 build.gradle.kts delete mode 100644 docs/Lux meter.md delete mode 100644 docs/Oscilloscope.md delete mode 100644 docs/commitstyle.md delete mode 100644 docs/images/bh1750_schematic.png delete mode 100644 docs/images/fdroid_badge.png delete mode 100644 docs/images/instrument_accelerometer_guide.png delete mode 100755 docs/images/instrument_accelerometer_view.png delete mode 100644 docs/images/instrument_barometer_config.png delete mode 100644 docs/images/instrument_barometer_guide.png delete mode 100755 docs/images/instrument_barometer_view.png delete mode 100644 docs/images/instrument_compass_guide.png delete mode 100755 docs/images/instrument_compass_view.png delete mode 100644 docs/images/instrument_dust_sensor_view.png delete mode 100644 docs/images/instrument_gas_sensor_view.png delete mode 100755 docs/images/instrument_gyro_view.png delete mode 100755 docs/images/instrument_logic_analyzer_guide.png delete mode 100644 docs/images/instrument_logical_analyzer_view.png delete mode 100644 docs/images/instrument_luxmeter_config.png delete mode 100755 docs/images/instrument_luxmeter_guide.png delete mode 100644 docs/images/instrument_luxmeter_view.png delete mode 100755 docs/images/instrument_multi_meter_view.png delete mode 100644 docs/images/instrument_multimeter_guide.png delete mode 100755 docs/images/instrument_oscilloscope_audiojack_view.png delete mode 100755 docs/images/instrument_oscilloscope_channel_view.png delete mode 100644 docs/images/instrument_oscilloscope_dataanalysis.png delete mode 100755 docs/images/instrument_oscilloscope_guide.png delete mode 100644 docs/images/instrument_oscilloscope_timebase.png delete mode 100644 docs/images/instrument_oscilloscope_xyplot.png delete mode 100644 docs/images/instrument_power_source_guide.png delete mode 100755 docs/images/instrument_power_source_view.png delete mode 100755 docs/images/instrument_robotic_arm_controller_view.png delete mode 100644 docs/images/instrument_sensors_view.png delete mode 100755 docs/images/instrument_thermo_view.png delete mode 100755 docs/images/instrument_wave_generator_analog.png delete mode 100755 docs/images/instrument_wave_generator_digital.png delete mode 100644 docs/images/instrument_wavegenerator_guide.png delete mode 100755 docs/images/oscilloscope_channel_params.png delete mode 100755 docs/images/oscilloscope_data_analysis.png delete mode 100644 docs/images/oscilloscope_schematic.png delete mode 100644 docs/images/playstore_badge.png delete mode 100755 docs/images/view_about_us.png delete mode 100644 docs/images/view_app_settings.png delete mode 100755 docs/images/view_create_config_file.png delete mode 100755 docs/images/view_data_logger.png delete mode 100644 docs/images/view_datalogger_play.png delete mode 100755 docs/images/view_device_not_found.png delete mode 100644 docs/images/view_faq.png delete mode 100755 docs/images/view_home_screen.png delete mode 100644 docs/images/view_initialization.png delete mode 100755 docs/images/view_instrument_panel.png delete mode 100755 docs/images/view_log_map_location.png delete mode 100755 docs/images/view_not_connected_nav_menu.png delete mode 100644 docs/images/view_pin_detail_dialog.png delete mode 100755 docs/images/view_pin_layout_back.png delete mode 100755 docs/images/view_pin_layout_front.png delete mode 100644 docs/images/view_side_navigation_drawer.png delete mode 100644 docs/privacy_policy.html delete mode 100644 gradle.properties delete mode 100644 gradle/wrapper/gradle-wrapper.jar delete mode 100755 gradlew delete mode 100644 gradlew.bat create mode 100644 ios/.gitignore create mode 100644 ios/Flutter/AppFrameworkInfo.plist create mode 100644 ios/Flutter/Debug.xcconfig create mode 100644 ios/Flutter/Release.xcconfig create mode 100644 ios/Runner.xcodeproj/project.pbxproj create mode 100644 ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings create mode 100644 ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme create mode 100644 ios/Runner.xcworkspace/contents.xcworkspacedata create mode 100644 ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings create mode 100644 ios/Runner/AppDelegate.swift create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md create mode 100644 ios/Runner/Base.lproj/LaunchScreen.storyboard create mode 100644 ios/Runner/Base.lproj/Main.storyboard create mode 100644 ios/Runner/Info.plist create mode 100644 ios/Runner/Runner-Bridging-Header.h create mode 100644 ios/RunnerTests/RunnerTests.swift create mode 100644 lib/main.dart delete mode 100644 libs/croller-release.aar create mode 100644 linux/.gitignore create mode 100644 linux/CMakeLists.txt create mode 100644 linux/flutter/CMakeLists.txt create mode 100644 linux/flutter/generated_plugin_registrant.cc create mode 100644 linux/flutter/generated_plugin_registrant.h create mode 100644 linux/flutter/generated_plugins.cmake create mode 100644 linux/main.cc create mode 100644 linux/my_application.cc create mode 100644 linux/my_application.h create mode 100644 macos/.gitignore create mode 100644 macos/Flutter/Flutter-Debug.xcconfig create mode 100644 macos/Flutter/Flutter-Release.xcconfig create mode 100644 macos/Flutter/GeneratedPluginRegistrant.swift create mode 100644 macos/Runner.xcodeproj/project.pbxproj create mode 100644 macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme create mode 100644 macos/Runner.xcworkspace/contents.xcworkspacedata create mode 100644 macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 macos/Runner/AppDelegate.swift create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png create mode 100644 macos/Runner/Base.lproj/MainMenu.xib create mode 100644 macos/Runner/Configs/AppInfo.xcconfig create mode 100644 macos/Runner/Configs/Debug.xcconfig create mode 100644 macos/Runner/Configs/Release.xcconfig create mode 100644 macos/Runner/Configs/Warnings.xcconfig create mode 100644 macos/Runner/DebugProfile.entitlements create mode 100644 macos/Runner/Info.plist create mode 100644 macos/Runner/MainFlutterWindow.swift create mode 100644 macos/Runner/Release.entitlements create mode 100644 macos/RunnerTests/RunnerTests.swift create mode 100644 pubspec.lock create mode 100644 pubspec.yaml delete mode 100644 scripts/.gitignore delete mode 100755 scripts/prep-key.sh delete mode 100644 scripts/secrets.tar.enc delete mode 100644 settings.gradle.kts create mode 100644 test/widget_test.dart create mode 100644 web/favicon.png create mode 100644 web/icons/Icon-192.png create mode 100644 web/icons/Icon-512.png create mode 100644 web/icons/Icon-maskable-192.png create mode 100644 web/icons/Icon-maskable-512.png create mode 100644 web/index.html create mode 100644 web/manifest.json create mode 100644 windows/.gitignore create mode 100644 windows/CMakeLists.txt create mode 100644 windows/flutter/CMakeLists.txt create mode 100644 windows/flutter/generated_plugin_registrant.cc create mode 100644 windows/flutter/generated_plugin_registrant.h create mode 100644 windows/flutter/generated_plugins.cmake create mode 100644 windows/runner/CMakeLists.txt create mode 100644 windows/runner/Runner.rc create mode 100644 windows/runner/flutter_window.cpp create mode 100644 windows/runner/flutter_window.h create mode 100644 windows/runner/main.cpp create mode 100644 windows/runner/resource.h create mode 100644 windows/runner/resources/app_icon.ico create mode 100644 windows/runner/runner.exe.manifest create mode 100644 windows/runner/utils.cpp create mode 100644 windows/runner/utils.h create mode 100644 windows/runner/win32_window.cpp create mode 100644 windows/runner/win32_window.h diff --git a/.github/ISSUE_TEMPLATE b/.github/ISSUE_TEMPLATE deleted file mode 100644 index 372126193..000000000 --- a/.github/ISSUE_TEMPLATE +++ /dev/null @@ -1,23 +0,0 @@ -**Actual Behaviour** - - - -**Expected Behaviour** - - - -**Steps to reproduce it** - - - -**LogCat for the issue** - - - -**Screenshots of the issue** - - - -**Would you like to work on the issue?** - - diff --git a/.github/PULL_REQUEST_TEMPLATE b/.github/PULL_REQUEST_TEMPLATE deleted file mode 100644 index ffcde23e8..000000000 --- a/.github/PULL_REQUEST_TEMPLATE +++ /dev/null @@ -1,13 +0,0 @@ -Fixes # - -## Changes -- - -## Screenshots / Recordings - - -**Checklist**: -- [ ] **No hard coding**: I have used resources from `strings.xml`, `dimens.xml` and `colors.xml` without hard coding any value. -- [ ] **No end of file edits**: No modifications done at end of resource files `strings.xml`, `dimens.xml` or `colors.xml`. -- [ ] **Code reformatting**: I have reformatted code and fixed indentation in every file included in this pull request. -- [ ] **No extra space**: My code does not contain any extra lines or extra spaces than the ones that are necessary. \ No newline at end of file diff --git a/.github/dependabot.yml b/.github/dependabot.yml deleted file mode 100644 index 6c34404be..000000000 --- a/.github/dependabot.yml +++ /dev/null @@ -1,17 +0,0 @@ -version: 2 -updates: - - package-ecosystem: "github-actions" - directory: "/" - schedule: - interval: "weekly" - reviewers: - - "mariobehling" - - "cloudypadmal" - - - package-ecosystem: "gradle" - directory: "/" - schedule: - interval: "weekly" - reviewers: - - "mariobehling" - - "cloudypadmal" \ No newline at end of file diff --git a/.github/release-drafter.yml b/.github/release-drafter.yml deleted file mode 100644 index 1e99245e1..000000000 --- a/.github/release-drafter.yml +++ /dev/null @@ -1,27 +0,0 @@ -name-template: 'PSLab Version $RESOLVED_VERSION' -tag-template: 'v$RESOLVED_VERSION' -categories: - - title: ':rocket: Features and Enhancements' - labels: - - 'feat' - - 'Feature' - - 'Enhancement' - - title: ':bug: Bug Fixes' - label: 'Fix' - - title: ':wrench: Maintenance' - labels: - - 'Chore' - - title: ':page_facing_up: Documentation' - label: 'Documentation' -change-template: '- $TITLE (#$NUMBER) - @$AUTHOR' -exclude-contributors: - - 'dependabot' - - 'dependabot[bot]' -exclude-labels: - - 'Dependencies' - - 'Chore' -template: |- - ## Changes - $CHANGES - - This release was made possible thanks to $CONTRIBUTORS diff --git a/.github/workflows/pull-request-comment.yml b/.github/workflows/pull-request-comment.yml deleted file mode 100644 index 4254262f9..000000000 --- a/.github/workflows/pull-request-comment.yml +++ /dev/null @@ -1,128 +0,0 @@ -name: Comment - -on: - workflow_run: - workflows: [ Build ] - types: - - completed - -jobs: - comment: - runs-on: ubuntu-latest - if: > - github.event.workflow_run.event == 'pull_request' - steps: - - name: Download artifact - uses: actions/github-script@v6 - with: - script: | - var artifacts = await github.rest.actions.listWorkflowRunArtifacts({ - owner: context.repo.owner, - repo: context.repo.repo, - run_id: ${{github.event.workflow_run.id }}, - }); - var matchArtifact = artifacts.data.artifacts.filter((artifact) => { - return artifact.name == "pr" - })[0]; - var download = await github.rest.actions.downloadArtifact({ - owner: context.repo.owner, - repo: context.repo.repo, - artifact_id: matchArtifact.id, - archive_format: 'zip', - }); - var fs = require('fs'); - fs.writeFileSync('${{github.workspace}}/pr.zip', Buffer.from(download.data)); - - run: unzip pr.zip - - - name: Build success - if: ${{ github.event.workflow_run.conclusion == 'success' }} - uses: actions/github-script@v6 - with: - script: | - var fs = require('fs') - var issue_number = Number(fs.readFileSync('./NR')); - const owner = context.repo.owner; - const repo = context.repo.repo; - var artifacts = await github.rest.actions.listWorkflowRunArtifacts({ - owner, - repo, - run_id: ${{github.event.workflow_run.id }}, - }); - var matchArtifact = artifacts.data.artifacts.filter((artifact) => { - return artifact.name == "apk-files" - })[0]; - const artifact_url = `https://github.com/${owner}/${repo}/actions/runs/${{ github.event.workflow_run.id }}/artifacts/${matchArtifact.id}`; - - const comments = await github.rest.issues.listComments({ - owner, - repo, - issue_number - }); - - let comment_id; - for (const comment of comments.data) { - if (comment.user.login === 'github-actions[bot]') { - comment_id = comment.id; - break; - } - } - - const body = `Build successful. APKs to test: ${artifact_url}`; - - if (comment_id) { - await github.rest.issues.updateComment({ - owner, - repo, - comment_id, - body - }); - } else { - await github.rest.issues.createComment({ - owner, - repo, - issue_number, - body - }); - } - - - name: Build failed - if: ${{ github.event.workflow_run.conclusion == 'failure' }} - uses: actions/github-script@v6 - with: - script: | - var fs = require('fs') - var issue_number = Number(fs.readFileSync('./NR')); - const owner = context.repo.owner; - const repo = context.repo.repo; - - const comments = await github.rest.issues.listComments({ - owner, - repo, - issue_number - }); - - let comment_id; - for (const comment of comments.data) { - if (comment.user.login === 'github-actions[bot]') { - comment_id = comment.id; - break; - } - } - - const body = `Build failed`; - - if (comment_id) { - await github.rest.issues.updateComment({ - owner, - repo, - comment_id, - body - }); - } else { - await github.rest.issues.createComment({ - owner, - repo, - issue_number, - body - }); - } \ No newline at end of file diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml deleted file mode 100644 index f22605252..000000000 --- a/.github/workflows/pull-request.yml +++ /dev/null @@ -1,42 +0,0 @@ -name: Build - -on: - pull_request: - branches: - - master - - development - -jobs: - build: - runs-on: ubuntu-latest - - steps: - - name: Download repository - uses: actions/checkout@v3 - - - name: Setup Java - uses: actions/setup-java@v3 - with: - distribution: 'adopt' - java-version: '17' - - - name: Save PR number - run: | - mkdir -p ./pr - echo ${{ github.event.number }} > ./pr/NR - - - uses: actions/upload-artifact@v3 - with: - name: pr - path: pr/ - - - name: Build with Gradle - run: | - bash ./gradlew build --stacktrace - - - name: Store APK file - uses: actions/upload-artifact@v3 - with: - name: apk-files - path: | - app/build/outputs/apk/debug/app-debug.apk \ No newline at end of file diff --git a/.github/workflows/push-event.yml b/.github/workflows/push-event.yml deleted file mode 100644 index 001336c00..000000000 --- a/.github/workflows/push-event.yml +++ /dev/null @@ -1,167 +0,0 @@ -name: Push - -on: - push: - branches: - - master - - development - -env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - -jobs: - build: - runs-on: ubuntu-latest - outputs: - branch: ${{ steps.branch-name.outputs.current_branch }} - - steps: - - name: Download repository - uses: actions/checkout@v3 - - - uses: actions/cache@v4 - with: - path: | - ~/.gradle/caches - ~/.gradle/wrapper - key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*') }} - restore-keys: | - ${{ runner.os }}-gradle- - - - name: Setup Ruby - if: ${{ github.repository == 'fossasia/pslab-android' }} - uses: ruby/setup-ruby@v1 - with: - ruby-version: '3.3' - bundler-cache: true - - - name: Prepare Bundler - if: ${{ github.repository == 'fossasia/pslab-android' }} - run: | - bundle config path vendor/bundle - bundle install --jobs 4 --retry 3 - - - name: Setup Java - uses: actions/setup-java@v3 - with: - distribution: 'adopt' - java-version: '17' - - - name: Hydrate and Update Version - id: android-version - run: | - git config --global user.name "github-actions[bot]" - git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com" - - git clone --branch=version --depth=1 https://${{ github.repository_owner }}:${{ github.token }}@github.com/${{ github.repository }} version - cd version - - # Read and increment version name - IFS='.' read -r major minor patch < versionName.txt - current_patch_version_name="$major.$minor.$patch" - echo "VERSION_NAME=$current_patch_version_name" >> $GITHUB_OUTPUT - - next_patch=$((patch + 1)) - next_patch_version_name="$major.$minor.$next_patch" - echo "$next_patch_version_name" > versionName.txt - - # Read and increment version code - read -r version_code < versionCode.txt - echo "VERSION_CODE=$version_code" >> $GITHUB_OUTPUT - - new_version_code=$((version_code + 1)) - echo "$new_version_code" > versionCode.txt - - # Force push to version branch - git checkout --orphan temporary - git add --all . - git commit -am "[Auto] Update versionName: $next_patch_version_name & versionCode: $new_version_code ($(date +%Y-%m-%d.%H:%M:%S))" - git branch -D version - git branch -m version - git push --force origin version - - - name: Prepare Build Keys - env: - ENCRYPTED_F10B5E0E5262_IV: ${{ secrets.ENCRYPTED_F10B5E0E5262_IV }} - ENCRYPTED_F10B5E0E5262_KEY: ${{ secrets.ENCRYPTED_F10B5E0E5262_KEY }} - run: | - bash scripts/prep-key.sh - - - name: Build with Gradle - env: - STORE_PASS: ${{ secrets.STORE_PASS }} - ALIAS: ${{ secrets.ALIAS }} - KEY_PASS: ${{ secrets.KEY_PASS }} - VERSION_CODE: ${{ steps.android-version.outputs.VERSION_CODE }} - VERSION_NAME: ${{ steps.android-version.outputs.VERSION_NAME }} - run: | - bash ./gradlew build --stacktrace - bash ./gradlew bundle --stacktrace - - - name: Upload APK Debug - uses: actions/upload-artifact@v4 - with: - name: APK Debug generated - path: app/build/outputs/apk/debug - - - name: Upload APK Release - uses: actions/upload-artifact@v4 - with: - name: APK Release generated - path: app/build/outputs/apk/release - - - name: Upload AAB Release - uses: actions/upload-artifact@v4 - with: - name: AAB Release generated - path: app/build/outputs/bundle/release - - - name: Upload APK/AAB's to apk branch - run: | - git config --global user.name "github-actions[bot]" - git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com" - - git clone --branch=apk --depth=1 https://${{ github.repository_owner }}:${{ github.token }}@github.com/${{ github.repository }} apk - cd apk - - if [[ ${{ github.ref_name }} =~ ^(master)$ ]]; then - rm -rf * - else - rm -rf pslab-dev* - fi - ls - - find ../app/build/outputs -type f \( -name '*.apk' -o -name '*.aab' \) -exec cp -v {} . \; - - branch=${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}} - - for file in app*; do - mv $file pslab-$branch-${file#*-} - done - - git checkout --orphan temporary - git add --all . - git commit -am "[Auto] Update APK/AAB's from $branch ($(date +%Y-%m-%d.%H:%M:%S))" - git branch -D apk - git branch -m apk - git push --force origin apk - - - name: Update app in Open Testing track - if: ${{ github.repository == 'fossasia/pslab-android' }} - run: | - git clone --branch=fastlane --depth=1 https://${{ github.repository_owner }}:${{ github.token }}@github.com/${{ github.repository }} fastlane - bundle exec fastlane uploadToOpenTesting - if [[ $? -ne 0 ]]; then - exit 1 - fi - - - name: Run Release Drafter - id: run-release-drafter - uses: release-drafter/release-drafter@v6 - with: - version: ${{ steps.android-version.outputs.VERSION_NAME }} - - - name: Create and Upload Assets - run: | - echo "${{ steps.android-version.outputs.VERSION_CODE }}" > ./versionCode.txt - gh release upload ${{ steps.run-release-drafter.outputs.tag_name }} apk/pslab-development-release.apk ./versionCode.txt --clobber \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml deleted file mode 100644 index 776227049..000000000 --- a/.github/workflows/release.yml +++ /dev/null @@ -1,67 +0,0 @@ -name: Release - -on: - release: - types: [published] - -env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - -jobs: - release: - if: ${{ github.repository == 'fossasia/pslab-android' }} - runs-on: ubuntu-latest - - steps: - - name: Download repository - uses: actions/checkout@v4 - - - name: Setup Ruby - uses: ruby/setup-ruby@v1 - with: - ruby-version: '3.3' - bundler-cache: true - - - name: Prepare Bundler - run: | - bundle config path vendor/bundle - bundle install --jobs 4 --retry 3 - - - name: Prepare Build Keys - env: - ENCRYPTED_F10B5E0E5262_IV: ${{ secrets.ENCRYPTED_F10B5E0E5262_IV }} - ENCRYPTED_F10B5E0E5262_KEY: ${{ secrets.ENCRYPTED_F10B5E0E5262_KEY }} - run: | - bash scripts/prep-key.sh - - - name: Download Assets - id: download-assets - run: | - gh release download ${{ github.event.release.tag_name }} --pattern '*.txt' - read -r version_code < versionCode.txt - echo "VERSION_CODE=$version_code" >> $GITHUB_OUTPUT - - - name: Add Changelogs to fastlane branch - run: | - git config --global user.name "github-actions[bot]" - git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com" - - git clone --branch=fastlane --depth=1 https://${{ github.repository_owner }}:${{ github.token }}@github.com/${{ github.repository }} fastlane - cd fastlane - - echo "${{ github.event.release.body }}" > metadata/android/en-US/changelogs/${{ steps.download-assets.outputs.VERSION_CODE }}.txt - - # Force push to fastlane branch - git checkout --orphan temporary - git add --all . - git commit -am "[Auto] Add changelogs for versionCode: ${{ steps.download-assets.outputs.VERSION_CODE }} ($(date +%Y-%m-%d.%H:%M:%S))" - git branch -D fastlane - git branch -m fastlane - git push --force origin fastlane - - - name: Push version to production - run: | - bundle exec fastlane promoteToProduction version_code:${{ steps.download-assets.outputs.VERSION_CODE }} - if [[ $? -ne 0 ]]; then - exit 1 - fi \ No newline at end of file diff --git a/.gitignore b/.gitignore index ebd6fc5e7..d1c5f5329 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,47 @@ +# Miscellaneous +*.class +*.log +*.pyc +*.swp +.atom/ +.buildlog/ +.history +.svn/ +migrate_working_dir/ .gradle /local.properties .DS_Store -/build /captures -**/.idea/** -**/*.iml + +# IntelliJ related +*.iml +*.ipr +*.iws +.idea/ + +# The .vscode folder contains launch configuration and tasks you configure in +# VS Code which you may wish to be included in version control, so this line +# is commented out by default. +#.vscode/ + +# Flutter/Dart/Pub related +**/doc/api/ +**/ios/Flutter/.last_build_id +.dart_tool/ +.flutter-plugins +.flutter-plugins-dependencies +.pub-cache/ +.pub/ +/build/ + +# Symbolication related +app.*.symbols + +# Obfuscation related +app.*.map.json + +# Android Studio will place build artifacts here +/android/app/debug +/android/app/profile +/android/app/release + diff --git a/.metadata b/.metadata new file mode 100644 index 000000000..c2aa44bdb --- /dev/null +++ b/.metadata @@ -0,0 +1,45 @@ +# This file tracks properties of this Flutter project. +# Used by Flutter tool to assess capabilities and perform upgrades etc. +# +# This file should be version controlled and should not be manually edited. + +version: + revision: "603104015dd692ea3403755b55d07813d5cf8965" + channel: "stable" + +project_type: app + +# Tracks metadata for the flutter migrate command +migration: + platforms: + - platform: root + create_revision: 603104015dd692ea3403755b55d07813d5cf8965 + base_revision: 603104015dd692ea3403755b55d07813d5cf8965 + - platform: android + create_revision: 603104015dd692ea3403755b55d07813d5cf8965 + base_revision: 603104015dd692ea3403755b55d07813d5cf8965 + - platform: ios + create_revision: 603104015dd692ea3403755b55d07813d5cf8965 + base_revision: 603104015dd692ea3403755b55d07813d5cf8965 + - platform: linux + create_revision: 603104015dd692ea3403755b55d07813d5cf8965 + base_revision: 603104015dd692ea3403755b55d07813d5cf8965 + - platform: macos + create_revision: 603104015dd692ea3403755b55d07813d5cf8965 + base_revision: 603104015dd692ea3403755b55d07813d5cf8965 + - platform: web + create_revision: 603104015dd692ea3403755b55d07813d5cf8965 + base_revision: 603104015dd692ea3403755b55d07813d5cf8965 + - platform: windows + create_revision: 603104015dd692ea3403755b55d07813d5cf8965 + base_revision: 603104015dd692ea3403755b55d07813d5cf8965 + + # User provided section + + # List of Local paths (relative to this file) that should be + # ignored by the migrate tool. + # + # Files that are not part of the templates will be ignored by default. + unmanaged_files: + - 'lib/main.dart' + - 'ios/Runner.xcodeproj/project.pbxproj' diff --git a/Gemfile b/Gemfile index b4298691b..adc90d98c 100644 --- a/Gemfile +++ b/Gemfile @@ -1,3 +1,3 @@ -source "https://rubygems.org" - +source "https://rubygems.org" + gem "fastlane" \ No newline at end of file diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 8dada3eda..000000000 --- a/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright {yyyy} {name of copyright owner} - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/analysis_options.yaml b/analysis_options.yaml new file mode 100644 index 000000000..0d2902135 --- /dev/null +++ b/analysis_options.yaml @@ -0,0 +1,28 @@ +# This file configures the analyzer, which statically analyzes Dart code to +# check for errors, warnings, and lints. +# +# The issues identified by the analyzer are surfaced in the UI of Dart-enabled +# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be +# invoked from the command line by running `flutter analyze`. + +# The following line activates a set of recommended lints for Flutter apps, +# packages, and plugins designed to encourage good coding practices. +include: package:flutter_lints/flutter.yaml + +linter: + # The lint rules applied to this project can be customized in the + # section below to disable rules from the `package:flutter_lints/flutter.yaml` + # included above or to enable additional rules. A list of all available lints + # and their documentation is published at https://dart.dev/lints. + # + # Instead of disabling a lint rule for the entire project in the + # section below, it can also be suppressed for a single line of code + # or a specific dart file by using the `// ignore: name_of_lint` and + # `// ignore_for_file: name_of_lint` syntax on the line or in the file + # producing the lint. + rules: + # avoid_print: false # Uncomment to disable the `avoid_print` rule + # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule + +# Additional information about this file can be found at +# https://dart.dev/guides/language/analysis-options diff --git a/android/.gitignore b/android/.gitignore new file mode 100644 index 000000000..55afd919c --- /dev/null +++ b/android/.gitignore @@ -0,0 +1,13 @@ +gradle-wrapper.jar +/.gradle +/captures/ +/gradlew +/gradlew.bat +/local.properties +GeneratedPluginRegistrant.java + +# Remember to never publicly share your keystore. +# See https://flutter.dev/to/reference-keystore +key.properties +**/*.keystore +**/*.jks diff --git a/android/app/build.gradle b/android/app/build.gradle new file mode 100644 index 000000000..227a5747a --- /dev/null +++ b/android/app/build.gradle @@ -0,0 +1,44 @@ +plugins { + id "com.android.application" + id "kotlin-android" + // The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins. + id "dev.flutter.flutter-gradle-plugin" +} + +android { + namespace = "io.pslab" + compileSdk = flutter.compileSdkVersion + ndkVersion = flutter.ndkVersion + + compileOptions { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 + } + + kotlinOptions { + jvmTarget = JavaVersion.VERSION_1_8 + } + + defaultConfig { + // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). + applicationId = "io.pslab" + // You can update the following values to match your application needs. + // For more information, see: https://flutter.dev/to/review-gradle-config. + minSdk = flutter.minSdkVersion + targetSdk = flutter.targetSdkVersion + versionCode = flutter.versionCode + versionName = flutter.versionName + } + + buildTypes { + release { + // TODO: Add your own signing config for the release build. + // Signing with the debug keys for now, so `flutter run --release` works. + signingConfig = signingConfigs.debug + } + } +} + +flutter { + source = "../.." +} diff --git a/android/app/src/debug/AndroidManifest.xml b/android/app/src/debug/AndroidManifest.xml new file mode 100644 index 000000000..399f6981d --- /dev/null +++ b/android/app/src/debug/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml new file mode 100644 index 000000000..d3fd7ab7b --- /dev/null +++ b/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/android/app/src/main/java/io/pslab/activity/MainActivity.java b/android/app/src/main/java/io/pslab/activity/MainActivity.java new file mode 100644 index 000000000..9ba73bffa --- /dev/null +++ b/android/app/src/main/java/io/pslab/activity/MainActivity.java @@ -0,0 +1,6 @@ +package io.pslab.activity; + +import io.flutter.embedding.android.FlutterActivity; + +public class MainActivity extends FlutterActivity { +} diff --git a/android/app/src/main/res/drawable-v21/launch_background.xml b/android/app/src/main/res/drawable-v21/launch_background.xml new file mode 100644 index 000000000..f74085f3f --- /dev/null +++ b/android/app/src/main/res/drawable-v21/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/android/app/src/main/res/drawable/launch_background.xml b/android/app/src/main/res/drawable/launch_background.xml new file mode 100644 index 000000000..304732f88 --- /dev/null +++ b/android/app/src/main/res/drawable/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..db77bb4b7b0906d62b1847e87f15cdcacf6a4f29 GIT binary patch literal 544 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY3?!3`olAj~WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!h8bpbvhu0Wd6uZuB!w&u2PAxD2eNXD>P5D~Wn-+_Wa#27Xc zC?Zj|6r#X(-D3u$NCt}(Ms06KgJ4FxJVv{GM)!I~&n8Bnc94O7-Hd)cjDZswgC;Qs zO=b+9!WcT8F?0rF7!Uys2bs@gozCP?z~o%U|N3vA*22NaGQG zlg@K`O_XuxvZ&Ks^m&R!`&1=spLvfx7oGDKDwpwW`#iqdw@AL`7MR}m`rwr|mZgU`8P7SBkL78fFf!WnuYWm$5Z0 zNXhDbCv&49sM544K|?c)WrFfiZvCi9h0O)B3Pgg&ebxsLQ05GG~ AQ2+n{ literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/android/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..17987b79bb8a35cc66c3c1fd44f5a5526c1b78be GIT binary patch literal 442 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5Xx&nMcT!A!W`0S9QKQy;}1Cl^CgaH=;G9cpY;r$Q>i*pfB zP2drbID<_#qf;rPZx^FqH)F_D#*k@@q03KywUtLX8Ua?`H+NMzkczFPK3lFz@i_kW%1NOn0|D2I9n9wzH8m|-tHjsw|9>@K=iMBhxvkv6m8Y-l zytQ?X=U+MF$@3 zt`~i=@j|6y)RWMK--}M|=T`o&^Ni>IoWKHEbBXz7?A@mgWoL>!*SXo`SZH-*HSdS+ yn*9;$7;m`l>wYBC5bq;=U}IMqLzqbYCidGC!)_gkIk_C@Uy!y&wkt5C($~2D>~)O*cj@FGjOCM)M>_ixfudOh)?xMu#Fs z#}Y=@YDTwOM)x{K_j*Q;dPdJ?Mz0n|pLRx{4n|)f>SXlmV)XB04CrSJn#dS5nK2lM zrZ9#~WelCp7&e13Y$jvaEXHskn$2V!!DN-nWS__6T*l;H&Fopn?A6HZ-6WRLFP=R` zqG+CE#d4|IbyAI+rJJ`&x9*T`+a=p|0O(+s{UBcyZdkhj=yS1>AirP+0R;mf2uMgM zC}@~JfByORAh4SyRgi&!(cja>F(l*O+nd+@4m$|6K6KDn_&uvCpV23&>G9HJp{xgg zoq1^2_p9@|WEo z*X_Uko@K)qYYv~>43eQGMdbiGbo>E~Q& zrYBH{QP^@Sti!`2)uG{irBBq@y*$B zi#&(U-*=fp74j)RyIw49+0MRPMRU)+a2r*PJ$L5roHt2$UjExCTZSbq%V!HeS7J$N zdG@vOZB4v_lF7Plrx+hxo7(fCV&}fHq)$ literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..d5f1c8d34e7a88e3f88bea192c3a370d44689c3c GIT binary patch literal 1031 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q8Ax83A=Cw=BuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrIztFa`(sgt!6~Yi|1%a`XoT0ojZ}lNrNjb9xjc(B0U1_% zz5^97Xt*%oq$rQy4?0GKNfJ44uvxI)gC`h-NZ|&0-7(qS@?b!5r36oQ}zyZrNO3 zMO=Or+<~>+A&uN&E!^Sl+>xE!QC-|oJv`ApDhqC^EWD|@=#J`=d#Xzxs4ah}w&Jnc z$|q_opQ^2TrnVZ0o~wh<3t%W&flvYGe#$xqda2bR_R zvPYgMcHgjZ5nSA^lJr%;<&0do;O^tDDh~=pIxA#coaCY>&N%M2^tq^U%3DB@ynvKo}b?yu-bFc-u0JHzced$sg7S3zqI(2 z#Km{dPr7I=pQ5>FuK#)QwK?Y`E`B?nP+}U)I#c1+FM*1kNvWG|a(TpksZQ3B@sD~b zpQ2)*V*TdwjFOtHvV|;OsiDqHi=6%)o4b!)x$)%9pGTsE z-JL={-Ffv+T87W(Xpooq<`r*VzWQcgBN$$`u}f>-ZQI1BB8ykN*=e4rIsJx9>z}*o zo~|9I;xof literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..4d6372eebdb28e45604e46eeda8dd24651419bc0 GIT binary patch literal 1443 zcmb`G{WsKk6vsdJTdFg%tJav9_E4vzrOaqkWF|A724Nly!y+?N9`YV6wZ}5(X(D_N(?!*n3`|_r0Hc?=PQw&*vnU?QTFY zB_MsH|!j$PP;I}?dppoE_gA(4uc!jV&0!l7_;&p2^pxNo>PEcNJv za5_RT$o2Mf!<+r?&EbHH6nMoTsDOa;mN(wv8RNsHpG)`^ymG-S5By8=l9iVXzN_eG%Xg2@Xeq76tTZ*dGh~Lo9vl;Zfs+W#BydUw zCkZ$o1LqWQO$FC9aKlLl*7x9^0q%0}$OMlp@Kk_jHXOjofdePND+j!A{q!8~Jn+s3 z?~~w@4?egS02}8NuulUA=L~QQfm;MzCGd)XhiftT;+zFO&JVyp2mBww?;QByS_1w! zrQlx%{^cMj0|Bo1FjwY@Q8?Hx0cIPF*@-ZRFpPc#bBw{5@tD(5%sClzIfl8WU~V#u zm5Q;_F!wa$BSpqhN>W@2De?TKWR*!ujY;Yylk_X5#~V!L*Gw~;$%4Q8~Mad z@`-kG?yb$a9cHIApZDVZ^U6Xkp<*4rU82O7%}0jjHlK{id@?-wpN*fCHXyXh(bLt* zPc}H-x0e4E&nQ>y%B-(EL=9}RyC%MyX=upHuFhAk&MLbsF0LP-q`XnH78@fT+pKPW zu72MW`|?8ht^tz$iC}ZwLp4tB;Q49K!QCF3@!iB1qOI=?w z7In!}F~ij(18UYUjnbmC!qKhPo%24?8U1x{7o(+?^Zu0Hx81|FuS?bJ0jgBhEMzf< zCgUq7r2OCB(`XkKcN-TL>u5y#dD6D!)5W?`O5)V^>jb)P)GBdy%t$uUMpf$SNV31$ zb||OojAbvMP?T@$h_ZiFLFVHDmbyMhJF|-_)HX3%m=CDI+ID$0^C>kzxprBW)hw(v zr!Gmda);ICoQyhV_oP5+C%?jcG8v+D@9f?Dk*!BxY}dazmrT@64UrP3hlslANK)bq z$67n83eh}OeW&SV@HG95P|bjfqJ7gw$e+`Hxo!4cx`jdK1bJ>YDSpGKLPZ^1cv$ek zIB?0S<#tX?SJCLWdMd{-ME?$hc7A$zBOdIJ)4!KcAwb=VMov)nK;9z>x~rfT1>dS+ zZ6#`2v@`jgbqq)P22H)Tx2CpmM^o1$B+xT6`(v%5xJ(?j#>Q$+rx_R|7TzDZe{J6q zG1*EcU%tE?!kO%^M;3aM6JN*LAKUVb^xz8-Pxo#jR5(-KBeLJvA@-gxNHx0M-ZJLl z;#JwQoh~9V?`UVo#}{6ka@II>++D@%KqGpMdlQ}?9E*wFcf5(#XQnP$Dk5~%iX^>f z%$y;?M0BLp{O3a(-4A?ewryHrrD%cx#Q^%KY1H zNre$ve+vceSLZcNY4U(RBX&)oZn*Py()h)XkE?PL$!bNb{N5FVI2Y%LKEm%yvpyTP z(1P?z~7YxD~Rf<(a@_y` literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/values-night/styles.xml b/android/app/src/main/res/values-night/styles.xml new file mode 100644 index 000000000..06952be74 --- /dev/null +++ b/android/app/src/main/res/values-night/styles.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/android/app/src/main/res/values/styles.xml b/android/app/src/main/res/values/styles.xml new file mode 100644 index 000000000..cb1ef8805 --- /dev/null +++ b/android/app/src/main/res/values/styles.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/android/app/src/profile/AndroidManifest.xml b/android/app/src/profile/AndroidManifest.xml new file mode 100644 index 000000000..399f6981d --- /dev/null +++ b/android/app/src/profile/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + diff --git a/android/build.gradle b/android/build.gradle new file mode 100644 index 000000000..d2ffbffa4 --- /dev/null +++ b/android/build.gradle @@ -0,0 +1,18 @@ +allprojects { + repositories { + google() + mavenCentral() + } +} + +rootProject.buildDir = "../build" +subprojects { + project.buildDir = "${rootProject.buildDir}/${project.name}" +} +subprojects { + project.evaluationDependsOn(":app") +} + +tasks.register("clean", Delete) { + delete rootProject.buildDir +} diff --git a/android/gradle.properties b/android/gradle.properties new file mode 100644 index 000000000..259717082 --- /dev/null +++ b/android/gradle.properties @@ -0,0 +1,3 @@ +org.gradle.jvmargs=-Xmx4G -XX:MaxMetaspaceSize=2G -XX:+HeapDumpOnOutOfMemoryError +android.useAndroidX=true +android.enableJetifier=true diff --git a/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties similarity index 80% rename from gradle/wrapper/gradle-wrapper.properties rename to android/gradle/wrapper/gradle-wrapper.properties index a7eee07cf..7bb2df6ba 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,5 @@ -#Mon May 13 19:46:35 IST 2024 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-all.zip diff --git a/android/settings.gradle b/android/settings.gradle new file mode 100644 index 000000000..b9e43bd37 --- /dev/null +++ b/android/settings.gradle @@ -0,0 +1,25 @@ +pluginManagement { + def flutterSdkPath = { + def properties = new Properties() + file("local.properties").withInputStream { properties.load(it) } + def flutterSdkPath = properties.getProperty("flutter.sdk") + assert flutterSdkPath != null, "flutter.sdk not set in local.properties" + return flutterSdkPath + }() + + includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") + + repositories { + google() + mavenCentral() + gradlePluginPortal() + } +} + +plugins { + id "dev.flutter.flutter-plugin-loader" version "1.0.0" + id "com.android.application" version "8.1.0" apply false + id "org.jetbrains.kotlin.android" version "1.8.22" apply false +} + +include ":app" diff --git a/app/.gitignore b/app/.gitignore deleted file mode 100644 index 796b96d1c..000000000 --- a/app/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/build diff --git a/app/build.gradle.kts b/app/build.gradle.kts deleted file mode 100644 index e7f307843..000000000 --- a/app/build.gradle.kts +++ /dev/null @@ -1,122 +0,0 @@ -plugins { - id("com.android.application") - id("com.google.android.gms.oss-licenses-plugin") -} - -apply(plugin = "realm-android") - -val KEYSTORE_FILE = rootProject.file("scripts/pslab.jks") -val GITHUB_BUILD = System.getenv("GITHUB_ACTIONS") == "true" && KEYSTORE_FILE.exists() - -android { - namespace = "io.pslab" - compileSdk = 34 - - defaultConfig { - applicationId = "io.pslab" - minSdk = 24 - targetSdk = 34 - versionCode = System.getenv("VERSION_CODE")?.toInt() ?: 1 - versionName = System.getenv("VERSION_NAME") ?: "1.0.0" - resConfigs("en", "ru", "ar", "si", "pl") - } - - signingConfigs { - if (GITHUB_BUILD) { - register("release") { - storeFile = KEYSTORE_FILE - storePassword = System.getenv("STORE_PASS") - keyAlias = System.getenv("ALIAS") - keyPassword = System.getenv("KEY_PASS") - } - } - } - - buildTypes { - debug { - versionNameSuffix = "Version: " - resValue("string", "version", "${versionNameSuffix}${defaultConfig.versionName}") - } - release { - isMinifyEnabled = false - proguardFiles( - getDefaultProguardFile("proguard-android.txt"), - "proguard-rules.pro" - ) - resValue("string", "version", "${defaultConfig.versionName}") - signingConfig = if (GITHUB_BUILD) signingConfigs.getByName("release") else null - } - } - lint { - abortOnError = false - } - compileOptions { - sourceCompatibility = JavaVersion.VERSION_17 - targetCompatibility = JavaVersion.VERSION_17 - } - buildFeatures { - buildConfig = true - } -} - - -dependencies { - - // Android stock libraries - implementation("androidx.appcompat:appcompat:1.7.0") - implementation("androidx.cardview:cardview:1.0.0") - implementation("androidx.recyclerview:recyclerview:1.3.2") - implementation("com.google.android.material:material:1.12.0") - implementation("androidx.preference:preference:1.2.1") - implementation("androidx.browser:browser:1.8.0") - implementation("androidx.constraintlayout:constraintlayout:2.1.4") - - // Custom tools libraries - implementation("com.github.PhilJay:MPAndroidChart:v3.1.0") - implementation("com.github.bmelnychuk:atv:1.2.9") - implementation("de.hdodenhof:circleimageview:3.1.0") - implementation("com.github.devlight:navigationtabstrip:1.0.4") - implementation("com.afollestad.material-dialogs", "commons", "0.9.6.0") - implementation("com.github.mik3y:usb-serial-for-android:3.7.3") - implementation("com.github.medyo:android-about-page:1.3") - implementation("com.github.tiagohm.MarkdownView:library:0.19.0") - implementation("com.github.mirrajabi:search-dialog:1.2.4") - implementation(files("../libs/croller-release.aar")) - implementation("com.github.BeppiMenozzi:Knob:1.9.0") - implementation("com.github.warkiz:IndicatorSeekBar:v2.1.1") - implementation("com.github.Vatican-Cameos:CarouselPicker:1.2") - implementation("com.github.anastr:speedviewlib:1.6.1") - implementation("com.github.GoodieBag:ProtractorView:v1.2") - implementation("com.github.Triggertrap:SeekArc:v1.1") - - // Apache commons - implementation("org.apache.commons:commons-math3:3.6.1") - implementation("org.apache.commons:commons-lang3:3.14.0") - - // Picasso - implementation("com.squareup.picasso:picasso:2.71828") - - // OKHTTP - implementation("com.squareup.okhttp3:okhttp:4.12.0") - - // ButterKnife - val butterKnifeVersion = "10.2.3" - annotationProcessor("com.jakewharton:butterknife-compiler:$butterKnifeVersion") - implementation("com.jakewharton:butterknife:$butterKnifeVersion") - - // Map libraries - implementation("org.osmdroid:osmdroid-android:6.1.18") - implementation("org.osmdroid:osmdroid-mapsforge:6.1.18") - implementation("org.osmdroid:osmdroid-geopackage:6.1.18") { - exclude("org.osmdroid.gpkg") - exclude("ormlite-core") - exclude("com.j256.ormlite") - } - - // Realm - implementation("com.github.realm:realm-android-adapters:v4.0.0") - - // OSS license plugin - implementation("com.google.android.gms:play-services-oss-licenses:17.1.0") - -} diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro deleted file mode 100644 index 5bb1f14fc..000000000 --- a/app/proguard-rules.pro +++ /dev/null @@ -1,25 +0,0 @@ -# Add project specific ProGuard rules here. -# By default, the flags in this file are appended to flags specified -# in /home/viveksb007/Android/Sdk/tools/proguard/proguard-android.txt -# You can edit the include path and order by changing the proguardFiles -# directive in build.gradle.kts. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# Add any project specific keep options here: - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} - -# Uncomment this to preserve the line number information for -# debugging stack traces. -#-keepattributes SourceFile,LineNumberTable - -# If you keep the line number information, uncomment this to -# hide the original source file name. -#-renamesourcefileattribute SourceFile diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml deleted file mode 100644 index 494df111f..000000000 --- a/app/src/main/AndroidManifest.xml +++ /dev/null @@ -1,145 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/assets/fonts/digital-7 (italic).ttf b/app/src/main/assets/fonts/digital-7 (italic).ttf deleted file mode 100644 index c120ab45684b4eead2b10c59377292f8b9aea9e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22924 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 diff --git a/app/src/main/java/io/pslab/CheckBoxGetter.java b/app/src/main/java/io/pslab/CheckBoxGetter.java deleted file mode 100644 index d79dec077..000000000 --- a/app/src/main/java/io/pslab/CheckBoxGetter.java +++ /dev/null @@ -1,30 +0,0 @@ -package io.pslab; - -import java.io.Serializable; - -public class CheckBoxGetter implements Serializable { - - private String name; - private boolean isSelected; - - public CheckBoxGetter(String name, boolean isSelected) { - this.name = name; - this.isSelected = isSelected; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public boolean isSelected() { - return isSelected; - } - - public void setSelected(boolean selected) { - isSelected = selected; - } -} diff --git a/app/src/main/java/io/pslab/DataFormatter.java b/app/src/main/java/io/pslab/DataFormatter.java deleted file mode 100644 index 255d7fe13..000000000 --- a/app/src/main/java/io/pslab/DataFormatter.java +++ /dev/null @@ -1,17 +0,0 @@ -package io.pslab; - -import java.text.DecimalFormatSymbols; -import java.util.Locale; - -public class DataFormatter { - public static final String HIGH_PRECISION_FORMAT = "%.5f"; - public static final String MEDIUM_PRECISION_FORMAT = "%.4f"; - public static final String LOW_PRECISION_FORMAT = "%.2f"; - public static final String MINIMAL_PRECISION_FORMAT = "%.1f"; - - public static final char decSeparator = DecimalFormatSymbols.getInstance().getDecimalSeparator(); - - public static String formatDouble(double value, String format) { - return String.format(Locale.ROOT, format, value); - } -} \ No newline at end of file diff --git a/app/src/main/java/io/pslab/InputMinMaxFilter.java b/app/src/main/java/io/pslab/InputMinMaxFilter.java deleted file mode 100644 index ee2bfe74f..000000000 --- a/app/src/main/java/io/pslab/InputMinMaxFilter.java +++ /dev/null @@ -1,36 +0,0 @@ -package io.pslab; - -import android.text.InputFilter; -import android.text.Spanned; - -public class InputMinMaxFilter implements InputFilter { - - private int min; - private int max; - - public InputMinMaxFilter(int min, int max) { - this.min = min; - this.max = max; - } - public InputMinMaxFilter(String min, String max) { - this.min = Integer.parseInt(min); - this.max = Integer.parseInt(max); - } - private boolean isInRange(int a, int b, int c) { - return b > a ? c >= a && c <= b : c >= b && c <= a; - } - @Override - public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) { - try { - String newVal = dest.toString().substring(0, dstart) + dest.toString().substring(dend, dest.toString().length()); - newVal = newVal.substring(0, dstart) + source.toString() + newVal.substring(dstart, newVal.length()); - int input = Integer.parseInt(newVal); - if (newVal.length() >= 4) - return ""; - if (isInRange(min, max, input)) - return null; - } catch (NumberFormatException nfe) { - } - return ""; - } -} diff --git a/app/src/main/java/io/pslab/PSLabApplication.java b/app/src/main/java/io/pslab/PSLabApplication.java deleted file mode 100644 index 7c80ccd66..000000000 --- a/app/src/main/java/io/pslab/PSLabApplication.java +++ /dev/null @@ -1,23 +0,0 @@ -package io.pslab; - -import android.app.Application; - -import io.realm.Realm; -import io.realm.RealmConfiguration; - -/** - * Created by viveksb007 on 4/8/17. - */ - -public class PSLabApplication extends Application { - - @Override - public void onCreate() { - super.onCreate(); - Realm.init(this); - RealmConfiguration.Builder v = new RealmConfiguration.Builder().name(Realm.DEFAULT_REALM_NAME) - .schemaVersion(0) - .deleteRealmIfMigrationNeeded(); - Realm.setDefaultConfiguration(v.build()); - } -} diff --git a/app/src/main/java/io/pslab/SearchModel.java b/app/src/main/java/io/pslab/SearchModel.java deleted file mode 100644 index 2fd0bc717..000000000 --- a/app/src/main/java/io/pslab/SearchModel.java +++ /dev/null @@ -1,25 +0,0 @@ -package io.pslab; - -import ir.mirrajabi.searchdialog.core.Searchable; - -/** - * Created by Harsh on 07-05-2018. - */ - -public class SearchModel implements Searchable { - - private String mTitle; - - public SearchModel(String mTitle) { - this.mTitle = mTitle; - } - - public void setTitle(String mTitle) { - this.mTitle = mTitle; - } - - @Override - public String getTitle() { - return mTitle; - } -} diff --git a/app/src/main/java/io/pslab/activity/AccelerometerActivity.java b/app/src/main/java/io/pslab/activity/AccelerometerActivity.java deleted file mode 100644 index 09ea4cce6..000000000 --- a/app/src/main/java/io/pslab/activity/AccelerometerActivity.java +++ /dev/null @@ -1,139 +0,0 @@ -package io.pslab.activity; - -import android.content.SharedPreferences; -import android.hardware.Sensor; -import android.hardware.SensorManager; - -import androidx.appcompat.app.ActionBar; -import androidx.fragment.app.Fragment; -import androidx.preference.PreferenceManager; - -import io.pslab.R; -import io.pslab.fragment.AccelerometerDataFragment; -import io.pslab.fragment.AccelerometerSettingsFragment; -import io.pslab.models.AccelerometerData; -import io.pslab.models.PSLabSensor; -import io.pslab.models.SensorDataBlock; -import io.pslab.others.LocalDataLog; -import io.realm.RealmObject; -import io.realm.RealmResults; - -public class AccelerometerActivity extends PSLabSensor { - - private static final String PREF_NAME = "customDialogPreference"; - public final String ACCELEROMETER_LIMIT = "accelerometer_limit"; - public RealmResults recordedAccelerometerData; - - @Override - public int getMenu() { - return R.menu.sensor_data_log_menu; - } - - @Override - public SharedPreferences getStateSettings() { - return this.getSharedPreferences(PREF_NAME, MODE_PRIVATE); - } - - @Override - public String getFirstTimeSettingID() { - return "AccelerometerFirstTime"; - } - - @Override - public String getSensorName() { - return getResources().getString(R.string.accelerometer); - } - - @Override - public int getGuideTitle() { - return R.string.accelerometer; - } - - @Override - public int getGuideAbstract() { - return R.string.accelerometer_intro; - } - - - @Override - public int getGuideSchematics() { - return R.drawable.bh1750_schematic; - } - - @Override - public int getGuideDescription() { - return R.string.accelerometer_description_text; - } - - @Override - public int getGuideExtraContent() { - return 0; - } - - @Override - public void recordSensorDataBlockID(SensorDataBlock categoryData) { - realm.beginTransaction(); - realm.copyToRealm(categoryData); - realm.commitTransaction(); - } - - @Override - public void recordSensorData(RealmObject sensorData) { - realm.beginTransaction(); - realm.copyToRealm((AccelerometerData) sensorData); - realm.commitTransaction(); - } - - @Override - public void stopRecordSensorData() { - LocalDataLog.with().refresh(); - } - - @Override - public Fragment getSensorFragment() { - return AccelerometerDataFragment.newInstance(); - } - - @Override - public void getDataFromDataLogger() { - if (getIntent().getExtras() != null && getIntent().getExtras().getBoolean(KEY_LOG)) { - //playingData = true; - viewingData = true; - recordedAccelerometerData = LocalDataLog.with() - .getBlockOfAccelerometerRecords(getIntent().getExtras().getLong(DATA_BLOCK)); - final AccelerometerData data = recordedAccelerometerData.get(0); - if (data != null) { - final String title = titleFormat.format(data.getTime()); - final ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setTitle(title); - } - } - } - } - - @Override - public boolean sensorFound() { - SensorManager sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); - return sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER) != null; - } - - /** - * Once settings have been changed, those changes can be captured from onResume method. - */ - @Override - protected void onResume() { - super.onResume(); - reinstateConfigurations(); - } - - private void reinstateConfigurations() { - SharedPreferences accelerometerConfigurations; - accelerometerConfigurations = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); - locationEnabled = accelerometerConfigurations.getBoolean(AccelerometerSettingsFragment.KEY_INCLUDE_LOCATION, true); - AccelerometerDataFragment.setParameters( - Float.valueOf(accelerometerConfigurations.getString(AccelerometerSettingsFragment.KEY_HIGH_LIMIT, "20")), - Integer.valueOf(accelerometerConfigurations.getString(AccelerometerSettingsFragment.KEY_UPDATE_PERIOD, "1000")), - accelerometerConfigurations.getString(AccelerometerSettingsFragment.KEY_ACCELEROMETER_SENSOR_GAIN, "1")); - } -} \ No newline at end of file diff --git a/app/src/main/java/io/pslab/activity/BarometerActivity.java b/app/src/main/java/io/pslab/activity/BarometerActivity.java deleted file mode 100644 index 53cb6e11a..000000000 --- a/app/src/main/java/io/pslab/activity/BarometerActivity.java +++ /dev/null @@ -1,138 +0,0 @@ -package io.pslab.activity; - -import android.content.SharedPreferences; -import android.hardware.Sensor; -import android.hardware.SensorManager; - -import androidx.appcompat.app.ActionBar; -import androidx.fragment.app.Fragment; -import androidx.preference.PreferenceManager; - -import io.pslab.R; -import io.pslab.fragment.BaroMeterDataFragment; -import io.pslab.fragment.BaroMeterSettingsFragment; -import io.pslab.models.BaroData; -import io.pslab.models.PSLabSensor; -import io.pslab.models.SensorDataBlock; -import io.pslab.others.LocalDataLog; -import io.realm.RealmObject; -import io.realm.RealmResults; - -/** - * Created by Padmal on 12/13/18. - */ - -public class BarometerActivity extends PSLabSensor { - - private static final String PREF_NAME = "customDialogPreference"; - public final String BAROMETER_LIMIT = "barometer_limit"; - public RealmResults recordedBaroData; - - @Override - public int getMenu() { - return R.menu.sensor_data_log_menu; - } - - @Override - public SharedPreferences getStateSettings() { - return this.getSharedPreferences(PREF_NAME, MODE_PRIVATE); - } - - @Override - public String getFirstTimeSettingID() { - return "BaroMeterFirstTime"; - } - - @Override - public String getSensorName() { - return getResources().getString(R.string.baro_meter); - } - - @Override - public int getGuideTitle() { - return R.string.baro_meter; - } - - @Override - public int getGuideAbstract() { - return R.string.baro_meter_intro; - } - - @Override - public int getGuideSchematics() { - return R.drawable.bmp180_schematic; - } - - @Override - public int getGuideDescription() { - return R.string.baro_meter_desc; - } - - @Override - public int getGuideExtraContent() { - return 0; - } - - @Override - public void recordSensorDataBlockID(SensorDataBlock block) { - realm.beginTransaction(); - realm.copyToRealm(block); - realm.commitTransaction(); - } - - @Override - public void recordSensorData(RealmObject sensorData) { - realm.beginTransaction(); - realm.copyToRealm((BaroData) sensorData); - realm.commitTransaction(); - } - - @Override - public void stopRecordSensorData() { - LocalDataLog.with().refresh(); - } - - @Override - public Fragment getSensorFragment() { - return BaroMeterDataFragment.newInstance(); - } - - @Override - public void getDataFromDataLogger() { - if (getIntent().getExtras() != null && getIntent().getExtras().getBoolean(KEY_LOG)) { - viewingData = true; - recordedBaroData = LocalDataLog.with() - .getBlockOfBaroRecords(getIntent().getExtras().getLong(DATA_BLOCK)); - final BaroData data = recordedBaroData.get(0); - if (data != null) { - final String title = titleFormat.format(data.getTime()); - final ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setTitle(title); - } - } - } - } - - @Override - public boolean sensorFound() { - SensorManager sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); - return sensorManager.getDefaultSensor(Sensor.TYPE_PRESSURE) != null; - } - - @Override - protected void onResume() { - super.onResume(); - reinstateConfigurations(); - } - - private void reinstateConfigurations() { - SharedPreferences BaroMeterConfigurations; - BaroMeterConfigurations = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); - locationEnabled = BaroMeterConfigurations.getBoolean(BaroMeterSettingsFragment.KEY_INCLUDE_LOCATION, true); - BaroMeterDataFragment.setParameters( - Float.valueOf(BaroMeterConfigurations.getString(BaroMeterSettingsFragment.KEY_HIGH_LIMIT, "1.1")), - Integer.valueOf(BaroMeterConfigurations.getString(BaroMeterSettingsFragment.KEY_UPDATE_PERIOD, "1000")), - BaroMeterConfigurations.getString(BaroMeterSettingsFragment.KEY_BARO_SENSOR_TYPE, "0")); - } -} diff --git a/app/src/main/java/io/pslab/activity/CompassActivity.java b/app/src/main/java/io/pslab/activity/CompassActivity.java deleted file mode 100644 index f041fb8cb..000000000 --- a/app/src/main/java/io/pslab/activity/CompassActivity.java +++ /dev/null @@ -1,132 +0,0 @@ -package io.pslab.activity; - -import android.content.SharedPreferences; -import android.hardware.Sensor; -import android.hardware.SensorManager; - -import androidx.appcompat.app.ActionBar; -import androidx.fragment.app.Fragment; -import androidx.preference.PreferenceManager; - -import io.pslab.R; -import io.pslab.fragment.CompassDataFragment; -import io.pslab.fragment.CompassSettingsFragment; -import io.pslab.models.CompassData; -import io.pslab.models.PSLabSensor; -import io.pslab.models.SensorDataBlock; -import io.pslab.others.LocalDataLog; -import io.realm.RealmObject; -import io.realm.RealmResults; - -public class CompassActivity extends PSLabSensor { - - private static final String PREF_NAME = "customDialogPreference"; - public RealmResults recordedCompassData; - - - @Override - public int getMenu() { - return R.menu.sensor_data_log_menu; - } - - @Override - public SharedPreferences getStateSettings() { - return this.getSharedPreferences(PREF_NAME, MODE_PRIVATE); - } - - @Override - public String getFirstTimeSettingID() { - return "CompassFirstTime"; - } - - @Override - public String getSensorName() { - return getResources().getString(R.string.compass); - } - - @Override - public int getGuideTitle() { - return R.string.compass_bottom_sheet_heading; - } - - @Override - public int getGuideAbstract() { - return R.string.compass_bottom_sheet_text; - } - - @Override - public int getGuideSchematics() { - return R.drawable.find_mobile_axis; - } - - @Override - public int getGuideDescription() { - return R.string.compass_description; - } - - @Override - public int getGuideExtraContent() { - return 0; - } - - @Override - public void recordSensorDataBlockID(SensorDataBlock block) { - realm.beginTransaction(); - realm.copyToRealm(block); - realm.commitTransaction(); - } - - @Override - public void recordSensorData(RealmObject sensorData) { - realm.beginTransaction(); - realm.copyToRealm((CompassData) sensorData); - realm.commitTransaction(); - } - - @Override - public void stopRecordSensorData() { - LocalDataLog.with().refresh(); - } - - @Override - public Fragment getSensorFragment() { - return CompassDataFragment.newInstance(); - } - - @Override - public void getDataFromDataLogger() { - if (getIntent().getExtras() != null && getIntent().getExtras().getBoolean(KEY_LOG)) { - viewingData = true; - recordedCompassData = LocalDataLog.with() - .getBlockOfCompassRecords(getIntent().getExtras().getLong(DATA_BLOCK)); - final CompassData data = recordedCompassData.get(0); - if (data != null) { - final String title = titleFormat.format(data.getTime()); - final ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setTitle(title); - } - } - } - } - - @Override - public boolean sensorFound() { - SensorManager sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); - return sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION) != null; - } - - @Override - protected void onResume() { - super.onResume(); - reinstateConfigurations(); - } - - private void reinstateConfigurations() { - SharedPreferences compassConfigurations; - compassConfigurations = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); - locationEnabled = compassConfigurations.getBoolean(CompassSettingsFragment.KEY_INCLUDE_LOCATION, true); - CompassDataFragment.setParameters( - compassConfigurations.getString(CompassSettingsFragment.KEY_COMPASS_SENSOR_TYPE, "0")); - } -} diff --git a/app/src/main/java/io/pslab/activity/ControlActivity.java b/app/src/main/java/io/pslab/activity/ControlActivity.java deleted file mode 100644 index 31635dd25..000000000 --- a/app/src/main/java/io/pslab/activity/ControlActivity.java +++ /dev/null @@ -1,73 +0,0 @@ -package io.pslab.activity; - -import android.os.Bundle; -import android.view.MenuItem; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; -import androidx.fragment.app.Fragment; -import androidx.fragment.app.FragmentTransaction; - -import com.google.android.material.bottomnavigation.BottomNavigationView; - -import butterknife.BindView; -import butterknife.ButterKnife; -import io.pslab.R; -import io.pslab.fragment.ControlFragmentAdvanced; -import io.pslab.fragment.ControlFragmentMain; -import io.pslab.fragment.ControlFragmentRead; -import io.pslab.others.ControlActivityCommon; - -public class ControlActivity extends AppCompatActivity { - ControlActivityCommon common = new ControlActivityCommon(); - @BindView(R.id.navigation) - BottomNavigationView bottomNavigationView; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_control); - ButterKnife.bind(this); - - bottomNavigationView.setOnNavigationItemSelectedListener - (new BottomNavigationView.OnNavigationItemSelectedListener() { - @Override - public boolean onNavigationItemSelected(@NonNull MenuItem item) { - Fragment selectedFragment = null; - Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.frame_layout_control); - - switch (item.getItemId()) { - case R.id.action_item1: - if (!(fragment instanceof ControlFragmentMain)) - selectedFragment = ControlFragmentMain.newInstance(); - break; - case R.id.action_item2: - if (!(fragment instanceof ControlFragmentRead)) - selectedFragment = ControlFragmentRead.newInstance(); - break; - case R.id.action_item3: - if (!(fragment instanceof ControlFragmentAdvanced)) - selectedFragment = ControlFragmentAdvanced.newInstance(); - break; - } - if (selectedFragment != null) { - FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); - transaction.replace(R.id.frame_layout_control, selectedFragment); - transaction.commit(); - } - return true; - } - }); - - FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); - transaction.replace(R.id.frame_layout_control, ControlFragmentMain.newInstance()); - transaction.commit(); - } - - @Override - public void onBackPressed() { - ControlActivityCommon.editTextValues = null; - finish(); - } -} diff --git a/app/src/main/java/io/pslab/activity/CreateConfigActivity.java b/app/src/main/java/io/pslab/activity/CreateConfigActivity.java deleted file mode 100644 index 388692c5b..000000000 --- a/app/src/main/java/io/pslab/activity/CreateConfigActivity.java +++ /dev/null @@ -1,204 +0,0 @@ -package io.pslab.activity; - -import android.os.Bundle; -import android.os.Environment; -import android.view.MenuItem; -import android.view.View; -import android.widget.AdapterView; -import android.widget.ArrayAdapter; -import android.widget.Button; -import android.widget.EditText; -import android.widget.Spinner; - -import androidx.appcompat.app.ActionBar; -import androidx.appcompat.app.AppCompatActivity; -import androidx.appcompat.widget.Toolbar; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.google.android.material.snackbar.Snackbar; - -import org.apache.commons.lang3.StringUtils; - -import java.io.File; -import java.io.FileWriter; -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; - -import io.pslab.CheckBoxGetter; -import io.pslab.R; -import io.pslab.adapters.CheckBoxAdapter; -import io.pslab.others.CSVLogger; -import io.pslab.others.CustomSnackBar; - -public class CreateConfigActivity extends AppCompatActivity { - - private ArrayList instrumentsList; - private ArrayList instrumentParamsList; - private ArrayList instrumentParamsListTitles; - private int selectedItem = 0; - private String intervalUnit = "sec"; - private EditText intervalEditText; - private String interval; - private View rootView; - private RecyclerView paramsListContainer; - private List list; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_create_config); - Toolbar toolbar = findViewById(R.id.toolbar); - rootView = findViewById(R.id.create_config_root_view); - paramsListContainer = findViewById(R.id.params_list_container); - Spinner selectInstrumentSpinner = findViewById(R.id.select_instrument_spinner); - Spinner intervalUnitSpinner = findViewById(R.id.interval_unit_spinner); - intervalEditText = findViewById(R.id.interval_edit_text); - Button createConfigFileBtn = findViewById(R.id.create_config_btn); - setSupportActionBar(toolbar); - final ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setTitle(R.string.nav_config); - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setDisplayShowHomeEnabled(true); - } - instrumentsList = new ArrayList<>(); - instrumentParamsList = new ArrayList<>(); - instrumentParamsListTitles = new ArrayList<>(); - paramsListContainer.setLayoutManager(new LinearLayoutManager(this)); - list = new ArrayList<>(); - createArrayLists(); - selectInstrumentSpinner.setAdapter(new ArrayAdapter(this, android.R.layout.simple_list_item_1, instrumentsList)); - selectInstrumentSpinner.setSelection(0, true); - createCheckboxList(); - selectInstrumentSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { - @Override - public void onItemSelected(AdapterView parent, View view, int position, long id) { - selectedItem = position; - createCheckboxList(); - } - - @Override - public void onNothingSelected(AdapterView parent) { - selectedItem = 0; - } - }); - - intervalUnitSpinner.setAdapter(new ArrayAdapter(this, android.R.layout.simple_list_item_1, getResources().getStringArray(R.array.interval_units))); - intervalUnitSpinner.setSelection(0, true); - intervalUnitSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { - @Override - public void onItemSelected(AdapterView parent, View view, int position, long id) { - intervalUnit = (String) parent.getItemAtPosition(position); - } - - @Override - public void onNothingSelected(AdapterView parent) { - intervalUnit = "sec"; - } - }); - - createConfigFileBtn.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - interval = intervalEditText.getText().toString(); - if (interval.length() == 0) { - CustomSnackBar.showSnackBar(findViewById(android.R.id.content), - getString(R.string.no_interval_message), null, null, Snackbar.LENGTH_SHORT); - } else { - ArrayList selectedParamsList = new ArrayList<>(); - for (int i = 0; i < paramsListContainer.getChildCount(); i++) { - boolean checkBox = list.get(i).isSelected(); - if (checkBox) { - selectedParamsList.add(instrumentParamsList.get(selectedItem)[i]); - } - } - createConfigFile(selectedParamsList); - } - } - }); - } - - private void createArrayLists() { - - instrumentParamsList.add(getResources().getStringArray(R.array.oscilloscope_params)); - instrumentParamsList.add(getResources().getStringArray(R.array.multimeter_params)); - instrumentParamsList.add(getResources().getStringArray(R.array.logic_analyzer_params)); - instrumentParamsList.add(getResources().getStringArray(R.array.barometer_params)); - instrumentParamsList.add(getResources().getStringArray(R.array.luxmeter_params)); - instrumentParamsList.add(getResources().getStringArray(R.array.accelerometer_params)); - - instrumentParamsListTitles.add(getResources().getStringArray(R.array.oscilloscope_params_title)); - instrumentParamsListTitles.add(getResources().getStringArray(R.array.multimeter_params_title)); - instrumentParamsListTitles.add(getResources().getStringArray(R.array.logic_analyzer_params_title)); - instrumentParamsListTitles.add(getResources().getStringArray(R.array.barometer_params)); - instrumentParamsListTitles.add(getResources().getStringArray(R.array.luxmeter_params)); - instrumentParamsListTitles.add(getResources().getStringArray(R.array.accelerometer_params_title)); - - instrumentsList.add(getResources().getString(R.string.oscilloscope)); - instrumentsList.add(getResources().getString(R.string.multimeter)); - instrumentsList.add(getResources().getString(R.string.logical_analyzer)); - instrumentsList.add(getResources().getString(R.string.baro_meter)); - instrumentsList.add(getResources().getString(R.string.lux_meter)); - instrumentsList.add(getResources().getString(R.string.accelerometer)); - } - - private void createCheckboxList() { - list.clear(); - String[] params = instrumentParamsListTitles.get(selectedItem); - for (int i = 0; i < params.length; i++) { - CheckBoxGetter check = new CheckBoxGetter(params[i], false); - list.add(check); - } - CheckBoxAdapter box; - box = new CheckBoxAdapter(CreateConfigActivity.this, list); - paramsListContainer.setAdapter(box); - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - if (item.getItemId() == android.R.id.home) { - finish(); - } - return super.onOptionsItemSelected(item); - } - - private void createConfigFile(ArrayList params) { - String instrumentName = instrumentsList.get(selectedItem); - String fileName = "pslab_config.txt"; - String basepath = Environment.getExternalStorageDirectory().getAbsolutePath(); - - File baseDirectory = new File(basepath + File.separator + CSVLogger.CSV_DIRECTORY); - if (!baseDirectory.exists()) { - try { - baseDirectory.mkdir(); - } catch (Exception e) { - e.printStackTrace(); - } - } - - File configFile = new File(basepath + File.separator + CSVLogger.CSV_DIRECTORY + File.separator + fileName); - if (!configFile.exists()) { - try { - configFile.createNewFile(); - } catch (IOException e) { - e.printStackTrace(); - } - } - try { - FileWriter writer = new FileWriter(configFile); - writer.write("instrument: " + instrumentName + "\n"); - writer.write("interval: " + interval + " " + intervalUnit + "\n"); - String param = StringUtils.join(",", params); - writer.write("params: " + param); - writer.flush(); - writer.close(); - CustomSnackBar.showSnackBar(rootView, getString(R.string.file_created_success_message), null, null, Snackbar.LENGTH_SHORT); - } catch (IOException e) { - e.printStackTrace(); - CustomSnackBar.showSnackBar(rootView, getString(R.string.file_created_fail_message), null, null, Snackbar.LENGTH_SHORT); - } - - } -} diff --git a/app/src/main/java/io/pslab/activity/DataLoggerActivity.java b/app/src/main/java/io/pslab/activity/DataLoggerActivity.java deleted file mode 100644 index 7598de8b8..000000000 --- a/app/src/main/java/io/pslab/activity/DataLoggerActivity.java +++ /dev/null @@ -1,356 +0,0 @@ -package io.pslab.activity; - -import android.content.Context; -import android.content.Intent; -import android.net.Uri; -import android.os.AsyncTask; -import android.os.Bundle; -import android.os.Environment; -import android.view.Menu; -import android.view.MenuItem; -import android.view.View; -import android.widget.ProgressBar; -import android.widget.TextView; - -import androidx.annotation.Nullable; -import androidx.appcompat.app.ActionBar; -import androidx.appcompat.app.AlertDialog; -import androidx.appcompat.app.AppCompatActivity; -import androidx.appcompat.widget.Toolbar; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.google.android.material.snackbar.Snackbar; - -import java.io.BufferedReader; -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStreamReader; - -import butterknife.BindView; -import butterknife.ButterKnife; -import io.pslab.R; -import io.pslab.adapters.SensorLoggerListAdapter; -import io.pslab.models.AccelerometerData; -import io.pslab.models.BaroData; -import io.pslab.models.CompassData; -import io.pslab.models.GasSensorData; -import io.pslab.models.GyroData; -import io.pslab.models.LogicAnalyzerData; -import io.pslab.models.LuxData; -import io.pslab.models.OscilloscopeData; -import io.pslab.models.PowerSourceData; -import io.pslab.models.SensorDataBlock; -import io.pslab.models.ServoData; -import io.pslab.models.ThermometerData; -import io.pslab.models.WaveGeneratorData; -import io.pslab.others.CSVLogger; -import io.pslab.others.CustomSnackBar; -import io.pslab.others.LocalDataLog; -import io.realm.OrderedCollectionChangeSet; -import io.realm.OrderedRealmCollectionChangeListener; -import io.realm.Realm; -import io.realm.RealmObject; -import io.realm.RealmResults; - -public class DataLoggerActivity extends AppCompatActivity { - - public static final String CALLER_ACTIVITY = "Caller"; - - @BindView(R.id.recycler_view) - RecyclerView recyclerView; - @BindView(R.id.data_logger_blank_view) - TextView blankView; - @BindView(R.id.toolbar) - Toolbar toolbar; - - private ProgressBar deleteAllProgressBar; - private RealmResults categoryData; - private String selectedDevice = null; - private Realm realm; - private String caller; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_data_logger); - ButterKnife.bind(this); - setSupportActionBar(toolbar); - deleteAllProgressBar = findViewById(R.id.delete_all_progbar); - deleteAllProgressBar.setVisibility(View.GONE); - realm = LocalDataLog.with().getRealm(); - caller = getIntent().getStringExtra(CALLER_ACTIVITY); - if (caller == null) { - caller = getResources().getString(R.string.logged_data); - } - final ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setDisplayShowHomeEnabled(true); - actionBar.setTitle(caller); - } - - setCategoryData(); - fillData(); - } - - private void setCategoryData() { - switch (caller) { - case "Lux Meter": - categoryData = LocalDataLog.with().getTypeOfSensorBlocks(getString(R.string.lux_meter)); - break; - case "Barometer": - categoryData = LocalDataLog.with().getTypeOfSensorBlocks(getString(R.string.baro_meter)); - break; - case "Accelerometer": - categoryData = LocalDataLog.with().getTypeOfSensorBlocks(getString(R.string.accelerometer)); - break; - case "Multimeter": - categoryData = LocalDataLog.with().getTypeOfSensorBlocks(getString(R.string.multimeter)); - break; - case "Gyroscope": - categoryData = LocalDataLog.with().getTypeOfSensorBlocks(getString(R.string.gyroscope)); - break; - case "Compass": - categoryData = LocalDataLog.with().getTypeOfSensorBlocks(getString(R.string.compass)); - break; - case "Thermometer": - categoryData = LocalDataLog.with().getTypeOfSensorBlocks(getString(R.string.thermometer)); - break; - case "Robotic Arm": - categoryData = LocalDataLog.with().getTypeOfSensorBlocks(getString(R.string.robotic_arm)); - break; - case "Wave Generator": - categoryData = LocalDataLog.with().getTypeOfSensorBlocks(getResources().getString(R.string.wave_generator)); - break; - case "Oscilloscope": - categoryData = LocalDataLog.with().getTypeOfSensorBlocks(getResources().getString(R.string.oscilloscope)); - break; - case "Power Source": - categoryData = LocalDataLog.with().getTypeOfSensorBlocks(getResources().getString(R.string.power_source)); - break; - case "Logic Analyzer": - categoryData = LocalDataLog.with().getTypeOfSensorBlocks(getResources().getString(R.string.logical_analyzer)); - break; - case "Gas Sensor": - categoryData = LocalDataLog.with().getTypeOfSensorBlocks(getString(R.string.gas_sensor)); - break; - case "Dust Sensor": - categoryData = LocalDataLog.with().getTypeOfSensorBlocks(getString(R.string.dust_sensor)); - break; - case "Sound Meter": - categoryData = LocalDataLog.with().getTypeOfSensorBlocks(getString(R.string.sound_meter)); - break; - default: - categoryData = LocalDataLog.with().getAllSensorBlocks(); - } - fillData(); - categoryData.addChangeListener(new OrderedRealmCollectionChangeListener>() { - @Override - public void onChange(RealmResults sensorDataBlocks, OrderedCollectionChangeSet changeSet) { - if (categoryData.size() == 0) { - DataLoggerActivity.this.toolbar.getMenu().findItem(R.id.delete_all).setVisible(false); - } - } - }); - } - - private void fillData() { - if (categoryData.size() > 0) { - blankView.setVisibility(View.GONE); - SensorLoggerListAdapter adapter = new SensorLoggerListAdapter(categoryData, this); - LinearLayoutManager linearLayoutManager = new LinearLayoutManager( - this, LinearLayoutManager.VERTICAL, false); - recyclerView.setLayoutManager(linearLayoutManager); - DividerItemDecoration itemDecor = new DividerItemDecoration(this, DividerItemDecoration.HORIZONTAL); - recyclerView.addItemDecoration(itemDecor); - recyclerView.setAdapter(adapter); - } else { - recyclerView.setVisibility(View.GONE); - blankView.setVisibility(View.VISIBLE); - } - } - - @Override - public void onBackPressed() { - finish(); - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case android.R.id.home: - finish(); - break; - case R.id.action_import_log: - selectFile(); - break; - case R.id.delete_all: - displayAlertDialog(DataLoggerActivity.this); - break; - } - return super.onOptionsItemSelected(item); - } - - private void displayAlertDialog(Context context) { - new AlertDialog.Builder(context) - .setTitle(context.getString(R.string.delete)) - .setMessage(context.getString(R.string.delete_all_message)) - .setPositiveButton(context.getString(R.string.delete), (dialog, which) -> { - deleteAllProgressBar.setVisibility(View.VISIBLE); - new DeleteAllTask().execute(); - }).setNegativeButton(context.getString(R.string.cancel), (dialog, which) -> dialog.dismiss()).create().show(); - } - - @Override - public boolean onCreateOptionsMenu(Menu menu) { - getMenuInflater().inflate(R.menu.log_activity_menu, menu); - menu.findItem(R.id.delete_all).setVisible(categoryData.size() > 0); - return super.onCreateOptionsMenu(menu); - } - - private void selectFile() { - Intent intent = new Intent(Intent.ACTION_GET_CONTENT); - intent.setType("*/*"); - startActivityForResult(intent, 100); - } - - @Override - protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { - super.onActivityResult(requestCode, resultCode, data); - if (requestCode == 100) { - if (resultCode == RESULT_OK && data != null) { - Uri uri = data.getData(); - String path = uri.getPath(); - path = path.replace("/root_path/", "/"); - File file = new File(path); - getFileData(file); - } else - CustomSnackBar.showSnackBar(findViewById(android.R.id.content), - getString(R.string.no_file_selected), null, null, Snackbar.LENGTH_SHORT); - } - } - - private void getFileData(File file) { - try { - FileInputStream is = new FileInputStream(file); - BufferedReader reader = new BufferedReader(new InputStreamReader(is)); - String line = reader.readLine(); - int i = 0; - long block = 0, time = 0; - while (line != null) { - if (i > 1) { - String[] data = line.split(","); - try { - time += 1000; - realm.beginTransaction(); - RealmObject object = getObject(selectedDevice, data, time, block); - if (object != null) { - realm.copyToRealm(object); - } else { - CustomSnackBar.showSnackBar(findViewById(android.R.id.content), - getString(R.string.incorrect_import_format), null, null, Snackbar.LENGTH_SHORT); - } - realm.commitTransaction(); - } catch (Exception e) { - CustomSnackBar.showSnackBar(findViewById(android.R.id.content), - getString(R.string.incorrect_import_format), null, null, Snackbar.LENGTH_SHORT); - } - } else if (i == 0) { - block = System.currentTimeMillis(); - time = block; - selectedDevice = line.split(",")[0]; - realm.beginTransaction(); - realm.copyToRealm(new SensorDataBlock(block, selectedDevice)); - realm.commitTransaction(); - } - i++; - line = reader.readLine(); - } - fillData(); - DataLoggerActivity.this.toolbar.getMenu().findItem(R.id.delete_all).setVisible(true); - } catch (IOException e) { - e.printStackTrace(); - } - } - - private RealmObject getObject(String objectType, String[] data, long time, long block) { - RealmObject returnObject = null; - switch (objectType) { - case "Lux Meter": - returnObject = new LuxData(time, block, Float.valueOf(data[2]), Double.valueOf(data[3]), Double.valueOf(data[4])); - break; - case "Barometer": - returnObject = new BaroData(time, block, Float.valueOf(data[2]), Float.valueOf(data[3]), Double.valueOf(data[4]), Double.valueOf(data[5])); - break; - case "Accelerometer": - returnObject = new AccelerometerData(time, block, Float.valueOf(data[2]), Float.valueOf(data[3]), Float.valueOf(data[4]), Double.valueOf(data[5]), Double.valueOf(data[6])); - break; - case "Gyroscope": - returnObject = new GyroData(time, block, Float.valueOf(data[2]), Float.valueOf(data[3]), Float.valueOf(data[4]), Double.valueOf(data[5]), Double.valueOf(data[6])); - break; - case "Compass": - returnObject = new CompassData(time, block, data[2].equals("null") ? 0f : Float.valueOf(data[2]), data[3].equals("null") ? 0f : Float.valueOf(data[3]), data[4].equals("null") ? 0f : Float.valueOf(data[4]), data[5], Double.valueOf(data[6]), Double.valueOf(data[7])); - break; - case "Thermometer": - returnObject = new ThermometerData(time, block, Float.valueOf(data[2]), Double.valueOf(data[5]), Double.valueOf(data[6])); - break; - case "Robotic Arm": - returnObject = new ServoData(time, block, data[2], data[3], data[4], data[5], Float.valueOf(data[6]), Float.valueOf(data[7])); - break; - case "Wave Generator": - returnObject = new WaveGeneratorData(time, block, data[2], data[3], data[4], data[5], data[6], data[7], Float.valueOf(data[8]), Float.valueOf(data[9])); - break; - case "Oscilloscope": - returnObject = new OscilloscopeData(time, block, Integer.valueOf(data[2]), data[3], data[4], data[5], Float.valueOf(data[6]), Float.valueOf(data[7]), Float.valueOf(data[8])); - break; - case "Power Source": - returnObject = new PowerSourceData(time, block, Float.valueOf(data[2]), Float.valueOf(data[3]), Float.valueOf(data[4]), Float.valueOf(data[5]), Float.valueOf(data[6]), Float.valueOf(data[7])); - break; - case "Logic Analyzer": - returnObject = new LogicAnalyzerData(time, block, data[2], Integer.valueOf(data[3]), data[4], data[5], Float.valueOf(data[6]), Float.valueOf(data[7])); - break; - case "Gas Sensor": - returnObject = new GasSensorData(time, block, Float.valueOf(data[2]), Double.valueOf(data[3]), Double.valueOf(data[4])); - break; - default: - returnObject = null; - break; - } - return returnObject; - } - - private class DeleteAllTask extends AsyncTask { - @Override - protected Void doInBackground(Void... voids) { - Realm realm = Realm.getDefaultInstance(); - for (SensorDataBlock data : realm.where(SensorDataBlock.class) - .findAll()) { - File logDirectory = new File( - Environment.getExternalStorageDirectory().getAbsolutePath() + - File.separator + CSVLogger.CSV_DIRECTORY + - File.separator + data.getSensorType() + - File.separator + CSVLogger.FILE_NAME_FORMAT.format(data.getBlock()) + ".csv"); - logDirectory.delete(); - realm.beginTransaction(); - realm.where(SensorDataBlock.class) - .equalTo("block", data.getBlock()) - .findFirst().deleteFromRealm(); - realm.commitTransaction(); - } - realm.close(); - return null; - } - - @Override - protected void onPostExecute(Void aVoid) { - deleteAllProgressBar.setVisibility(View.GONE); - if (LocalDataLog.with().getAllSensorBlocks().size() <= 0) { - blankView.setVisibility(View.VISIBLE); - } - DataLoggerActivity.this.toolbar.getMenu().findItem(R.id.delete_all).setVisible(false); - } - } -} diff --git a/app/src/main/java/io/pslab/activity/DustSensorActivity.java b/app/src/main/java/io/pslab/activity/DustSensorActivity.java deleted file mode 100644 index bf0e3093c..000000000 --- a/app/src/main/java/io/pslab/activity/DustSensorActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package io.pslab.activity; - -import android.content.SharedPreferences; -import android.preference.PreferenceManager; - -import androidx.appcompat.app.ActionBar; -import androidx.fragment.app.Fragment; - -import io.pslab.R; -import io.pslab.fragment.DustSensorDataFragment; -import io.pslab.fragment.DustSensorSettingsFragment; -import io.pslab.models.DustSensorData; -import io.pslab.models.PSLabSensor; -import io.pslab.models.SensorDataBlock; -import io.pslab.others.LocalDataLog; -import io.realm.RealmObject; -import io.realm.RealmResults; - -public class DustSensorActivity extends PSLabSensor { - - private static final String PREF_NAME = "customDialogPreference"; - public RealmResults recordedDustSensorData; - - @Override - public int getMenu() { - return R.menu.sensor_data_log_menu; - } - - @Override - public SharedPreferences getStateSettings() { - return this.getSharedPreferences(PREF_NAME, MODE_PRIVATE); - } - - @Override - public String getFirstTimeSettingID() { - return "DustSensorFirstTime"; - } - - @Override - public String getSensorName() { - return getResources().getString(R.string.dust_sensor); - } - - @Override - public int getGuideTitle() { - return R.string.dust_sensor; - } - - @Override - public int getGuideAbstract() { - return R.string.dust_sensor_intro; - } - - @Override - public int getGuideSchematics() { - return 0; - } - - @Override - public int getGuideDescription() { - return R.string.dust_sensor_desc; - } - - @Override - public int getGuideExtraContent() { - return 0; - } - - @Override - public void recordSensorDataBlockID(SensorDataBlock block) { - realm.beginTransaction(); - realm.copyToRealm(block); - realm.commitTransaction(); - } - - @Override - public void recordSensorData(RealmObject sensorData) { - realm.beginTransaction(); - realm.copyToRealm((DustSensorData) sensorData); - realm.commitTransaction(); - } - - @Override - public void stopRecordSensorData() { - LocalDataLog.with().refresh(); - } - - @Override - public Fragment getSensorFragment() { - return DustSensorDataFragment.newInstance(); - } - - @Override - protected void onResume() { - super.onResume(); - reinstateConfigurations(); - } - - private void reinstateConfigurations() { - SharedPreferences luxMeterConfigurations; - luxMeterConfigurations = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); - locationEnabled = luxMeterConfigurations.getBoolean(DustSensorSettingsFragment.KEY_INCLUDE_LOCATION, true); - DustSensorDataFragment.setParameters( - getValueFromText(luxMeterConfigurations.getString(DustSensorSettingsFragment.KEY_HIGH_LIMIT, "4.0"), - 0.0, 5.0), - getValueFromText(luxMeterConfigurations.getString(DustSensorSettingsFragment.KEY_UPDATE_PERIOD, "1000"), - 100, 1000), - luxMeterConfigurations.getString(DustSensorSettingsFragment.KEY_DUST_SENSOR_TYPE, "0")); - } - - private int getValueFromText(String strValue, int lowerBound, int upperBound) { - if (strValue.isEmpty()) return lowerBound; - int value = Integer.parseInt(strValue); - if (value > upperBound) return upperBound; - else if (value < lowerBound) return lowerBound; - else return value; - } - - private double getValueFromText(String strValue, double lowerBound, double upperBound) { - if (strValue.isEmpty()) return lowerBound; - double value = Double.parseDouble(strValue); - if (value > upperBound) return upperBound; - else if (value < lowerBound) return lowerBound; - else return value; - } - - @Override - public void getDataFromDataLogger() { - if (getIntent().getExtras() != null && getIntent().getExtras().getBoolean(KEY_LOG)) { - viewingData = true; - recordedDustSensorData = LocalDataLog.with() - .getBlockOfDustSensorRecords(getIntent().getExtras().getLong(DATA_BLOCK)); - final DustSensorData data = recordedDustSensorData.get(0); - if (data != null) { - final String title = titleFormat.format(data.getTime()); - final ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setTitle(title); - } - } - } - } - - @Override - public boolean sensorFound() { - return false; - } -} diff --git a/app/src/main/java/io/pslab/activity/GasSensorActivity.java b/app/src/main/java/io/pslab/activity/GasSensorActivity.java deleted file mode 100644 index 07f48d573..000000000 --- a/app/src/main/java/io/pslab/activity/GasSensorActivity.java +++ /dev/null @@ -1,113 +0,0 @@ -package io.pslab.activity; - -import android.content.SharedPreferences; - -import androidx.appcompat.app.ActionBar; -import androidx.fragment.app.Fragment; - -import io.pslab.R; -import io.pslab.fragment.GasSensorDataFragment; -import io.pslab.models.GasSensorData; -import io.pslab.models.PSLabSensor; -import io.pslab.models.SensorDataBlock; -import io.pslab.others.LocalDataLog; -import io.realm.RealmObject; -import io.realm.RealmResults; - -public class GasSensorActivity extends PSLabSensor { - - private static final String PREF_NAME = "customDialogPreference"; - public RealmResults recordedGasSensorData; - - @Override - public int getMenu() { - return R.menu.sensor_data_log_menu; - } - - @Override - public SharedPreferences getStateSettings() { - return this.getSharedPreferences(PREF_NAME, MODE_PRIVATE); - - } - - @Override - public String getFirstTimeSettingID() { - return "GasSensorFirstTime"; - } - - @Override - public String getSensorName() { - return getResources().getString(R.string.gas_sensor); - } - - @Override - public int getGuideTitle() { - return R.string.gas_sensor; - } - - @Override - public int getGuideAbstract() { - return R.string.gas_sensor; - } - - @Override - public int getGuideSchematics() { - return R.drawable.bmp180_schematic; - } - - @Override - public int getGuideDescription() { - return R.string.gas_sensor; - } - - @Override - public int getGuideExtraContent() { - return 0; - } - - @Override - public void recordSensorDataBlockID(SensorDataBlock block) { - realm.beginTransaction(); - realm.copyToRealm(block); - realm.commitTransaction(); - } - - @Override - public void recordSensorData(RealmObject sensorData) { - realm.beginTransaction(); - realm.copyToRealm((GasSensorData) sensorData); - realm.commitTransaction(); - } - - @Override - public void stopRecordSensorData() { - LocalDataLog.with().refresh(); - } - - @Override - public Fragment getSensorFragment() { - return GasSensorDataFragment.newInstance(); - } - - @Override - public void getDataFromDataLogger() { - if (getIntent().getExtras() != null && getIntent().getExtras().getBoolean(KEY_LOG)) { - viewingData = true; - recordedGasSensorData = LocalDataLog.with() - .getBlockOfGasSensorRecords(getIntent().getExtras().getLong(DATA_BLOCK)); - final GasSensorData data = recordedGasSensorData.get(0); - if (data != null) { - final String title = titleFormat.format(data.getTime()); - final ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setTitle(title); - } - } - } - } - - @Override - public boolean sensorFound() { - return false; - } -} diff --git a/app/src/main/java/io/pslab/activity/GyroscopeActivity.java b/app/src/main/java/io/pslab/activity/GyroscopeActivity.java deleted file mode 100644 index 17e949778..000000000 --- a/app/src/main/java/io/pslab/activity/GyroscopeActivity.java +++ /dev/null @@ -1,134 +0,0 @@ -package io.pslab.activity; - -import android.content.SharedPreferences; -import android.hardware.Sensor; -import android.hardware.SensorManager; - -import androidx.appcompat.app.ActionBar; -import androidx.fragment.app.Fragment; -import androidx.preference.PreferenceManager; - -import io.pslab.R; -import io.pslab.fragment.GyroscopeDataFragment; -import io.pslab.fragment.GyroscopeSettingsFragment; -import io.pslab.models.GyroData; -import io.pslab.models.PSLabSensor; -import io.pslab.models.SensorDataBlock; -import io.pslab.others.LocalDataLog; -import io.realm.RealmObject; -import io.realm.RealmResults; - -public class GyroscopeActivity extends PSLabSensor { - - private static final String PREF_NAME = "customDialogPreference"; - public final String GYROSCOPE_LIMIT = "gyroscope_limit"; - public RealmResults recordedGyroData; - - @Override - public int getMenu() { - return R.menu.sensor_data_log_menu; - } - - @Override - public SharedPreferences getStateSettings() { - return this.getSharedPreferences(PREF_NAME, MODE_PRIVATE); - } - - @Override - public String getFirstTimeSettingID() { - return "GyroscopeFirstTime"; - } - - @Override - public String getSensorName() { - return getResources().getString(R.string.gyroscope); - } - - @Override - public int getGuideTitle() { - return R.string.gyroscope; - } - - @Override - public int getGuideAbstract() { - return R.string.gyroscope_intro; - } - - @Override - public int getGuideSchematics() { - return R.drawable.gyroscope_axes_orientation; - } - - @Override - public int getGuideDescription() { - return R.string.gyroscope_description_text; - } - - @Override - public int getGuideExtraContent() { - return 0; - } - - @Override - public void recordSensorDataBlockID(SensorDataBlock block) { - realm.beginTransaction(); - realm.copyToRealm(block); - realm.commitTransaction(); - } - - @Override - public void recordSensorData(RealmObject sensorData) { - realm.beginTransaction(); - realm.copyToRealm((GyroData) sensorData); - realm.commitTransaction(); - } - - @Override - public void stopRecordSensorData() { - LocalDataLog.with().refresh(); - } - - @Override - public Fragment getSensorFragment() { - return GyroscopeDataFragment.newInstance(); - } - - @Override - public void getDataFromDataLogger() { - if (getIntent().getExtras() != null && getIntent().getExtras().getBoolean(KEY_LOG)) { - viewingData = true; - recordedGyroData = LocalDataLog.with() - .getBlockOfGyroRecords(getIntent().getExtras().getLong(DATA_BLOCK)); - final GyroData data = recordedGyroData.get(0); - if (data != null) { - final String title = titleFormat.format(data.getTime()); - final ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setTitle(title); - } - } - } - } - - @Override - public boolean sensorFound() { - SensorManager sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); - return sensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE) != null; - } - - @Override - protected void onResume() { - super.onResume(); - reinstateConfigurations(); - } - - private void reinstateConfigurations() { - SharedPreferences gyroscopeConfigurations; - gyroscopeConfigurations = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); - locationEnabled = gyroscopeConfigurations.getBoolean(GyroscopeSettingsFragment.KEY_INCLUDE_LOCATION, true); - GyroscopeDataFragment.setParameters( - Float.valueOf(gyroscopeConfigurations.getString(GyroscopeSettingsFragment.KEY_HIGH_LIMIT, "20")), - Integer.valueOf(gyroscopeConfigurations.getString(GyroscopeSettingsFragment.KEY_UPDATE_PERIOD, "1000")), - gyroscopeConfigurations.getString(GyroscopeSettingsFragment.KEY_GYROSCOPE_SENSOR_GAIN, "1")); - } -} diff --git a/app/src/main/java/io/pslab/activity/LogicalAnalyzerActivity.java b/app/src/main/java/io/pslab/activity/LogicalAnalyzerActivity.java deleted file mode 100644 index 70e4fed0a..000000000 --- a/app/src/main/java/io/pslab/activity/LogicalAnalyzerActivity.java +++ /dev/null @@ -1,149 +0,0 @@ -package io.pslab.activity; - -import android.annotation.SuppressLint; -import android.content.Intent; -import android.os.Bundle; -import android.view.Menu; -import android.view.MenuItem; -import android.view.View; -import android.view.Window; -import android.view.WindowManager; - -import androidx.annotation.Nullable; -import androidx.appcompat.app.ActionBar; -import androidx.appcompat.widget.Toolbar; - -import io.pslab.R; -import io.pslab.activity.guide.GuideActivity; -import io.pslab.fragment.LALogicLinesFragment; -import io.pslab.models.LogicAnalyzerData; -import io.pslab.others.LocalDataLog; -import io.realm.RealmResults; - -/** - * Created by viveksb007 on 10/5/17. - */ - -public class LogicalAnalyzerActivity extends GuideActivity { - - public static final String PREFS_NAME = "LogicAnalyzerPreference"; - - private boolean isRunning = false; - - private final String KEY_LOG = "has_log"; - private final String DATA_BLOCK = "data_block"; - public boolean isPlayback = false; - public RealmResults recordedLAData; - private LALogicLinesFragment laLogicLinesFragment; - - public LogicalAnalyzerActivity() { - super(R.layout.activity_logic_analyzer); - } - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - requestWindowFeature(Window.FEATURE_NO_TITLE); - super.onCreate(savedInstanceState); - getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); - - removeStatusBar(); - - laLogicLinesFragment = LALogicLinesFragment.newInstance(this); - getSupportFragmentManager().beginTransaction().add(R.id.la_frame_layout, laLogicLinesFragment).commit(); - Toolbar toolbar = findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - final ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setTitle(R.string.logical_analyzer); - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setDisplayShowHomeEnabled(true); - } - - if (getIntent().getExtras() != null && getIntent().getExtras().getBoolean(KEY_LOG)) { - recordedLAData = LocalDataLog.with() - .getBlockOfLARecords(getIntent().getExtras().getLong(DATA_BLOCK)); - isPlayback = true; - } - } - - @Override - protected void onResume() { - super.onResume(); - removeStatusBar(); - } - - private void removeStatusBar() { - final int flags = View.SYSTEM_UI_FLAG_LAYOUT_STABLE - | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION - | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN - | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION - | View.SYSTEM_UI_FLAG_FULLSCREEN - | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY; - getWindow().getDecorView().setSystemUiVisibility(flags); - final View decorView = getWindow().getDecorView(); - decorView.setOnSystemUiVisibilityChangeListener(new View.OnSystemUiVisibilityChangeListener() { - @Override - public void onSystemUiVisibilityChange(int i) { - if ((i & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) { - decorView.setSystemUiVisibility(flags); - } - } - }); - } - - @SuppressLint("NewApi") - @Override - public void onWindowFocusChanged(boolean hasFocus) { - super.onWindowFocusChanged(hasFocus); - if (hasFocus) { - getWindow().getDecorView().setSystemUiVisibility( - View.SYSTEM_UI_FLAG_LAYOUT_STABLE - | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION - | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN - | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION - | View.SYSTEM_UI_FLAG_FULLSCREEN - | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY); - } - } - - @Override - public boolean onCreateOptionsMenu(Menu menu) { - getMenuInflater().inflate(R.menu.logical_analyzer_menu, menu); - return true; - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case android.R.id.home: - finish(); - break; - case R.id.show_logged_data: - Intent intent = new Intent(LogicalAnalyzerActivity.this, DataLoggerActivity.class); - intent.putExtra(DataLoggerActivity.CALLER_ACTIVITY, getResources().getString(R.string.logical_analyzer)); - startActivity(intent); - break; - case R.id.save_graph: - laLogicLinesFragment.logData(); - break; - case R.id.show_guide: - toggleGuide(); - break; - default: - break; - } - return true; - } - - @Override - public void onBackPressed() { - if (!isRunning) - finish(); - } - - public void setStatus(boolean status) { - isRunning = status; - } - - -} diff --git a/app/src/main/java/io/pslab/activity/LuxMeterActivity.java b/app/src/main/java/io/pslab/activity/LuxMeterActivity.java deleted file mode 100644 index 412e6db07..000000000 --- a/app/src/main/java/io/pslab/activity/LuxMeterActivity.java +++ /dev/null @@ -1,151 +0,0 @@ -package io.pslab.activity; - -import static android.os.Build.VERSION.SDK_INT; - -import android.content.SharedPreferences; -import android.hardware.Sensor; -import android.hardware.SensorManager; - -import androidx.appcompat.app.ActionBar; -import androidx.fragment.app.Fragment; -import androidx.preference.PreferenceManager; - -import io.pslab.R; -import io.pslab.fragment.LuxMeterDataFragment; -import io.pslab.fragment.LuxMeterSettingFragment; -import io.pslab.models.LuxData; -import io.pslab.models.PSLabSensor; -import io.pslab.models.SensorDataBlock; -import io.pslab.others.LocalDataLog; -import io.realm.RealmObject; -import io.realm.RealmResults; - -public class LuxMeterActivity extends PSLabSensor { - - private static final String PREF_NAME = "customDialogPreference"; - public final String LUXMETER_LIMIT = "luxmeter_limit"; - public RealmResults recordedLuxData; - - @Override - public int getMenu() { - return R.menu.sensor_data_log_menu; - } - - @Override - public SharedPreferences getStateSettings() { - return this.getSharedPreferences(PREF_NAME, MODE_PRIVATE); - } - - @Override - public String getFirstTimeSettingID() { - return "LuxMeterFirstTime"; - } - - @Override - public String getSensorName() { - return getResources().getString(R.string.lux_meter); - } - - @Override - public int getGuideTitle() { - return R.string.lux_meter; - } - - @Override - public int getGuideAbstract() { - return R.string.lux_meter_intro; - } - - @Override - public int getGuideSchematics() { - return R.drawable.bh1750_schematic; - } - - @Override - public int getGuideDescription() { - return R.string.lux_meter_desc; - } - - @Override - public int getGuideExtraContent() { - return 0; - } - - @Override - public void recordSensorDataBlockID(SensorDataBlock categoryData) { - realm.beginTransaction(); - realm.copyToRealm(categoryData); - realm.commitTransaction(); - } - - @Override - public void recordSensorData(RealmObject sensorData) { - realm.beginTransaction(); - realm.copyToRealm((LuxData) sensorData); - realm.commitTransaction(); - } - - @Override - public void stopRecordSensorData() { - LocalDataLog.with().refresh(); - } - - @Override - public Fragment getSensorFragment() { - return LuxMeterDataFragment.newInstance(); - } - - @Override - public void getDataFromDataLogger() { - if (SDK_INT >= 21 && getIntent().getExtras() != null && getIntent().getExtras().getBoolean(KEY_LOG)) { - //playingData = true; - viewingData = true; - recordedLuxData = LocalDataLog.with() - .getBlockOfLuxRecords(getIntent().getExtras().getLong(DATA_BLOCK)); - final LuxData data = recordedLuxData.get(0); - if (data != null) { - final String title = titleFormat.format(data.getTime()); - final ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setTitle(title); - } - } - } - } - - @Override - public boolean sensorFound() { - SensorManager sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); - return sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT) != null; - } - - /** - * Once settings have been changed, those changes can be captured from onResume method. - * reinstateConfigurations() will update the logs with new settings - */ - @Override - protected void onResume() { - super.onResume(); - reinstateConfigurations(); - } - - private void reinstateConfigurations() { - SharedPreferences luxMeterConfigurations; - luxMeterConfigurations = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); - locationEnabled = luxMeterConfigurations.getBoolean(LuxMeterSettingFragment.KEY_INCLUDE_LOCATION, true); - LuxMeterDataFragment.setParameters( - getValueFromText(luxMeterConfigurations.getString(LuxMeterSettingFragment.KEY_HIGH_LIMIT, "2000"), - 10, 10000), - getValueFromText(luxMeterConfigurations.getString(LuxMeterSettingFragment.KEY_UPDATE_PERIOD, "1000"), - 100, 1000), - luxMeterConfigurations.getString(LuxMeterSettingFragment.KEY_LUX_SENSOR_TYPE, "0"), - luxMeterConfigurations.getString(LuxMeterSettingFragment.KEY_LUX_SENSOR_GAIN, "1")); - } - - private int getValueFromText(String strValue, int lowerBound, int upperBound) { - if (strValue.isEmpty()) return lowerBound; - int value = Integer.parseInt(strValue); - if (value > upperBound) return upperBound; - else return Math.max(value, lowerBound); - } -} diff --git a/app/src/main/java/io/pslab/activity/MainActivity.java b/app/src/main/java/io/pslab/activity/MainActivity.java deleted file mode 100644 index ad3965cc7..000000000 --- a/app/src/main/java/io/pslab/activity/MainActivity.java +++ /dev/null @@ -1,582 +0,0 @@ -package io.pslab.activity; - -import static io.pslab.others.ScienceLabCommon.scienceLab; - -import android.app.PendingIntent; -import android.app.ProgressDialog; -import android.content.BroadcastReceiver; -import android.content.Context; -import android.content.Intent; -import android.content.IntentFilter; -import android.hardware.usb.UsbDevice; -import android.hardware.usb.UsbManager; -import android.os.Bundle; -import android.os.Handler; -import android.util.Log; -import android.view.Menu; -import android.view.MenuInflater; -import android.view.MenuItem; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.appcompat.app.ActionBar; -import androidx.appcompat.app.ActionBarDrawerToggle; -import androidx.appcompat.app.AlertDialog; -import androidx.appcompat.app.AppCompatActivity; -import androidx.appcompat.widget.Toolbar; -import androidx.browser.customtabs.CustomTabsServiceConnection; -import androidx.core.view.GravityCompat; -import androidx.drawerlayout.widget.DrawerLayout; -import androidx.fragment.app.Fragment; -import androidx.fragment.app.FragmentTransaction; - -import com.google.android.gms.oss.licenses.OssLicensesMenuActivity; -import com.google.android.material.navigation.NavigationView; -import com.google.android.material.snackbar.Snackbar; - -import java.io.IOException; - -import javax.annotation.Nullable; - -import butterknife.BindView; -import butterknife.ButterKnife; -import io.pslab.BuildConfig; -import io.pslab.R; -import io.pslab.communication.CommunicationHandler; -import io.pslab.fragment.AboutUsFragment; -import io.pslab.fragment.FAQFragment; -import io.pslab.fragment.HomeFragment; -import io.pslab.fragment.InstrumentsFragment; -import io.pslab.fragment.PSLabPinLayoutFragment; -import io.pslab.others.CustomSnackBar; -import io.pslab.others.CustomTabService; -import io.pslab.others.InitializationVariable; -import io.pslab.others.ScienceLabCommon; -import io.pslab.receivers.USBDetachReceiver; - -public class MainActivity extends AppCompatActivity { - - private static final String TAG = "MainActivity"; - - @BindView(R.id.nav_view) - NavigationView navigationView; - @Nullable - @BindView(R.id.drawer_layout) - DrawerLayout drawer; - @BindView(R.id.toolbar) - Toolbar toolbar; - - View navHeader; - private ImageView imgProfile; - private TextView txtName; - - private ProgressDialog initialisationDialog; - - private CustomTabService customTabService; - private CustomTabsServiceConnection customTabsServiceConnection; - - public static int navItemIndex = 0; - - private static final String TAG_DEVICE = "device"; - private static final String TAG_INSTRUMENTS = "instruments"; - private static final String TAG_ABOUTUS = "aboutUs"; - private static final String TAG_PINLAYOUT = "pinLayout"; - private static final String TAG_FAQ = "faq"; - private static String CURRENT_TAG = TAG_INSTRUMENTS; - private String[] activityTitles; - - private final boolean shouldLoadHomeFragOnBackPress = true; - private Handler mHandler; - private ScienceLabCommon mScienceLabCommon; - - public boolean PSLabisConnected = false; - - InitializationVariable initialisationStatus; - - public static boolean hasPermission = false; - private boolean receiverRegister = false; - private UsbManager usbManager; - private PendingIntent mPermissionIntent; - private CommunicationHandler communicationHandler; - private USBDetachReceiver usbDetachReceiver; - private static final String ACTION_USB_PERMISSION = "com.android.example.USB_PERMISSION"; - private static final int TIME_INTERVAL = 2000; - private long mBackPressed; - private static MainActivity instance; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_main); - ButterKnife.bind(this); - - initialisationStatus = new InitializationVariable(); - initialisationDialog = new ProgressDialog(this); - initialisationDialog.setMessage(getString(R.string.initialising_wait)); - initialisationDialog.setIndeterminate(true); - initialisationDialog.setCancelable(false); - - usbManager = (UsbManager) getSystemService(USB_SERVICE); - - customTabService = new CustomTabService(MainActivity.this, customTabsServiceConnection); - - mScienceLabCommon = ScienceLabCommon.getInstance(); - - initialisationDialog.show(); - - communicationHandler = new CommunicationHandler(usbManager); - attemptToGetUSBPermission(); - - PSLabisConnected = mScienceLabCommon.openDevice(communicationHandler); - - IntentFilter usbDetachFilter = new IntentFilter(); - usbDetachFilter.addAction(UsbManager.ACTION_USB_DEVICE_DETACHED); - usbDetachReceiver = new USBDetachReceiver(this); - registerReceiver(usbDetachReceiver, usbDetachFilter); - - setSupportActionBar(toolbar); - mHandler = new Handler(); - - navHeader = navigationView.getHeaderView(0); - txtName = navHeader.findViewById(io.pslab.R.id.name); - imgProfile = navHeader.findViewById(io.pslab.R.id.img_profile); - activityTitles = getResources().getStringArray(io.pslab.R.array.nav_item_activity_titles); - - setPSLabVersionIDs(); - - setUpNavigationView(); - initialisationDialog.dismiss(); - - if (savedInstanceState == null) { - navItemIndex = 0; - CURRENT_TAG = TAG_INSTRUMENTS; - loadHomeFragment(); - } - instance = this; - } - - private void loadHomeFragment() { - selectNavMenu(); - setToolbarTitle(activityTitles[navItemIndex]); - if (drawer != null && getSupportFragmentManager().findFragmentByTag(CURRENT_TAG) != null) { - drawer.closeDrawers(); - return; - } - Runnable mPendingRunnable = new Runnable() { - @Override - public void run() { - Fragment fragment = null; - try { - fragment = getHomeFragment(); - } catch (IOException e) { - e.printStackTrace(); - } - FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); - fragmentTransaction.setCustomAnimations(R.anim.fade_in, - R.anim.fade_out); - fragmentTransaction.replace(R.id.frame, fragment, CURRENT_TAG); - fragmentTransaction.commitAllowingStateLoss(); - } - }; - if (mPendingRunnable != null) { - mHandler.post(mPendingRunnable); - } - if (drawer != null) { - drawer.closeDrawers(); - invalidateOptionsMenu(); - } - } - - public static MainActivity getInstance() { - return instance; - } - - private Fragment getHomeFragment() throws IOException { - switch (navItemIndex) { - case 2: - return HomeFragment.newInstance(ScienceLabCommon.scienceLab.isConnected(), ScienceLabCommon.scienceLab.isDeviceFound()); - case 5: - return AboutUsFragment.newInstance(); - case 8: - return FAQFragment.newInstance(); - default: - return InstrumentsFragment.newInstance(); - } - } - - private void setToolbarTitle(final CharSequence title) { - final ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setTitle(title); - } - } - - private void unCheckAllMenuItems(Menu menu) { - int size = menu.size(); - for (int i = 0; i < size; i++) { - final MenuItem item = menu.getItem(i); - item.setChecked(false); - } - } - - private void selectNavMenu() { - int size_menu = navigationView.getMenu().size(); - for (int i = 0; i < size_menu; i++) { - final MenuItem item = navigationView.getMenu().getItem(i); - if (item.hasSubMenu()) { - unCheckAllMenuItems(item.getSubMenu()); - } else { - item.setChecked(false); - } - } - switch (navItemIndex) { - case 0: - case 1: - case 2: - navigationView.getMenu().getItem(navItemIndex).setChecked(true); - break; - case 5: - navigationView.getMenu().getItem(navItemIndex).setChecked(true); - break; - case 8: - navigationView.getMenu().getItem(navItemIndex).setChecked(true); - break; - default: - navigationView.getMenu().getItem(0).setChecked(true); - break; - } - } - - private void setUpNavigationView() { - navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() { - @Override - public boolean onNavigationItemSelected(@NonNull MenuItem item) { - switch (item.getItemId()) { - case R.id.nav_instruments: - navItemIndex = 0; - CURRENT_TAG = TAG_INSTRUMENTS; - break; - case R.id.nav_device: - navItemIndex = 2; - CURRENT_TAG = TAG_DEVICE; - break; - case R.id.nav_settings: - if (drawer != null) { - drawer.closeDrawers(); - } - Intent intent = new Intent(MainActivity.this, SettingsActivity.class); - intent.putExtra("title", "Settings"); - startActivity(intent); - return true; - case R.id.nav_about_us: - navItemIndex = 5; - CURRENT_TAG = TAG_ABOUTUS; - break; - case R.id.nav_documentation: - customTabService.launchUrl("https://docs.pslab.io/"); - if (drawer != null) { - drawer.closeDrawers(); - } - break; - case R.id.nav_rate: - customTabService.launchUrl("https://play.google.com/store/apps/details?id=io.pslab"); - if (drawer != null) { - drawer.closeDrawers(); - } - break; - case R.id.nav_help_feedback: - navItemIndex = 8; - CURRENT_TAG = TAG_FAQ; - break; - case R.id.nav_buy_pslab: - customTabService.launchUrl("https://pslab.io/shop/"); - if (drawer != null) { - drawer.closeDrawers(); - } - break; - case R.id.sensor_data_logger: - if (drawer != null) { - drawer.closeDrawers(); - } - startActivity(new Intent(MainActivity.this, DataLoggerActivity.class)); - break; - case R.id.nav_share_app: - if (drawer != null) { - drawer.closeDrawers(); - } - Intent shareIntent = new Intent(Intent.ACTION_SEND); - shareIntent.setType("text/plain"); - shareIntent.putExtra(Intent.EXTRA_SUBJECT, getResources().getString(R.string.app_name)); - String shareMessage = "https://play.google.com/store/apps/details?id=" + BuildConfig.APPLICATION_ID; - shareIntent.putExtra(Intent.EXTRA_TEXT, shareMessage); - startActivity(shareIntent); - return true; - case R.id.nav_generate_config: - if (drawer != null) { - drawer.closeDrawers(); - } - startActivity(new Intent(MainActivity.this, CreateConfigActivity.class)); - break; - case R.id.nav_privacy_policy: - customTabService.launchUrl("https://pslab.io/privacy-policy/"); - if (drawer != null) { - drawer.closeDrawers(); - } - break; - case R.id.nav_third_party_libs: - OssLicensesMenuActivity.setActivityTitle(getString(R.string.third_party_libs)); - startActivity(new Intent(MainActivity.this, OssLicensesMenuActivity.class)); - break; - default: - navItemIndex = 0; - } - loadHomeFragment(); - return true; - } - }); - - if (drawer != null) { - ActionBarDrawerToggle actionBarDrawerToggle = new ActionBarDrawerToggle(this, drawer, toolbar, io.pslab.R.string.openDrawer, io.pslab.R.string.closeDrawer) { - @Override - public void onDrawerClosed(View drawerView) { - super.onDrawerClosed(drawerView); - } - - @Override - public void onDrawerOpened(View drawerView) { - super.onDrawerOpened(drawerView); - } - }; - drawer.setDrawerListener(actionBarDrawerToggle); - actionBarDrawerToggle.syncState(); - } - } - - private void setPSLabVersionIDs() { - try { - txtName.setText(scienceLab.getVersion()); - } catch (IOException e) { - txtName.setText(getString(R.string.device_not_found)); - } - } - - public void showFirmwareDialog() { - AlertDialog.Builder builder = new AlertDialog.Builder(this); - builder.setTitle(R.string.legacy_title); - builder.setCancelable(false); - builder.setMessage(R.string.legacy_message); - builder.setIcon(android.R.drawable.ic_dialog_alert); - builder.setPositiveButton("OK", (dialog, which) -> dialog.dismiss()); - builder.create().show(); - - } - - @Override - public void onBackPressed() { - Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.frame); - if (drawer != null && drawer.isDrawerOpen(GravityCompat.START)) { - drawer.closeDrawers(); - return; - } - if (fragment instanceof HomeFragment && HomeFragment.isWebViewShowing) { - ((HomeFragment) fragment).hideWebView(); - return; - } - if (shouldLoadHomeFragOnBackPress) { - if (navItemIndex != 0 || CURRENT_TAG.equals(TAG_PINLAYOUT)) { - navItemIndex = 0; - CURRENT_TAG = TAG_INSTRUMENTS; - loadHomeFragment(); - return; - } - } - if (fragment instanceof InstrumentsFragment) { - if (mBackPressed + TIME_INTERVAL > System.currentTimeMillis()) { - super.onBackPressed(); - return; - } else { - CustomSnackBar.showSnackBar(findViewById(android.R.id.content), - getString(R.string.Toast_double_tap), null, null, Snackbar.LENGTH_SHORT); - } - mBackPressed = System.currentTimeMillis(); - } - } - - @Override - public boolean onCreateOptionsMenu(Menu menu) { - MenuInflater inflater = getMenuInflater(); - inflater.inflate(R.menu.pslab_connectivity_menu, menu); - return true; - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case R.id.menu_pslab_connected: - CustomSnackBar.showSnackBar(findViewById(android.R.id.content), - getString(R.string.device_connected_successfully), null, null, Snackbar.LENGTH_SHORT); - break; - case R.id.menu_pslab_disconnected: - attemptToConnectPSLab(); - break; - case R.id.menu_pslab_layout_front: - PSLabPinLayoutFragment.frontSide = true; - displayPSLabPinLayout(); - break; - case R.id.menu_pslab_layout_back: - PSLabPinLayoutFragment.frontSide = false; - displayPSLabPinLayout(); - break; - default: - break; - } - return true; - } - - private void attemptToConnectPSLab() { - initialisationDialog.show(); - mScienceLabCommon = ScienceLabCommon.getInstance(); - if (communicationHandler.isConnected()) { - initialisationDialog.dismiss(); - CustomSnackBar.showSnackBar(findViewById(android.R.id.content), - getString(R.string.device_connected_successfully), null, null, Snackbar.LENGTH_SHORT); - } else { - communicationHandler = new CommunicationHandler(usbManager); - if (communicationHandler.isDeviceFound()) { - attemptToGetUSBPermission(); - } else { - initialisationDialog.dismiss(); - CustomSnackBar.showSnackBar(findViewById(android.R.id.content), - getString(R.string.device_not_found), null, null, Snackbar.LENGTH_SHORT); - navItemIndex = 2; - CURRENT_TAG = TAG_DEVICE; - loadHomeFragment(); - } - } - } - - private void displayPSLabPinLayout() { - CURRENT_TAG = TAG_PINLAYOUT; - navigationView.getMenu().getItem(navItemIndex).setChecked(false); - setToolbarTitle(getResources().getString(R.string.pslab_pinlayout)); - Runnable mPendingRunnable = new Runnable() { - @Override - public void run() { - Fragment fragment = PSLabPinLayoutFragment.newInstance(); - FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); - fragmentTransaction.setCustomAnimations(R.anim.fade_in, R.anim.fade_out) - .replace(R.id.frame, fragment, TAG_PINLAYOUT) - .commitAllowingStateLoss(); - } - }; - mHandler.post(mPendingRunnable); - } - - private void attemptToGetUSBPermission() { - if (!("android.hardware.usb.action.USB_DEVICE_ATTACHED".equals(getIntent().getAction()))) { - if (communicationHandler.isDeviceFound() && !usbManager.hasPermission(communicationHandler.mUsbDevice)) { - mPermissionIntent = PendingIntent.getBroadcast(this, 0, new Intent(ACTION_USB_PERMISSION), 0); - IntentFilter filter = new IntentFilter(ACTION_USB_PERMISSION); - registerReceiver(mUsbReceiver, filter); - receiverRegister = true; - usbManager.requestPermission(communicationHandler.mUsbDevice, mPermissionIntent); - } - if (communicationHandler.mUsbDevice != null) { - if (usbManager.hasPermission(communicationHandler.mUsbDevice)) - initialisationDialog.dismiss(); - hasPermission = true; - } - } else if (usbManager.hasPermission(communicationHandler.mUsbDevice)) { - hasPermission = true; - initialisationDialog.dismiss(); - } - } - - @Override - public boolean onPrepareOptionsMenu(Menu menu) { - menu.getItem(0).setVisible(PSLabisConnected); - menu.getItem(1).setVisible(!PSLabisConnected); - setPSLabVersionIDs(); - return true; - } - - @Override - protected void onDestroy() { - super.onDestroy(); - Log.v(TAG, "MainActivityDestroyed"); - try { - scienceLab.disconnect(); - } catch (IOException e) { - e.printStackTrace(); - } - unregisterReceiver(usbDetachReceiver); - if (customTabsServiceConnection != null) { - this.unbindService(customTabsServiceConnection); - } - if (receiverRegister) - unregisterReceiver(mUsbReceiver); - } - - private final BroadcastReceiver mUsbReceiver = new BroadcastReceiver() { - public void onReceive(Context context, Intent intent) { - String action = intent.getAction(); - if (ACTION_USB_PERMISSION.equals(action)) { - synchronized (this) { - UsbDevice device = intent.getParcelableExtra(UsbManager.EXTRA_DEVICE); - if (intent.getBooleanExtra(UsbManager.EXTRA_PERMISSION_GRANTED, false)) { - if (device != null) { - hasPermission = true; - PSLabisConnected = mScienceLabCommon.openDevice(communicationHandler); - initialisationDialog.dismiss(); - invalidateOptionsMenu(); - CustomSnackBar.showSnackBar(findViewById(android.R.id.content), - getString(R.string.device_connected_successfully), null, null, Snackbar.LENGTH_SHORT); - if (navItemIndex == 0) { - getSupportFragmentManager().beginTransaction().replace(R.id.frame, InstrumentsFragment.newInstance()).commit(); - } else if (navItemIndex == 2) { - getSupportFragmentManager().beginTransaction().replace(R.id.frame, HomeFragment.newInstance(true, true)).commitAllowingStateLoss(); - } else { - CustomSnackBar.showSnackBar(findViewById(android.R.id.content), - getString(R.string.device_connected_successfully), null, null, Snackbar.LENGTH_SHORT); - } - } - } else { - initialisationDialog.dismiss(); - Log.d(TAG, "permission denied for device " + device); - CustomSnackBar.showSnackBar(findViewById(android.R.id.content), - getString(R.string.device_not_found), null, null, Snackbar.LENGTH_SHORT); - } - } - } - } - }; - - @Override - protected void onNewIntent(Intent intent) { - super.onNewIntent(intent); - attemptToConnectPSLab(); - synchronized (this) { - UsbDevice device = intent.getParcelableExtra(UsbManager.EXTRA_DEVICE); - if (device != null && hasPermission) { - PSLabisConnected = mScienceLabCommon.openDevice(communicationHandler); - initialisationDialog.dismiss(); - invalidateOptionsMenu(); - if (navItemIndex == 0) { - getSupportFragmentManager().beginTransaction().replace(R.id.frame, InstrumentsFragment.newInstance()).commit(); - } else if (navItemIndex == 2) { - getSupportFragmentManager().beginTransaction().replace(R.id.frame, HomeFragment.newInstance(true, true)).commitAllowingStateLoss(); - } - CustomSnackBar.showSnackBar(findViewById(android.R.id.content), - getString(R.string.device_connected_successfully), null, null, Snackbar.LENGTH_SHORT); - } - } - } - - @Override - protected void onPostResume() { - super.onPostResume(); - selectNavMenu(); - } -} diff --git a/app/src/main/java/io/pslab/activity/MapsActivity.java b/app/src/main/java/io/pslab/activity/MapsActivity.java deleted file mode 100644 index ab8bc6384..000000000 --- a/app/src/main/java/io/pslab/activity/MapsActivity.java +++ /dev/null @@ -1,80 +0,0 @@ -package io.pslab.activity; - -import android.os.Bundle; - -import androidx.appcompat.app.AppCompatActivity; -import androidx.core.content.res.ResourcesCompat; - -import org.json.JSONArray; -import org.json.JSONException; -import org.json.JSONObject; -import org.osmdroid.api.IMapController; -import org.osmdroid.config.Configuration; -import org.osmdroid.tileprovider.tilesource.TileSourceFactory; -import org.osmdroid.util.GeoPoint; -import org.osmdroid.views.MapView; -import org.osmdroid.views.overlay.Marker; - -import io.pslab.BuildConfig; -import io.pslab.R; - -public class MapsActivity extends AppCompatActivity { - - MapView map = null; - private Marker m; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_maps); - - Configuration.getInstance().setUserAgentValue(BuildConfig.APPLICATION_ID); - map = findViewById(R.id.osmmap); - map.setTileSource(TileSourceFactory.MAPNIK); - map.setBuiltInZoomControls(true); - map.setMultiTouchControls(true); - - m = new Marker(map); - - IMapController mapController = map.getController(); - mapController.setZoom((double) 9); - - if (getIntent().getExtras() != null && getIntent().getExtras().getBoolean("hasMarkers")) { - try { - JSONArray markers = new JSONArray(getIntent().getExtras().getString("markers")); - addMarkers(markers); - } catch (JSONException e) { - e.printStackTrace(); - } finally { - map.invalidate(); - mapController.setCenter(m.getPosition()); - } - } else { - GeoPoint startPoint = new GeoPoint(-33.8688, 151.2093); - mapController.setCenter(startPoint); - } - } - - private void addMarkers(JSONArray markers) throws JSONException { - for (int i = 0; i < markers.length(); i++) { - JSONObject marker = markers.getJSONObject(i); - m.setPosition(new GeoPoint(marker.getDouble("lat"), marker.getDouble("lon"))); - m.setTitle(getString(R.string.logged_data) + " @ " + marker.getString("date")); - m.setIcon(ResourcesCompat.getDrawable(getResources(), R.drawable.action_item_read, null)); - m.setAnchor(Marker.ANCHOR_CENTER, Marker.ANCHOR_TOP); - map.getOverlays().add(m); - } - } - - @Override - protected void onResume() { - super.onResume(); - map.onResume(); - } - - @Override - protected void onPause() { - super.onPause(); - map.onPause(); - } -} \ No newline at end of file diff --git a/app/src/main/java/io/pslab/activity/MultimeterActivity.java b/app/src/main/java/io/pslab/activity/MultimeterActivity.java deleted file mode 100644 index 19f1115d1..000000000 --- a/app/src/main/java/io/pslab/activity/MultimeterActivity.java +++ /dev/null @@ -1,568 +0,0 @@ -package io.pslab.activity; - -import android.Manifest; -import android.content.Context; -import android.content.Intent; -import android.content.SharedPreferences; -import android.content.pm.ActivityInfo; -import android.content.pm.PackageManager; -import android.graphics.Typeface; -import android.location.Location; -import android.location.LocationManager; -import android.os.Bundle; -import android.os.Handler; -import android.preference.PreferenceManager; -import android.view.Menu; -import android.view.MenuInflater; -import android.view.MenuItem; -import android.view.View; -import android.widget.CompoundButton; -import android.widget.TextView; - -import androidx.appcompat.app.ActionBar; -import androidx.appcompat.widget.SwitchCompat; -import androidx.appcompat.widget.Toolbar; -import androidx.coordinatorlayout.widget.CoordinatorLayout; -import androidx.core.app.ActivityCompat; -import androidx.core.content.ContextCompat; -import androidx.core.content.res.ResourcesCompat; - -import com.google.android.material.snackbar.Snackbar; - -import java.text.DecimalFormat; -import java.util.Arrays; -import java.util.Date; -import java.util.Timer; -import java.util.TimerTask; - -import butterknife.BindView; -import butterknife.ButterKnife; -import io.pslab.DataFormatter; -import io.pslab.R; -import io.pslab.activity.guide.GuideActivity; -import io.pslab.communication.ScienceLab; -import io.pslab.fragment.MultimeterSettingsFragment; -import io.pslab.models.MultimeterData; -import io.pslab.models.SensorDataBlock; -import io.pslab.others.CSVDataLine; -import io.pslab.others.CSVLogger; -import io.pslab.others.CustomSnackBar; -import io.pslab.others.GPSLogger; -import io.pslab.others.LocalDataLog; -import io.pslab.others.ScienceLabCommon; -import io.realm.Realm; -import io.realm.RealmObject; -import io.realm.RealmResults; -import it.beppi.knoblibrary.Knob; - -/** - * Created by Abhinav Raj on 26/5/18. - */ - -public class MultimeterActivity extends GuideActivity { - - public static final String NAME = "savingData"; - private static final int MY_PERMISSIONS_REQUEST_STORAGE_FOR_DATA = 101; - private static final CSVDataLine CSV_HEADER = - new CSVDataLine() - .add("Timestamp") - .add("DateTime") - .add("Data") - .add("Value") - .add("Latitude") - .add("Longitude"); - private final String KEY_LOG = "has_log"; - private final String DATA_BLOCK = "data_block"; - public boolean recordData = false; - public CSVLogger multimeterLogger = null; - @BindView(R.id.multimeter_toolbar) - Toolbar mToolbar; - @BindView(R.id.quantity) - TextView quantity; - @BindView(R.id.unit) - TextView unit; - @BindView(R.id.knobs) - Knob knob; - @BindView(R.id.selector) - SwitchCompat aSwitch; - @BindView(R.id.multimeter_coordinator_layout) - CoordinatorLayout coordinatorLayout; - - SharedPreferences multimeter_data; - private ScienceLab scienceLab; - private int knobState; - private CSVDataLine dataRecorded; - private String defaultValue; - private Menu menu; - private Boolean switchIsChecked; - private String[] knobMarker; - private boolean isRecordingStarted = false; - private boolean isDataRecorded = false; - private Timer recordTimer; - private boolean locationEnabled = true; - private long recordPeriod; - private double lat = 0, lon = 0; - private GPSLogger gpsLogger; - private Realm realm; - private long block; - private RealmResults recordedMultimeterData; - private MenuItem playMenu; - private MenuItem stopMenu; - private boolean isPlayingBack = false; - private boolean playClicked = false; - private Timer playBackTimer; - private int currentPosition = 0; - - public MultimeterActivity() { - super(R.layout.activity_multimeter_main); - } - - @Override - protected void onCreate(final Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - defaultValue = getString(R.string.multimeter_default_value); - ButterKnife.bind(this); - scienceLab = ScienceLabCommon.scienceLab; - knobMarker = getResources().getStringArray(io.pslab.R.array.multimeter_knob_states); - setSupportActionBar(mToolbar); - final ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setDisplayHomeAsUpEnabled(true); - } - - gpsLogger = new GPSLogger(this, (LocationManager) getSystemService(Context.LOCATION_SERVICE)); - - multimeter_data = this.getSharedPreferences(NAME, MODE_PRIVATE); - dataRecorded = CSV_HEADER; - knobState = multimeter_data.getInt("KnobState", 2); - switchIsChecked = multimeter_data.getBoolean("SwitchState", false); - aSwitch.setChecked(switchIsChecked); - - Typeface tf = Typeface.createFromAsset(getAssets(), "fonts/digital-7 (italic).ttf"); - quantity.setTypeface(tf); - - String text_quantity = multimeter_data.getString("TextBox", defaultValue); - String text_unit = multimeter_data.getString("TextBoxUnit", null); - - realm = LocalDataLog.with().getRealm(); - - if (getIntent().getExtras() != null && getIntent().getExtras().getBoolean(KEY_LOG)) { - recordedMultimeterData = LocalDataLog.with() - .getBlockOfMultimeterRecords(getIntent().getExtras().getLong(DATA_BLOCK)); - isPlayingBack = true; - } else { - knob.setState(knobState); - quantity.setText(text_quantity); - unit.setText(text_unit); - knob.setOnStateChanged(new Knob.OnStateChanged() { - @Override - public void onState(int state) { - knobState = state; - saveKnobState(knobState); - } - }); - aSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - switchIsChecked = isChecked; - SharedPreferences.Editor editor = multimeter_data.edit(); - editor.putBoolean("SwitchState", switchIsChecked); - editor.apply(); - } - }); - isPlayingBack = false; - checkConfig(); - logTimer(); - } - if (getResources().getBoolean(R.bool.isTablet)) { - setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_USER); - } - } - - @Override - protected void onResume() { - super.onResume(); - checkConfig(); - } - - private void logData() { - switch (knobState) { - case 3: // Resistor - if (scienceLab.isConnected()) { - DecimalFormat resistanceFormat = new DecimalFormat("#.##"); - Double resistance; - Double avgResistance = 0.0; - int loops = 20; - for (int i = 0; i < loops; i++) { - resistance = scienceLab.getResistance(); - if (resistance == null) { - avgResistance = null; - break; - } else { - avgResistance = avgResistance + resistance / loops; - } - } - String resistanceUnit; - String recordUnit = "Ohms"; - String Resistance = ""; - if (avgResistance == null) { - Resistance = "Infinity"; - resistanceUnit = "\u2126"; - recordUnit = "Ohms"; - } else { - if (avgResistance > 10e5) { - Resistance = resistanceFormat.format((avgResistance / 10e5)); - resistanceUnit = "M" + "\u2126"; - recordUnit = "MOhms"; - } else if (avgResistance > 10e2) { - Resistance = resistanceFormat.format((avgResistance / 10e2)); - resistanceUnit = "k" + "\u2126"; - recordUnit = "kOhms"; - } else if (avgResistance > 1) { - Resistance = resistanceFormat.format(avgResistance); - resistanceUnit = "\u2126"; - recordUnit = "Ohms"; - } else { - Resistance = "Cannot measure!"; - resistanceUnit = "Ohms"; - } - } - saveAndSetData(Resistance, resistanceUnit); - if (recordData) - record(knobMarker[knobState], Resistance + " " + recordUnit); - } - break; - case 4: //Capacitor - if (scienceLab.isConnected()) { - Double capacitance = scienceLab.getCapacitance(); - DecimalFormat capacitanceFormat = new DecimalFormat("#.##"); - String Capacitance; - String capacitanceUnit; - if (capacitance == null) { - Capacitance = "Cannot measure!"; - capacitanceUnit = "pF"; - } else { - if (capacitance < 1e-9) { - Capacitance = capacitanceFormat.format((capacitance / 1e-12)); - capacitanceUnit = "pF"; - } else if (capacitance < 1e-6) { - Capacitance = capacitanceFormat.format((capacitance / 1e-9)); - capacitanceUnit = "nF"; - } else if (capacitance < 1e-3) { - Capacitance = capacitanceFormat.format((capacitance / 1e-6)); - capacitanceUnit = "\u00B5" + "F"; - } else if (capacitance < 1e-1) { - Capacitance = capacitanceFormat.format((capacitance / 1e-3)); - capacitanceUnit = "mF"; - } else { - Capacitance = capacitanceFormat.format(capacitance); - capacitanceUnit = getString(R.string.capacitance_unit); - } - } - saveAndSetData(Capacitance, capacitanceUnit); - if (recordData) - record(knobMarker[knobState], Capacitance + " " + capacitanceUnit); - } - break; - case 5: - getIDdata(); - break; - case 6: - getIDdata(); - break; - case 7: - getIDdata(); - break; - case 8: - getIDdata(); - break; - default: - if (scienceLab.isConnected()) { - saveAndSetData(DataFormatter.formatDouble(scienceLab.getVoltage(knobMarker[knobState], 1), DataFormatter.LOW_PRECISION_FORMAT), getString(R.string.multimeter_voltage_unit)); - if (recordData) - record(knobMarker[knobState], DataFormatter.formatDouble(scienceLab.getVoltage(knobMarker[knobState], 1), DataFormatter.LOW_PRECISION_FORMAT) + " " + getString(R.string.multimeter_voltage_unit)); - } - break; - } - } - - private void logTimer() { - if (recordTimer == null) { - recordTimer = new Timer(); - } - recordTimer.schedule(new TimerTask() { - @Override - public void run() { - runOnUiThread(new Runnable() { - @Override - public void run() { - logData(); - } - }); - } - }, 0, recordPeriod); - } - - private void getIDdata() { - try { - if (!switchIsChecked) { - if (scienceLab.isConnected()) { - Double frequency = scienceLab.getFrequency(knobMarker[knobState]); - saveAndSetData(DataFormatter.formatDouble(frequency, DataFormatter.LOW_PRECISION_FORMAT), getString(R.string.frequency_unit)); - if (recordData) - record(knobMarker[knobState], DataFormatter.formatDouble(frequency, DataFormatter.LOW_PRECISION_FORMAT) + getString(R.string.frequency_unit)); - } - } else { - if (scienceLab.isConnected()) { - scienceLab.countPulses(knobMarker[knobState]); - double pulseCount = scienceLab.readPulseCount(); - saveAndSetData(DataFormatter.formatDouble(pulseCount, DataFormatter.LOW_PRECISION_FORMAT), ""); - if (recordData) - record(knobMarker[knobState], String.valueOf(pulseCount)); - } - } - } catch (Exception e) { - saveAndSetData("Cannot measure!", "null"); - if (recordData) { - record(knobMarker[knobState], "null"); - } - } - } - - private void checkConfig() { - SharedPreferences multimeterConfigs = PreferenceManager.getDefaultSharedPreferences(this); - recordPeriod = Long.valueOf(multimeterConfigs.getString(MultimeterSettingsFragment.KEY_UPDATE_PERIOD, getResources().getString(R.string.multimeter_default_1000))); - locationEnabled = multimeterConfigs.getBoolean(MultimeterSettingsFragment.KEY_INCLUDE_LOCATION, true); - } - - private void saveAndSetData(String Quantity, String Unit) { - SharedPreferences.Editor editor = multimeter_data.edit(); - editor.putString("TextBox", Quantity); - editor.putString("TextBoxUnit", Unit); - editor.apply(); - quantity.setText(Quantity); - unit.setText(Unit); - } - - private void record(String data, String value) { - if (locationEnabled && gpsLogger.isGPSEnabled()) { - Location location = gpsLogger.getDeviceLocation(); - if (location != null) { - lat = location.getLatitude(); - lon = location.getLongitude(); - } else { - lat = 0.0; - lon = 0.0; - } - } else { - lat = 0.0; - lon = 0.0; - } - long timestamp = System.currentTimeMillis(); - dataRecorded = new CSVDataLine() - .add(timestamp) - .add(CSVLogger.FILE_NAME_FORMAT.format(new Date(timestamp))) - .add(data) - .add(value) - .add(lat) - .add(lon); - multimeterLogger.writeCSVFile(dataRecorded); - recordSensorData(new MultimeterData(timestamp, block, data, value, lat, lon)); - } - - private void saveKnobState(int state) { - SharedPreferences.Editor editor = multimeter_data.edit(); - editor.putInt("KnobState", state); - editor.apply(); - } - - @Override - public boolean onCreateOptionsMenu(Menu menu) { - MenuInflater inflater = getMenuInflater(); - inflater.inflate(R.menu.multimeter_log_menu, menu); - this.menu = menu; - return true; - } - - @Override - public boolean onPrepareOptionsMenu(Menu menu) { - playMenu = menu.findItem(R.id.play_data); - stopMenu = menu.findItem(R.id.stop_data); - playMenu.setVisible(isPlayingBack); - menu.findItem(R.id.record_pause_data).setVisible(!isPlayingBack); - return super.onPrepareOptionsMenu(menu); - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case R.id.record_pause_data: - if (scienceLab.isConnected()) { - if (ContextCompat.checkSelfPermission(this, - Manifest.permission.WRITE_EXTERNAL_STORAGE) - != PackageManager.PERMISSION_GRANTED) { - ActivityCompat.requestPermissions(this, - new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, MY_PERMISSIONS_REQUEST_STORAGE_FOR_DATA); - return true; - } - if (recordData) { - item.setIcon(R.drawable.ic_record_white); - recordData = false; - if (isDataRecorded) { - MenuItem item1 = menu.findItem(R.id.record_pause_data); - item1.setIcon(R.drawable.ic_record_white); - dataRecorded = CSV_HEADER; - // Export Data - CustomSnackBar.showSnackBar(coordinatorLayout, - getString(R.string.csv_store_text) + " " + multimeterLogger.getCurrentFilePath() - , getString(R.string.open), new View.OnClickListener() { - @Override - public void onClick(View view) { - startActivity(new Intent(MultimeterActivity.this, DataLoggerActivity.class)); - } - }, Snackbar.LENGTH_SHORT); - isRecordingStarted = false; - recordData = false; - } else { - CustomSnackBar.showSnackBar(coordinatorLayout, getString(R.string.nothing_to_export), null, null, Snackbar.LENGTH_SHORT); - } - } else { - isDataRecorded = true; - item.setIcon(R.drawable.ic_record_stop_white); - if (!isRecordingStarted) { - multimeterLogger = new CSVLogger(getString(R.string.multimeter)); - multimeterLogger.prepareLogFile(); - multimeterLogger.writeMetaData(getResources().getString(R.string.multimeter)); - multimeterLogger.writeCSVFile(CSV_HEADER); - block = System.currentTimeMillis(); - recordSensorDataBlockID(new SensorDataBlock(block, getResources().getString(R.string.multimeter))); - isRecordingStarted = true; - recordData = true; - CustomSnackBar.showSnackBar(coordinatorLayout, getString(R.string.data_recording_start), null, null, Snackbar.LENGTH_SHORT); - } - } - } else { - CustomSnackBar.showSnackBar(coordinatorLayout, getString(R.string.device_not_found), null, null, Snackbar.LENGTH_SHORT); - } - break; - case R.id.settings: - Intent settingIntent = new Intent(this, SettingsActivity.class); - settingIntent.putExtra("title", getResources().getString(R.string.multimeter_configurations)); - startActivity(settingIntent); - break; - case android.R.id.home: - this.finish(); - break; - case R.id.multimeter_show_data: - Intent intent = new Intent(this, DataLoggerActivity.class); - intent.putExtra(DataLoggerActivity.CALLER_ACTIVITY, getResources().getString(R.string.multimeter)); - startActivity(intent); - break; - case R.id.show_guide: - toggleGuide(); - break; - case R.id.play_data: - if (playClicked) { - playClicked = false; - stopMenu.setVisible(true); - item.setIcon(ResourcesCompat.getDrawable(getResources(), R.drawable.ic_play_arrow_white_24dp, null)); - if (playBackTimer != null) { - playBackTimer.cancel(); - } - } else { - playClicked = true; - item.setIcon(ResourcesCompat.getDrawable(getResources(), R.drawable.ic_pause_white_24dp, null)); - stopMenu.setVisible(true); - if (playBackTimer != null) { - playBackTimer.cancel(); - } - playBackTimer = new Timer(); - final Handler handler = new Handler(); - playBackTimer.schedule(new TimerTask() { - @Override - public void run() { - handler.post(new Runnable() { - @Override - public void run() { - if (currentPosition < recordedMultimeterData.size()) { - setLoggedData(recordedMultimeterData.get(currentPosition)); - } else { - playBackTimer.cancel(); - currentPosition = 0; - stopMenu.setVisible(false); - item.setIcon(ResourcesCompat.getDrawable(getResources(), R.drawable.ic_play_arrow_white_24dp, null)); - } - } - }); - } - }, 0, recordPeriod); - } - break; - case R.id.stop_data: - stopMenu.setVisible(false); - if (playBackTimer != null) { - playBackTimer.cancel(); - playBackTimer = null; - } - currentPosition = 0; - playClicked = false; - playMenu.setIcon(ResourcesCompat.getDrawable(getResources(), R.drawable.ic_play_arrow_white_24dp, null)); - default: - break; - } - return true; - } - - private void setLoggedData(MultimeterData multimeterData) { - String data = multimeterData.getData(); - String value = multimeterData.getValue(); - knob.setEnabled(false); - knob.setState(Arrays.asList(knobMarker).indexOf(data)); - String quantityString = ""; - String unitString = ""; - try { - if (value.split(" ")[0].equals("Cannot")) { - quantityString = value.split(" ")[0] + " " + value.split(" ")[1]; - unitString = value.split(" ")[2]; - } else { - quantityString = value.split(" ")[0]; - unitString = value.split(" ")[1]; - } - } catch (Exception e) { - e.printStackTrace(); - } - unit.setText(unitString); - quantity.setText(quantityString); - currentPosition++; - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (recordTimer != null) { - recordTimer.cancel(); - recordTimer = null; - } - if (playBackTimer != null) { - playBackTimer.cancel(); - playBackTimer = null; - } - if (isRecordingStarted) { - if (multimeterLogger != null) - multimeterLogger.deleteFile(); - isRecordingStarted = false; - } - } - - public void recordSensorDataBlockID(SensorDataBlock block) { - realm.beginTransaction(); - realm.copyToRealm(block); - realm.commitTransaction(); - } - - public void recordSensorData(RealmObject sensorData) { - realm.beginTransaction(); - realm.copyToRealm((MultimeterData) sensorData); - realm.commitTransaction(); - } -} diff --git a/app/src/main/java/io/pslab/activity/OscilloscopeActivity.java b/app/src/main/java/io/pslab/activity/OscilloscopeActivity.java deleted file mode 100644 index 04a998616..000000000 --- a/app/src/main/java/io/pslab/activity/OscilloscopeActivity.java +++ /dev/null @@ -1,1376 +0,0 @@ -package io.pslab.activity; - - -import static io.pslab.others.AudioJack.SAMPLING_RATE; -import static io.pslab.others.MathUtils.map; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.content.Intent; -import android.graphics.Color; -import android.graphics.Point; -import android.location.Location; -import android.location.LocationManager; -import android.os.AsyncTask; -import android.os.Build; -import android.os.Bundle; -import android.os.Handler; -import android.view.Display; -import android.view.Menu; -import android.view.MenuItem; -import android.view.View; -import android.view.Window; -import android.view.WindowManager; -import android.widget.FrameLayout; -import android.widget.ImageButton; -import android.widget.LinearLayout; -import android.widget.RelativeLayout; -import android.widget.TextView; -import android.widget.Toast; - -import androidx.annotation.IdRes; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.appcompat.app.ActionBar; -import androidx.appcompat.widget.Toolbar; -import androidx.fragment.app.Fragment; -import androidx.recyclerview.widget.DefaultItemAnimator; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.github.mikephil.charting.charts.LineChart; -import com.github.mikephil.charting.components.Legend; -import com.github.mikephil.charting.components.XAxis; -import com.github.mikephil.charting.components.YAxis; -import com.github.mikephil.charting.data.Entry; -import com.github.mikephil.charting.data.LineData; -import com.github.mikephil.charting.data.LineDataSet; -import com.github.mikephil.charting.interfaces.datasets.ILineDataSet; -import com.google.android.material.snackbar.Snackbar; - -import org.apache.commons.lang3.StringUtils; -import org.apache.commons.math3.complex.Complex; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Objects; -import java.util.Timer; -import java.util.TimerTask; - -import butterknife.BindView; -import butterknife.ButterKnife; -import io.pslab.R; -import io.pslab.activity.guide.GuideActivity; -import io.pslab.adapters.OscilloscopeMeasurementsAdapter; -import io.pslab.communication.AnalyticsClass; -import io.pslab.communication.ScienceLab; -import io.pslab.fragment.ChannelParametersFragment; -import io.pslab.fragment.DataAnalysisFragment; -import io.pslab.fragment.OscilloscopePlaybackFragment; -import io.pslab.fragment.TimebaseTriggerFragment; -import io.pslab.fragment.XYPlotFragment; -import io.pslab.models.OscilloscopeData; -import io.pslab.models.SensorDataBlock; -import io.pslab.others.AudioJack; -import io.pslab.others.CSVDataLine; -import io.pslab.others.CSVLogger; -import io.pslab.others.CustomSnackBar; -import io.pslab.others.GPSLogger; -import io.pslab.others.LocalDataLog; -import io.pslab.others.OscilloscopeMeasurements; -import io.pslab.others.Plot2D; -import io.pslab.others.ScienceLabCommon; -import io.realm.Realm; -import io.realm.RealmObject; -import io.realm.RealmResults; - -public class OscilloscopeActivity extends GuideActivity implements View.OnClickListener { - - private static final CSVDataLine CSV_HEADER = new CSVDataLine() - .add("Timestamp") - .add("DateTime") - .add("Mode") - .add("Channel") - .add("xData") - .add("yData") - .add("Timebase") - .add("lat") - .add("lon"); - private final Object lock = new Object(); - @BindView(R.id.chart_os) - public LineChart mChart; - @BindView(R.id.tv_label_left_yaxis_os) - public TextView leftYAxisLabel; - @BindView(R.id.tv_unit_left_yaxis_os) - public TextView leftYAxisLabelUnit; - @BindView(R.id.tv_label_right_yaxis_os) - public TextView rightYAxisLabel; - @BindView(R.id.tv_unit_right_yaxis_os) - public TextView rightYAxisLabelUnit; - @BindView(R.id.tv_graph_label_xaxis_os) - public TextView xAxisLabel; - @BindView(R.id.tv_unit_xaxis_os) - public TextView xAxisLabelUnit; - public int samples; - public double timeGap; - public double timebase; - public double maxTimebase = 102.4f; - public double xAxisScale = 875f; - public double yAxisScale = 16f; - public boolean isCH1Selected; - public boolean isCH2Selected; - public boolean isCH3Selected; - public boolean isMICSelected; - public static boolean isInBuiltMicSelected; - public boolean isAudioInputSelected; - public boolean isTriggerSelected; - public boolean isTriggered; - public boolean isFourierTransformSelected; - public boolean isXYPlotSelected; - private boolean isDataAnalysisFragSelected; - public boolean sineFit; - public boolean squareFit; - public boolean isCH1FrequencyRequired; - public boolean isCH2FrequencyRequired; - public String triggerChannel; - public String triggerMode; - public String curveFittingChannel1; - public String curveFittingChannel2; - public String xyPlotXAxisChannel; - public String xyPlotYAxisChannel; - public HashMap xOffsets; - public HashMap yOffsets; - public double trigger; - public Plot2D graph; - @BindView(R.id.layout_dock_os1) - LinearLayout linearLayout; - @BindView(R.id.layout_dock_os2) - FrameLayout frameLayout; - @BindView(R.id.layout_chart_os) - RelativeLayout mChartLayout; - @BindView(R.id.button_channel_parameters_os) - ImageButton channelParametersButton; - @BindView(R.id.button_timebase_os) - ImageButton timebaseButton; - @BindView(R.id.button_data_analysis_os) - ImageButton dataAnalysisButton; - @BindView(R.id.button_xy_plot_os) - ImageButton xyPlotButton; - @BindView(R.id.tv_channel_parameters_os) - TextView channelParametersTextView; - @BindView(R.id.tv_timebase_tigger_os) - TextView timebaseTiggerTextView; - @BindView(R.id.tv_data_analysis_os) - TextView dataAnalysisTextView; - @BindView(R.id.tv_xy_plot_os) - TextView xyPlotTextView; - @BindView(R.id.parent_layout) - View parentLayout; - @BindView(R.id.recyclerView) - RecyclerView measurementsList; - private Fragment channelParametersFragment; - private Fragment timebaseTriggerFragment; - private Fragment dataAnalysisFragment; - private Fragment xyPlotFragment; - private Fragment playbackFragment; - private ScienceLab scienceLab; - private int height; - private int width; - private XAxis x1; - private YAxis y1; - private YAxis y2; - private XYPlotTask xyPlotTask; - private AudioJack audioJack = null; - private AnalyticsClass analyticsClass; - private CaptureTask captureTask; - private Thread monitorThread; - private volatile boolean monitor = true; - private double maxAmp, maxFreq; - private boolean isRecording = false; - private boolean isRunning = true; - private boolean isMeasurementsChecked = false; - private Realm realm; - public RealmResults recordedOscilloscopeData; - private CSVLogger csvLogger; - private GPSLogger gpsLogger; - private long block; - private Timer recordTimer; - private final long recordPeriod = 100; - private String loggingXdata = ""; - private final String KEY_LOG = "has_log"; - private final String DATA_BLOCK = "data_block"; - private int currentPosition = 0; - private Timer playbackTimer; - private View mainLayout; - private double lat; - private double lon; - public boolean isPlaybackFourierChecked = false; - private HashMap channelIndexMap; - public static final Integer[] channelColors = {Color.CYAN, Color.GREEN, Color.WHITE, Color.MAGENTA}; - private final String[] loggingYdata = new String[4]; - public String xyPlotAxis1 = "CH1"; - public String xyPlotAxis2 = "CH2"; - private boolean isPlayingback = false; - private boolean isPlaying = false; - private MenuItem playMenu; - private ArrayList> dataEntries = new ArrayList<>(); - private String[] dataParamsChannels; - - public enum CHANNEL {CH1, CH2, CH3, MIC} - - private enum MODE {RISING, FALLING, DUAL} - - public enum ChannelMeasurements {FREQUENCY, PERIOD, AMPLITUDE, POSITIVE_PEAK, NEGATIVE_PEAK} - - public OscilloscopeActivity() { - super(R.layout.activity_oscilloscope); - } - - @SuppressLint("ClickableViewAccessibility") - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - requestWindowFeature(Window.FEATURE_NO_TITLE); - super.onCreate(savedInstanceState); - final int flags = View.SYSTEM_UI_FLAG_LAYOUT_STABLE - | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION - | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN - | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION - | View.SYSTEM_UI_FLAG_FULLSCREEN - | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY; - getWindow().getDecorView().setSystemUiVisibility(flags); - final View decorView = getWindow().getDecorView(); - decorView.setOnSystemUiVisibilityChangeListener(new View.OnSystemUiVisibilityChangeListener() { - @Override - public void onSystemUiVisibilityChange(int i) { - if ((i & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) { - decorView.setSystemUiVisibility(flags); - } - } - }); - ButterKnife.bind(this); - - removeStatusBar(); - mainLayout = findViewById(R.id.oscilloscope_mail_layout); - - Toolbar toolbar = findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - final ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setTitle(R.string.oscilloscope); - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setDisplayShowHomeEnabled(true); - } - - channelIndexMap = new HashMap<>(); - channelIndexMap.put(CHANNEL.CH1.toString(), 1); - channelIndexMap.put(CHANNEL.CH2.toString(), 2); - channelIndexMap.put(CHANNEL.CH3.toString(), 3); - channelIndexMap.put(CHANNEL.MIC.toString(), 4); - - realm = LocalDataLog.with().getRealm(); - gpsLogger = new GPSLogger(this, - (LocationManager) getSystemService(Context.LOCATION_SERVICE)); - csvLogger = new CSVLogger(getString(R.string.oscilloscope)); - - scienceLab = ScienceLabCommon.scienceLab; - x1 = mChart.getXAxis(); - y1 = mChart.getAxisLeft(); - y2 = mChart.getAxisRight(); - triggerChannel = CHANNEL.CH1.toString(); - trigger = 0; - timebase = 875; - samples = 512; - timeGap = 2; - - xOffsets = new HashMap<>(); - xOffsets.put(CHANNEL.CH1.toString(), 0.0); - xOffsets.put(CHANNEL.CH2.toString(), 0.0); - xOffsets.put(CHANNEL.CH3.toString(), 0.0); - xOffsets.put(CHANNEL.MIC.toString(), 0.0); - yOffsets = new HashMap<>(); - yOffsets.put(CHANNEL.CH1.toString(), 0.0); - yOffsets.put(CHANNEL.CH2.toString(), 0.0); - yOffsets.put(CHANNEL.CH3.toString(), 0.0); - yOffsets.put(CHANNEL.MIC.toString(), 0.0); - - sineFit = true; - squareFit = false; - isDataAnalysisFragSelected = false; - graph = new Plot2D(this, new float[]{}, new float[]{}, 1); - curveFittingChannel1 = "None"; - curveFittingChannel2 = "None"; - xyPlotXAxisChannel = CHANNEL.CH1.toString(); - xyPlotYAxisChannel = CHANNEL.CH2.toString(); - analyticsClass = new AnalyticsClass(); - isCH1FrequencyRequired = false; - isCH2FrequencyRequired = false; - - Display display = getWindowManager().getDefaultDisplay(); - Point size = new Point(); - display.getSize(size); - width = size.x; - height = size.y; - - onWindowFocusChanged(); - - channelParametersFragment = new ChannelParametersFragment(); - timebaseTriggerFragment = new TimebaseTriggerFragment(); - dataAnalysisFragment = new DataAnalysisFragment(); - xyPlotFragment = new XYPlotFragment(); - playbackFragment = new OscilloscopePlaybackFragment(); - - if (findViewById(R.id.layout_dock_os2) != null) { - addFragment(R.id.layout_dock_os2, channelParametersFragment); - } - - channelParametersButton.setOnClickListener(this); - timebaseButton.setOnClickListener(this); - dataAnalysisButton.setOnClickListener(this); - xyPlotButton.setOnClickListener(this); - channelParametersTextView.setOnClickListener(this); - timebaseTiggerTextView.setOnClickListener(this); - dataAnalysisTextView.setOnClickListener(this); - xyPlotTextView.setOnClickListener(this); - - measurementsList = findViewById(R.id.recyclerView); - - chartInit(); - - final Runnable runnable = new Runnable() { - - private final List channels = new ArrayList<>(); - - @Override - public void run() { - //Thread to check which checkbox is enabled - while (monitor) { - if (isRunning) { - if (isInBuiltMicSelected && audioJack == null) { - audioJack = new AudioJack("input"); - } - - channels.clear(); - - if (scienceLab.isConnected() && isXYPlotSelected) { - xyPlotTask = new XYPlotTask(); - xyPlotTask.execute(xyPlotAxis1, xyPlotAxis2); - synchronized (lock) { - try { - lock.wait(); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - } else { - if (scienceLab.isConnected()) { - if (isCH1Selected) { - channels.add(CHANNEL.CH1.toString()); - } - if (isCH2Selected) { - channels.add(CHANNEL.CH2.toString()); - } - if (isCH3Selected) { - channels.add(CHANNEL.CH3.toString()); - } - } - if (isAudioInputSelected && isInBuiltMicSelected || (scienceLab.isConnected() && isMICSelected)) { - channels.add(CHANNEL.MIC.toString()); - } - captureTask = new CaptureTask(); - captureTask.execute(channels.toArray(new String[0])); - synchronized (lock) { - try { - lock.wait(); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - } - - if ((!isInBuiltMicSelected) && audioJack != null) { - audioJack.release(); - audioJack = null; - } - - if (!(((isCH1Selected || isCH2Selected || isCH3Selected || isMICSelected) && scienceLab.isConnected()) || isInBuiltMicSelected) && !mChart.isEmpty()) { - mChart.post(() -> mChart.clearValues()); - } - } - } - } - }; - monitorThread = new Thread(runnable); - monitorThread.start(); - - if (getIntent().getExtras() != null && getIntent().getExtras().getBoolean(KEY_LOG)) { - recordedOscilloscopeData = LocalDataLog.with() - .getBlockOfOscilloscopeRecords(getIntent().getExtras().getLong(DATA_BLOCK)); - isPlayingback = true; - setLayoutForPlayback(); - } - } - - @SuppressLint("NewApi") - @Override - public void onWindowFocusChanged(boolean hasFocus) { - super.onWindowFocusChanged(hasFocus); - if (hasFocus) { - getWindow().getDecorView().setSystemUiVisibility( - View.SYSTEM_UI_FLAG_LAYOUT_STABLE - | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION - | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN - | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION - | View.SYSTEM_UI_FLAG_FULLSCREEN - | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY); - } - } - - @Override - public boolean onCreateOptionsMenu(Menu menu) { - getMenuInflater().inflate(R.menu.activity_landscape_menu, menu); - return true; - } - - @Override - public boolean onPrepareOptionsMenu(Menu menu) { - playMenu = menu.findItem(R.id.play_data); - menu.findItem(R.id.record_pause_data).setVisible(!isPlayingback); - menu.findItem(R.id.play_data).setVisible(isPlayingback); - return super.onPrepareOptionsMenu(menu); - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case android.R.id.home: - finish(); - break; - case R.id.run_stop: - if (isRunning) { - isRunning = false; - item.setTitle(R.string.control_run); - } else { - isRunning = true; - item.setTitle(R.string.control_stop); - } - break; - case R.id.record_pause_data: - if (isRecording) { - isRecording = false; - item.setIcon(R.drawable.ic_record_white); - CustomSnackBar.showSnackBar(mainLayout, - getString(R.string.csv_store_text) + " " + csvLogger.getCurrentFilePath() - , getString(R.string.open), new View.OnClickListener() { - @Override - public void onClick(View view) { - Intent intent = new Intent(OscilloscopeActivity.this, DataLoggerActivity.class); - intent.putExtra(DataLoggerActivity.CALLER_ACTIVITY, getResources().getString(R.string.oscilloscope)); - startActivity(intent); - } - }, Snackbar.LENGTH_SHORT); - } else if (!isRecording && !scienceLab.isConnected()) { - CustomSnackBar.showSnackBar(mainLayout, getString(R.string.device_not_connected), null, null, Snackbar.LENGTH_SHORT); - - } else { - isRecording = true; - item.setIcon(R.drawable.ic_record_stop_white); - block = System.currentTimeMillis(); - if (gpsLogger.isGPSEnabled()) { - Location location = gpsLogger.getDeviceLocation(); - if (location != null) { - lat = location.getLatitude(); - lon = location.getLongitude(); - } else { - lat = 0.0; - lon = 0.0; - } - } else { - lat = 0.0; - lon = 0.0; - } - csvLogger = new CSVLogger(getResources().getString(R.string.oscilloscope)); - csvLogger.prepareLogFile(); - csvLogger.writeMetaData(getResources().getString(R.string.oscilloscope)); - csvLogger.writeCSVFile(CSV_HEADER); - recordSensorDataBlockID(new SensorDataBlock(block, getResources().getString(R.string.oscilloscope))); - CustomSnackBar.showSnackBar(mainLayout, getString(R.string.data_recording_start), null, null, Snackbar.LENGTH_SHORT); - } - break; - case R.id.show_guide: - toggleGuide(); - break; - case R.id.show_logged_data: - Intent intent = new Intent(OscilloscopeActivity.this, DataLoggerActivity.class); - intent.putExtra(DataLoggerActivity.CALLER_ACTIVITY, getResources().getString(R.string.oscilloscope)); - startActivity(intent); - break; - case R.id.play_data: - if (isPlaying) { - isPlaying = false; - item.setIcon(R.drawable.ic_play_arrow_white_24dp); - pauseData(); - } else { - isPlaying = true; - item.setIcon(R.drawable.ic_pause_white_24dp); - playRecordedData(); - } - break; - case R.id.auto_scale: - if (((isCH1Selected || isCH2Selected || isCH3Selected || isMICSelected) && scienceLab.isConnected()) || isInBuiltMicSelected) { - autoScale(); - } - break; - case R.id.measurements: - if (!isMeasurementsChecked) { - isMeasurementsChecked = true; - item.setChecked(true); - measurementsList.setVisibility(View.VISIBLE); - } else { - isMeasurementsChecked = false; - item.setChecked(false); - measurementsList.setVisibility(View.INVISIBLE); - } - default: - break; - } - return true; - } - - private void setLayoutForPlayback() { - findViewById(R.id.layout_dock_os1).setVisibility(View.GONE); - RelativeLayout.LayoutParams lineChartParams = (RelativeLayout.LayoutParams) mChartLayout.getLayoutParams(); - RelativeLayout.LayoutParams frameLayoutParams = (RelativeLayout.LayoutParams) frameLayout.getLayoutParams(); - lineChartParams.height = height * 3 / 4; - lineChartParams.width = RelativeLayout.LayoutParams.MATCH_PARENT; - mChartLayout.setLayoutParams(lineChartParams); - frameLayoutParams.height = height / 4; - frameLayoutParams.width = RelativeLayout.LayoutParams.MATCH_PARENT; - frameLayout.setLayoutParams(frameLayoutParams); - replaceFragment(R.id.layout_dock_os2, playbackFragment, "Playback Fragment"); - } - - public void playRecordedData() { - final Handler handler = new Handler(); - if (playbackTimer == null) { - playbackTimer = new Timer(); - } - playbackTimer.schedule(new TimerTask() { - @Override - public void run() { - handler.post(new Runnable() { - @Override - public void run() { - try { - if (currentPosition < recordedOscilloscopeData.size()) { - OscilloscopeData data = recordedOscilloscopeData.get(currentPosition); - int mode = data.getMode(); - List dataSets = new ArrayList<>(); - ArrayList> entries = new ArrayList<>(); - for (int i = 0; i < mode; i++) { - data = recordedOscilloscopeData.get(currentPosition); - entries.add(new ArrayList<>()); - String[] xData = data.getDataX().split(" "); - String[] yData = data.getDataY().split(" "); - if (!isPlaybackFourierChecked) { - int n = Math.min(xData.length, yData.length); - for (int j = 0; j < n; j++) { - if (xData[j].length() > 0 && yData[j].length() > 0) { - entries.get(i).add(new Entry(Float.valueOf(xData[j]), Float.valueOf(yData[j]))); - } - } - setLeftYAxisScale(16f, -16f); - setRightYAxisScale(16f, -16f); - setXAxisScale(data.getTimebase()); - } else { - Complex[] yComplex = new Complex[yData.length]; - for (int j = 0; j < yData.length; j++) { - yComplex[j] = Complex.valueOf(Double.valueOf(yData[j])); - } - Complex[] fftOut = fft(yComplex); - int n = fftOut.length; - double mA = 0; - double factor = samples * timeGap * 1e-3; - double mF = (n / 2 - 1) / factor; - for (int j = 0; j < n / 2; j++) { - float y = (float) fftOut[j].abs() / samples; - if (y > mA) { - mA = y; - } - entries.get(i).add(new Entry((float) (j / factor), y)); - } - setLeftYAxisScale(mA, 0); - setRightYAxisScale(mA, 0); - setXAxisScale(mF); - } - currentPosition++; - LineDataSet dataSet; - dataSet = new LineDataSet(entries.get(i), data.getChannel()); - dataSet.setDrawCircles(false); - dataSet.setColor(channelColors[i]); - dataSets.add(dataSet); - ((OscilloscopePlaybackFragment) playbackFragment).setTimeBase(String.valueOf(data.getTimebase())); - } - LineData lineData = new LineData(dataSets); - mChart.setData(lineData); - mChart.notifyDataSetChanged(); - mChart.invalidate(); - } else { - playbackTimer.cancel(); - playbackTimer = null; - playMenu.setIcon(R.drawable.ic_play_arrow_white_24dp); - currentPosition = 0; - } - } catch (Exception e) { - if (playbackTimer != null) { - playbackTimer.cancel(); - playbackTimer = null; - } - playMenu.setIcon(R.drawable.ic_play_arrow_white_24dp); - currentPosition = 0; - } - } - }); - - } - }, 0, recordPeriod); - } - - public void pauseData() { - if (playbackTimer != null) { - playbackTimer.cancel(); - playbackTimer = null; - } - } - - private void logChannelData(String[] channels) { - long timestamp = System.currentTimeMillis(); - int noOfChannels = channels.length; - String dateTime = CSVLogger.FILE_NAME_FORMAT.format(new Date(timestamp)); - for (int i = 0; i < noOfChannels; i++) { - recordSensorData(new OscilloscopeData(timestamp + i, block, noOfChannels, channels[i], loggingXdata, loggingYdata[i], xAxisScale, lat, lon)); - csvLogger.writeCSVFile( - new CSVDataLine() - .add(timestamp) - .add(dateTime) - .add(noOfChannels) - .add(channels[i]) - .add(loggingXdata) - .add(loggingYdata[i]) - .add(xAxisScale) - .add(lat) - .add(lon) - ); - } - } - - @Override - protected void onResume() { - super.onResume(); - removeStatusBar(); - } - - private void removeStatusBar() { - if (Build.VERSION.SDK_INT < 16) { - getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, - WindowManager.LayoutParams.FLAG_FULLSCREEN); - } else { - View decorView = getWindow().getDecorView(); - - decorView.setSystemUiVisibility((View.SYSTEM_UI_FLAG_LAYOUT_STABLE - | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION - | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN - | View.SYSTEM_UI_FLAG_FULLSCREEN - | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION - | View.SYSTEM_UI_FLAG_FULLSCREEN - | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY)); - } - } - - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.button_channel_parameters_os: - case R.id.tv_channel_parameters_os: - replaceFragment(R.id.layout_dock_os2, channelParametersFragment, "ChannelParametersFragment"); - clearTextBackgroundColor(); - channelParametersTextView.setBackgroundColor(getResources().getColor(R.color.colorPrimaryDark)); - isDataAnalysisFragSelected = false; - break; - - case R.id.button_timebase_os: - case R.id.tv_timebase_tigger_os: - replaceFragment(R.id.layout_dock_os2, timebaseTriggerFragment, "TimebaseTiggerFragment"); - clearTextBackgroundColor(); - timebaseTiggerTextView.setBackgroundColor(getResources().getColor(R.color.colorPrimaryDark)); - isDataAnalysisFragSelected = false; - break; - - case R.id.button_data_analysis_os: - case R.id.tv_data_analysis_os: - replaceFragment(R.id.layout_dock_os2, dataAnalysisFragment, "DataAnalysisFragment"); - clearTextBackgroundColor(); - dataAnalysisTextView.setBackgroundColor(getResources().getColor(R.color.colorPrimaryDark)); - isDataAnalysisFragSelected = true; - break; - - case R.id.button_xy_plot_os: - case R.id.tv_xy_plot_os: - replaceFragment(R.id.layout_dock_os2, xyPlotFragment, "XYPlotFragment"); - clearTextBackgroundColor(); - xyPlotTextView.setBackgroundColor(getResources().getColor(R.color.colorPrimaryDark)); - isDataAnalysisFragSelected = false; - break; - - default: - break; - } - } - - @SuppressLint("ResourceType") - private void clearTextBackgroundColor() { - channelParametersTextView.setBackgroundColor(getResources().getColor(R.color.customBorderFill)); - timebaseTiggerTextView.setBackgroundColor(getResources().getColor(R.color.customBorderFill)); - dataAnalysisTextView.setBackgroundColor(getResources().getColor(R.color.customBorderFill)); - xyPlotTextView.setBackgroundColor(getResources().getColor(R.color.customBorderFill)); - } - - public void onWindowFocusChanged() { - RelativeLayout.LayoutParams lineChartParams = (RelativeLayout.LayoutParams) mChartLayout.getLayoutParams(); - RelativeLayout.LayoutParams frameLayoutParams = (RelativeLayout.LayoutParams) frameLayout.getLayoutParams(); - if (getResources().getBoolean(R.bool.isTablet)) { - lineChartParams.height = height * 3 / 4; - lineChartParams.width = width * 9 / 10; - mChartLayout.setLayoutParams(lineChartParams); - frameLayoutParams.height = height / 4; - frameLayoutParams.width = width * 9 / 10; - frameLayout.setLayoutParams(frameLayoutParams); - } else { - lineChartParams.height = height * 3 / 5; - lineChartParams.width = width * 7 / 8; - mChartLayout.setLayoutParams(lineChartParams); - frameLayoutParams.height = height * 2 / 5; - frameLayoutParams.width = width * 7 / 8; - frameLayout.setLayoutParams(frameLayoutParams); - } - } - - protected void addFragment(@IdRes int containerViewId, - @NonNull Fragment fragment) { - getSupportFragmentManager().beginTransaction() - .add(containerViewId, fragment, "ChannelParametersFragment").commit(); - } - - protected void replaceFragment(@IdRes int containerViewId, - @NonNull Fragment fragment, - @NonNull String fragmentTag) { - getSupportFragmentManager().beginTransaction() - .replace(containerViewId, fragment, fragmentTag).commit(); - } - - @Override - public void onBackPressed() { - finish(); - } - - @Override - protected void onDestroy() { - monitor = false; - if (captureTask != null) { - captureTask.cancel(true); - } - if (recordTimer != null) { - recordTimer.cancel(); - recordTimer = null; - } - if (audioJack != null) { - audioJack.release(); - audioJack = null; - } - super.onDestroy(); - } - - public void chartInit() { - mChart.setTouchEnabled(true); - mChart.setHighlightPerDragEnabled(true); - mChart.setDragEnabled(true); - mChart.setScaleEnabled(true); - mChart.setDrawGridBackground(false); - mChart.setPinchZoom(true); - mChart.setScaleYEnabled(false); - mChart.setBackgroundColor(Color.BLACK); - mChart.getDescription().setEnabled(false); - - LineData data = new LineData(); - data.setValueTextColor(Color.WHITE); - mChart.setData(data); - - Legend l = mChart.getLegend(); - l.setForm(Legend.LegendForm.LINE); - l.setTextColor(Color.WHITE); - - x1.setTextColor(Color.WHITE); - x1.setDrawGridLines(true); - x1.setAvoidFirstLastClipping(true); - x1.setAxisMinimum(0f); - x1.setAxisMaximum(875f); - - y1.setTextColor(Color.WHITE); - y1.setAxisMaximum(16f); - y1.setAxisMinimum(-16f); - y1.setDrawGridLines(true); - - y2.setAxisMaximum(16f); - y2.setAxisMinimum(-16f); - y2.setTextColor(Color.WHITE); - y2.setEnabled(true); - } - - public void setXAxisScale(double timebase) { - x1.setAxisMinimum(0); - x1.setAxisMaximum((float) timebase); - if (timebase == 875f) - xAxisLabelUnit.setText("(μs)"); - else - xAxisLabelUnit.setText("(ms)"); - - this.timebase = timebase; - mChart.fitScreen(); - mChart.invalidate(); - } - - public void setLeftYAxisScale(double upperLimit, double lowerLimit) { - y1.setAxisMaximum((float) upperLimit); - y1.setAxisMinimum((float) lowerLimit); - if (upperLimit == 500f) - leftYAxisLabelUnit.setText("(mV)"); - else - leftYAxisLabelUnit.setText("(V)"); - mChart.fitScreen(); - mChart.invalidate(); - } - - public void setRightYAxisScale(double upperLimit, double lowerLimit) { - y2.setAxisMaximum((float) upperLimit); - y2.setAxisMinimum((float) lowerLimit); - if (upperLimit == 500f) - rightYAxisLabelUnit.setText("(mV)"); - else - rightYAxisLabelUnit.setText("(V)"); - mChart.fitScreen(); - mChart.invalidate(); - } - - public void setLeftYAxisLabel(String leftYAxisInput) { - leftYAxisLabel.setText(leftYAxisInput); - } - - public void setXAxisLabel(String xAxisInput) { - xAxisLabel.setText(xAxisInput); - } - - public class CaptureTask extends AsyncTask { - private final ArrayList> entries = new ArrayList<>(); - private final ArrayList> curveFitEntries = new ArrayList<>(); - private Integer noOfChannels; - private String[] paramsChannels; - private String channel; - - @Override - protected Void doInBackground(String... channels) { - paramsChannels = channels; - noOfChannels = channels.length; - if (isInBuiltMicSelected) { - noOfChannels--; - } - try { - double[] xData; - double[] yData; - double xValue; - ArrayList yDataString = new ArrayList<>(); - String[] xDataString = null; - maxAmp = 0; - scienceLab.captureTraces(4, samples, timeGap, channel, false, null); - Thread.sleep((long) (samples * timeGap * 1e-3)); - for (int i = 0; i < noOfChannels; i++) { - entries.add(new ArrayList<>()); - channel = channels[i]; - isTriggered = false; - HashMap data; - data = scienceLab.fetchTrace(channelIndexMap.get(channel)); - xData = data.get("x"); - yData = data.get("y"); - xValue = xData[0]; - int n = Math.min(xData.length, yData.length); - xDataString = new String[n]; - yDataString.add(new String[n]); - Complex[] fftOut = null; - if (isFourierTransformSelected) { - Complex[] yComplex = new Complex[yData.length]; - for (int j = 0; j < yData.length; j++) { - yComplex[j] = Complex.valueOf(yData[j]); - } - fftOut = fft(yComplex); - } - double factor = samples * timeGap * 1e-3; - maxFreq = (n / 2 - 1) / factor; - double mA = 0; - double prevY = yData[0]; - boolean increasing = false; - for (int j = 0; j < n; j++) { - double currY = yData[j]; - xData[j] = xData[j] / ((timebase == 875) ? 1 : 1000); - if (!isFourierTransformSelected) { - if (isTriggerSelected && triggerChannel.equals(channel)) { - if (currY > prevY) { - increasing = true; - } else if (currY < prevY && increasing) { - increasing = false; - } - if (isTriggered) { - double k = xValue / ((timebase == 875) ? 1 : 1000); - entries.get(i).add(new Entry((float) k, (float) yData[j])); - xValue += timeGap; - } - if (Objects.equals(triggerMode, MODE.RISING.toString()) && prevY < trigger && currY >= trigger && increasing) { - isTriggered = true; - } else if (Objects.equals(triggerMode, MODE.FALLING.toString()) && prevY > trigger && currY <= trigger && !increasing) { - isTriggered = true; - } else if (Objects.equals(triggerMode, MODE.DUAL.toString()) && ((prevY < trigger && currY >= trigger && increasing) || (prevY > trigger && currY <= trigger && !increasing))) { - isTriggered = true; - } - prevY = currY; - } else { - entries.get(i).add(new Entry((float) xData[j], (float) yData[j])); - } - } else { - if (j < n / 2) { - float y = (float) fftOut[j].abs() / samples; - if (y > mA) { - mA = y; - } - entries.get(i).add(new Entry((float) (j / factor), y)); - } - } - xDataString[j] = String.valueOf(xData[j]); - yDataString.get(i)[j] = String.valueOf(yData[j]); - } - if (sineFit && isDataAnalysisFragSelected && channel.equals(curveFittingChannel1)) { - if (curveFitEntries.size() == 0 || curveFitEntries.get(curveFitEntries.size() - 1) == null) { - curveFitEntries.add(new ArrayList<>()); - } - double[] sinFit = analyticsClass.sineFit(xData, yData); - double amp = sinFit[0]; - double freq = sinFit[1]; - double offset = sinFit[2]; - double phase = sinFit[3]; - - freq = freq / 1e6; - double max = xData[xData.length - 1]; - for (int j = 0; j < 500; j++) { - double x = j * max / 500; - double y = offset + amp * Math.sin(Math.abs(freq * (2 * Math.PI)) * x + phase * Math.PI / 180); - curveFitEntries.get(curveFitEntries.size() - 1).add(new Entry((float) x, (float) y)); - } - } - - if (squareFit && isDataAnalysisFragSelected && channel.equals(curveFittingChannel1)) { - if (curveFitEntries.size() == 0 || curveFitEntries.get(curveFitEntries.size() - 1) == null) { - curveFitEntries.add(new ArrayList<>()); - } - double[] sqFit = analyticsClass.squareFit(xData, yData); - double amp = sqFit[0]; - double freq = sqFit[1]; - double phase = sqFit[2]; - double dc = sqFit[3]; - double offset = sqFit[4]; - - freq = freq / 1e6; - double max = xData[xData.length - 1]; - for (int j = 0; j < 500; j++) { - double x = j * max / 500; - double t = 2 * Math.PI * freq * (x - phase); - double y; - if (t % (2 * Math.PI) < 2 * Math.PI * dc) { - y = offset + amp; - } else { - y = offset - 2 * amp; - } - curveFitEntries.get(curveFitEntries.size() - 1).add(new Entry((float) x, (float) y)); - } - } - if (mA > maxAmp) { - maxAmp = mA; - } - } - - - if (isInBuiltMicSelected) { - noOfChannels++; - isTriggered = false; - entries.add(new ArrayList<>()); - if (audioJack == null) { - audioJack = new AudioJack("input"); - } - short[] buffer = audioJack.read(); - yDataString.add(new String[buffer.length]); - - int n = buffer.length; - Complex[] fftOut = null; - if (isFourierTransformSelected) { - Complex[] yComplex = new Complex[n]; - for (int j = 0; j < n; j++) { - float audioValue = (float) map(buffer[j], -32768, 32767, -3, 3); - yComplex[j] = Complex.valueOf(audioValue); - } - fftOut = fft(yComplex); - } - double factor = buffer.length * timeGap * 1e-3; - maxFreq = (n / 2 - 1) / factor; - double mA = 0; - if (xDataString == null) { - xDataString = new String[n]; - } - float prevY = (float) map(buffer[0], -32768, 32767, -3, 3); - boolean increasing = false; - double xDataPoint = 0; - for (int i = 0; i < n; i++) { - float j = (float) (((double) i / SAMPLING_RATE) * 1000000.0); - j = j / ((timebase == 875) ? 1 : 1000); - float audioValue = (float) map(buffer[i], -32768, 32767, -3, 3); - float currY = audioValue; - if (!isFourierTransformSelected) { - if (noOfChannels == 1) { - xDataString[i] = String.valueOf(j); - } - if (isTriggerSelected && triggerChannel.equals(CHANNEL.MIC.toString())) { - if (currY > prevY) { - increasing = true; - } else if (currY < prevY) { - increasing = false; - } - if (Objects.equals(triggerMode, MODE.RISING.toString()) && prevY < trigger && currY >= trigger && increasing) { - isTriggered = true; - } else if (Objects.equals(triggerMode, MODE.FALLING.toString()) && prevY > trigger && currY <= trigger && !increasing) { - isTriggered = true; - } else if (Objects.equals(triggerMode, MODE.DUAL.toString()) && ((prevY < trigger && currY >= trigger && increasing) || (prevY > trigger && currY <= trigger && !increasing))) { - isTriggered = true; - } - if (isTriggered) { - float k = (float) ((xDataPoint / SAMPLING_RATE) * 1000000.0); - k = k / ((timebase == 875) ? 1 : 1000); - entries.get(entries.size() - 1).add(new Entry(k, audioValue)); - xDataPoint++; - } - prevY = currY; - } else { - entries.get(entries.size() - 1).add(new Entry(j, audioValue)); - } - } else { - if (i < n / 2) { - float y = (float) fftOut[i].abs() / samples; - if (y > mA) { - mA = y; - } - entries.get(entries.size() - 1).add(new Entry((float) (i / factor), y)); - } - } - yDataString.get(yDataString.size() - 1)[i] = String.valueOf(audioValue); - } - if (mA > maxAmp) { - maxAmp = mA; - } - - } - if (isRecording) { - loggingXdata = StringUtils.join(" ", xDataString); - for (int i = 0; i < yDataString.size(); i++) { - loggingYdata[i] = StringUtils.join(" ", yDataString.get(i)); - } - runOnUiThread(new Runnable() { - @Override - public void run() { - logChannelData(paramsChannels); - } - }); - } - - } catch (NullPointerException e) { - cancel(true); - } catch (InterruptedException e) { - e.printStackTrace(); - } - - return null; - } - - @Override - protected void onPostExecute(Void aVoid) { - super.onPostExecute(aVoid); - dataEntries = new ArrayList<>(entries); - dataParamsChannels = paramsChannels.clone(); - - List dataSets = new ArrayList<>(); - if (!isFourierTransformSelected) { - for (int i = 0; i < Math.min(entries.size(), paramsChannels.length); i++) { - ArrayList entryArrayList = entries.get(i); - for (int j = 0; j < entryArrayList.size(); j++) { - Entry entry = entryArrayList.get(j); - entry.setX((float) (entry.getX() - xOffsets.get(paramsChannels[i]))); - entry.setY((float) (entry.getY() + yOffsets.get(paramsChannels[i]))); - } - } - } - - if (!isFourierTransformSelected) { - for (int i = 0; i < Math.min(entries.size(), paramsChannels.length); i++) { - CHANNEL channel = CHANNEL.valueOf(paramsChannels[i]); - double minY = Double.MAX_VALUE; - double maxY = -1 * Double.MIN_VALUE; - double yRange; - double[] voltage = new double[512]; - ArrayList entryArrayList = dataEntries.get(i); - for (int j = 0; j < entryArrayList.size(); j++) { - Entry entry = entryArrayList.get(j); - if (j < voltage.length - 1) { - voltage[j] = entry.getY(); - } - if (entry.getY() > maxY) { - maxY = entry.getY(); - } - if (entry.getY() < minY) { - minY = entry.getY(); - } - } - final double frequency; - if (Objects.equals(dataParamsChannels[i], CHANNEL.MIC.toString())) { - frequency = analyticsClass.findFrequency(voltage, ((double) 1 / SAMPLING_RATE)); - } else { - frequency = analyticsClass.findFrequency(voltage, timeGap / 1000000.0); - } - double period = (1 / frequency) * 1000.0; - yRange = maxY - minY; - OscilloscopeMeasurements.channel.get(channel).put(ChannelMeasurements.FREQUENCY, frequency); - OscilloscopeMeasurements.channel.get(channel).put(ChannelMeasurements.PERIOD, period); - OscilloscopeMeasurements.channel.get(channel).put(ChannelMeasurements.AMPLITUDE, yRange); - OscilloscopeMeasurements.channel.get(channel).put(ChannelMeasurements.POSITIVE_PEAK, maxY); - OscilloscopeMeasurements.channel.get(channel).put(ChannelMeasurements.NEGATIVE_PEAK, minY); - } - } - - for (int i = 0; i < Math.min(entries.size(), paramsChannels.length); i++) { - LineDataSet dataSet; - dataSet = new LineDataSet(entries.get(i), paramsChannels[i]); - dataSet.setDrawCircles(false); - dataSet.setColor(channelColors[i]); - dataSets.add(dataSet); - - } - for (int i = 0; i < curveFitEntries.size(); i++) { - LineDataSet dataSet; - dataSet = new LineDataSet(curveFitEntries.get(i), "Fit"); - dataSet.setDrawCircles(false); - dataSet.setColor(Color.YELLOW); - dataSets.add(dataSet); - } - LineData data = new LineData(dataSets); - if (isFourierTransformSelected) { - setXAxisScale(maxFreq); - setLeftYAxisScale(maxAmp, 0); - setRightYAxisScale(maxAmp, 0); - } else { - setXAxisScale(xAxisScale); - setLeftYAxisScale(yAxisScale, -1 * yAxisScale); - setRightYAxisScale(yAxisScale, -1 * yAxisScale); - } - if (isMeasurementsChecked) { - RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(OscilloscopeActivity.this); - measurementsList.setItemAnimator(new DefaultItemAnimator()); - measurementsList.setLayoutManager(layoutManager); - OscilloscopeMeasurementsAdapter adapter = new OscilloscopeMeasurementsAdapter(dataParamsChannels, channelColors); - measurementsList.setAdapter(adapter); - } - mChart.setData(data); - mChart.notifyDataSetChanged(); - mChart.invalidate(); - synchronized (lock) { - lock.notify(); - } - } - } - - public void autoScale() { - double minY = Double.MAX_VALUE; - double maxY = Double.MIN_VALUE; - double maxPeriod = -1 * Double.MIN_VALUE; - double yRange; - double yPadding; - double[] voltage = new double[512]; - for (int i = 0; i < dataParamsChannels.length; i++) { - if (dataEntries.size() > i) { - ArrayList entryArrayList = dataEntries.get(i); - for (int j = 0; j < entryArrayList.size(); j++) { - Entry entry = entryArrayList.get(j); - if (j < voltage.length - 1) { - voltage[j] = entry.getY(); - } - if (entry.getY() > maxY) { - maxY = entry.getY(); - } - if (entry.getY() < minY) { - minY = entry.getY(); - } - } - final double frequency; - if (Objects.equals(dataParamsChannels[i], CHANNEL.MIC.toString())) { - frequency = analyticsClass.findSignalFrequency(voltage, ((double) 1 / SAMPLING_RATE)); - } else { - frequency = analyticsClass.findSignalFrequency(voltage, timeGap / 1000000.0); - } - double period = (1 / frequency) * 1000.0; - if (period > maxPeriod) { - maxPeriod = period; - } - } - } - yRange = maxY - minY; - yPadding = yRange * 0.1; - if (maxPeriod > 0) { - xAxisScale = Math.min((maxPeriod * 5), maxTimebase); - if (Math.abs(maxY) >= Math.abs(minY)) { - yAxisScale = maxY + yPadding; - } else { - yAxisScale = -1 * (minY - yPadding); - } - samples = 512; - timeGap = (2 * xAxisScale * 1000.0) / samples; - } else { - Toast.makeText(this, getString(R.string.auto_scale_error), Toast.LENGTH_SHORT).show(); - } - } - - public class XYPlotTask extends AsyncTask { - private String analogInput1; - private String analogInput2; - private float[] xFloatData; - private float[] yFloatData; - - @Override - protected Void doInBackground(String... params) { - analogInput1 = params[0]; - analogInput2 = params[1]; - HashMap data; - if (analogInput1.equals(analogInput2)) { - scienceLab.captureTraces(1, samples, timeGap, analogInput1, isTriggerSelected, null); - data = scienceLab.fetchTrace(1); - double[] yData = data.get("y"); - int n = yData.length; - xFloatData = new float[n]; - yFloatData = new float[n]; - for (int i = 0; i < n; i++) { - xFloatData[i] = (float) yData[i]; - yFloatData[i] = (float) yData[i]; - } - } else { - int noChannels = 1; - if ((analogInput1.equals(CHANNEL.CH1.toString()) && analogInput2.equals(CHANNEL.CH2.toString())) || (analogInput1.equals(CHANNEL.CH2.toString()) && analogInput2.equals(CHANNEL.CH1.toString()))) { - noChannels = 2; - scienceLab.captureTraces(noChannels, 175, timeGap, "CH1", isTriggerSelected, null); - data = scienceLab.fetchTrace(1); - double[] yData1 = data.get("y"); - data = scienceLab.fetchTrace(2); - double[] yData2 = data.get("y"); - int n = Math.min(yData1.length, yData2.length); - xFloatData = new float[n]; - yFloatData = new float[n]; - for (int i = 0; i < n; i++) { - xFloatData[i] = (float) yData1[i]; - yFloatData[i] = (float) yData2[i]; - } - - } else { - noChannels = 4; - scienceLab.captureTraces(noChannels, 175, timeGap, "CH1", isTriggerSelected, null); - data = scienceLab.fetchTrace(channelIndexMap.get(analogInput1) + 1); - double[] yData1 = data.get("y"); - data = scienceLab.fetchTrace(channelIndexMap.get(analogInput2) + 1); - double[] yData2 = data.get("y"); - int n = Math.min(yData1.length, yData2.length); - xFloatData = new float[n]; - yFloatData = new float[n]; - for (int i = 0; i < n; i++) { - xFloatData[i] = (float) yData1[i]; - yFloatData[i] = (float) yData2[i]; - } - } - - } - try { - Thread.sleep(200); - } catch (InterruptedException e) { - e.printStackTrace(); - } - return null; - } - - @Override - protected void onPostExecute(Void aVoid) { - super.onPostExecute(aVoid); - graph.plotData(xFloatData, yFloatData, 1); - synchronized (lock) { - lock.notify(); - } - } - } - - public Complex[] fft(Complex[] input) { - Complex[] x = input; - int n = x.length; - - if (n == 1) return new Complex[]{x[0]}; - - if (n % 2 != 0) { - x = Arrays.copyOfRange(x, 0, x.length - 1); - } - - Complex[] halfArray = new Complex[n / 2]; - for (int k = 0; k < n / 2; k++) { - halfArray[k] = x[2 * k]; - } - Complex[] q = fft(halfArray); - - for (int k = 0; k < n / 2; k++) { - halfArray[k] = x[2 * k + 1]; - } - Complex[] r = fft(halfArray); - - Complex[] y = new Complex[n]; - for (int k = 0; k < n / 2; k++) { - double kth = -2 * k * Math.PI / n; - Complex wk = new Complex(Math.cos(kth), Math.sin(kth)); - if (r[k] == null) { - r[k] = new Complex(1); - } - if (q[k] == null) { - q[k] = new Complex(1); - } - y[k] = q[k].add(wk.multiply(r[k])); - y[k + n / 2] = q[k].subtract(wk.multiply(r[k])); - } - return y; - } - - public void recordSensorDataBlockID(SensorDataBlock block) { - realm.beginTransaction(); - realm.copyToRealm(block); - realm.commitTransaction(); - } - - public void recordSensorData(RealmObject sensorData) { - realm.beginTransaction(); - realm.copyToRealm((OscilloscopeData) sensorData); - realm.commitTransaction(); - } -} \ No newline at end of file diff --git a/app/src/main/java/io/pslab/activity/PowerSourceActivity.java b/app/src/main/java/io/pslab/activity/PowerSourceActivity.java deleted file mode 100644 index 819759501..000000000 --- a/app/src/main/java/io/pslab/activity/PowerSourceActivity.java +++ /dev/null @@ -1,1073 +0,0 @@ -package io.pslab.activity; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.content.Intent; -import android.content.SharedPreferences; -import android.content.pm.ActivityInfo; -import android.location.Location; -import android.location.LocationManager; -import android.os.Bundle; -import android.os.Handler; -import android.text.Editable; -import android.util.Log; -import android.util.Range; -import android.view.KeyEvent; -import android.view.Menu; -import android.view.MenuInflater; -import android.view.MenuItem; -import android.view.MotionEvent; -import android.view.View; -import android.view.inputmethod.EditorInfo; -import android.widget.EditText; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.appcompat.app.ActionBar; -import androidx.appcompat.widget.Toolbar; -import androidx.coordinatorlayout.widget.CoordinatorLayout; -import androidx.core.content.res.ResourcesCompat; -import androidx.core.widget.TextViewCompat; - -import com.google.android.material.snackbar.Snackbar; -import com.sdsmdg.harjot.crollerTest.Croller; -import com.sdsmdg.harjot.crollerTest.OnCrollerChangeListener; - -import java.text.NumberFormat; -import java.text.ParseException; -import java.util.Date; -import java.util.Locale; -import java.util.Timer; -import java.util.TimerTask; - -import butterknife.BindView; -import butterknife.ButterKnife; -import io.pslab.R; -import io.pslab.activity.guide.GuideActivity; -import io.pslab.communication.CommunicationHandler; -import io.pslab.communication.ScienceLab; -import io.pslab.items.SquareImageButton; -import io.pslab.models.PowerSourceData; -import io.pslab.models.SensorDataBlock; -import io.pslab.others.CSVDataLine; -import io.pslab.others.CSVLogger; -import io.pslab.others.CustomSnackBar; -import io.pslab.others.GPSLogger; -import io.pslab.others.LocalDataLog; -import io.pslab.others.ScienceLabCommon; -import io.realm.Realm; -import io.realm.RealmObject; -import io.realm.RealmResults; - -public class PowerSourceActivity extends GuideActivity { - - private final static String TAG = PowerSourceActivity.class.getSimpleName(); - - public static final String POWER_PREFERENCES = "Power_Preferences"; - private static final CSVDataLine CSV_HEADER = new CSVDataLine() - .add("Timestamp") - .add("DateTime") - .add("PV1") - .add("PV2") - .add("PV3") - .add("PCS") - .add("Latitude") - .add("Longitude"); - - private static final String VOLTAGE_FORMAT = "%f V"; - private static final String CURRENT_FORMAT = "%f mA"; - - private static final int CONTROLLER_MIN = 1; - private static final int PV1_CONTROLLER_MAX = 1001; - private static final int PV2_CONTROLLER_MAX = 661; - private static final int PV3_CONTROLLER_MAX = 331; - private static final int PCS_CONTROLLER_MAX = 331; - - private static final Range PV1_VOLTAGE_RANGE = Range.create(-5.0f, 5.0f); - private static final Range PV2_VOLTAGE_RANGE = Range.create(-3.30f, 3.30f); - private static final Range PV3_VOLTAGE_RANGE = Range.create(0.0f, 3.30f); - private static final Range PCS_CURRENT_RANGE = Range.create(0.0f, 3.30f); - - private final NumberFormat numberFormat = NumberFormat.getNumberInstance(Locale.getDefault()); - - /** - * Step of one tap on an up or down button. - */ - private static final float STEP = 0.01f; - - private static final long LONG_CLICK_DELAY = 100; - private static final String KEY_LOG = "has_log"; - private static final String DATA_BLOCK = "data_block"; - - @BindView(R.id.toolbar) - Toolbar toolbar; - @BindView(R.id.power_card_pv1_controller) - Croller controllerPV1; - @BindView(R.id.power_card_pv1_display) - EditText displayPV1; - @BindView(R.id.power_card_pv1_up) - SquareImageButton upPV1; - @BindView(R.id.power_card_pv1_down) - SquareImageButton downPV1; - @BindView(R.id.power_source_coordinatorLayout) - CoordinatorLayout coordinatorLayout; - @BindView(R.id.power_card_pv2_controller) - Croller controllerPV2; - @BindView(R.id.power_card_pv2_display) - EditText displayPV2; - @BindView(R.id.power_card_pv2_up) - SquareImageButton upPV2; - @BindView(R.id.power_card_pv2_down) - SquareImageButton downPV2; - @BindView(R.id.power_card_pv3_controller) - Croller controllerPV3; - @BindView(R.id.power_card_pv3_display) - EditText displayPV3; - @BindView(R.id.power_card_pv3_up) - SquareImageButton upPV3; - @BindView(R.id.power_card_pv3_down) - SquareImageButton downPV3; - @BindView(R.id.power_card_pcs_controller) - Croller controllerPCS; - @BindView(R.id.power_card_pcs_display) - EditText displayPCS; - @BindView(R.id.power_card_pcs_up) - SquareImageButton upPCS; - @BindView(R.id.power_card_pcs_down) - SquareImageButton downPCS; - private CSVLogger powerSourceLogger = null; - private GPSLogger gpsLogger = null; - private Realm realm; - private Timer recordTimer = null; - private Timer playbackTimer = null; - private int currentPosition = 0; - private boolean playClicked = false; - private final long recordPeriod = 1000; - private boolean isRecording = false; - private Boolean writeHeaderToFile = true; - private SharedPreferences powerPreferences; - private boolean isRunning = false; - private boolean incrementPower = false, decrementPower = false; - private final ScienceLab scienceLab = ScienceLabCommon.scienceLab; - private RealmResults recordedPowerData; - private Timer powerCounter; - private final Handler powerHandler = new Handler(); - private long block; - private boolean isPlayingBack = false; - private MenuItem stopMenu; - private MenuItem playMenu; - - private float voltagePV1 = 0.00f, voltagePV2 = 0.00f, voltagePV3 = 0.00f, currentPCS = 0.00f; - - public PowerSourceActivity() { - super(R.layout.activity_power_source); - } - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - ButterKnife.bind(this); - - setSupportActionBar(toolbar); - final ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setDisplayHomeAsUpEnabled(true); - } - powerPreferences = getSharedPreferences(POWER_PREFERENCES, MODE_PRIVATE); - - gpsLogger = new GPSLogger(this, - (LocationManager) getSystemService(Context.LOCATION_SERVICE)); - realm = LocalDataLog.with().getRealm(); - - autoSize(displayPV1); - autoSize(displayPV2); - autoSize(displayPV3); - autoSize(displayPCS); - - displayPV1.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - displayPV1.setCursorVisible(true); - } - }); - displayPV2.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - displayPV2.setCursorVisible(true); - } - }); - displayPV3.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - displayPV3.setCursorVisible(true); - } - }); - displayPCS.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - displayPCS.setCursorVisible(true); - } - }); - displayPV1.setOnEditorActionListener(new TextView.OnEditorActionListener() { - @Override - public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { - if (actionId == EditorInfo.IME_ACTION_DONE) { - final String voltageValue = remove(displayPV1.getText(), "V", "\\+").trim(); - final float voltage = PV1_VOLTAGE_RANGE.clamp(parseFloat(voltageValue, PV1_VOLTAGE_RANGE.getLower())); - setText(displayPV1, VOLTAGE_FORMAT, voltage); - controllerPV1.setProgress(mapPowerToProgress(voltage, PV1_CONTROLLER_MAX, - PV1_VOLTAGE_RANGE.getUpper(), PV1_VOLTAGE_RANGE.getLower())); - } - return false; - } - }); - - displayPV2.setOnEditorActionListener(new TextView.OnEditorActionListener() { - @Override - public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { - if (actionId == EditorInfo.IME_ACTION_DONE) { - final String voltageValue = remove(displayPV2.getText(), "V", "\\+").trim(); - final float voltage = PV2_VOLTAGE_RANGE.clamp(parseFloat(voltageValue, PV2_VOLTAGE_RANGE.getLower())); - setText(displayPV2, VOLTAGE_FORMAT, voltage); - controllerPV2.setProgress(mapPowerToProgress(voltage, PV2_CONTROLLER_MAX, - PV2_VOLTAGE_RANGE.getUpper(), PV2_VOLTAGE_RANGE.getLower())); - } - return false; - } - }); - - displayPV3.setOnEditorActionListener(new TextView.OnEditorActionListener() { - @Override - public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { - if (actionId == EditorInfo.IME_ACTION_DONE) { - final String voltageValue = remove(displayPV3.getText(), "V", "\\+").trim(); - final float voltage = PV3_VOLTAGE_RANGE.clamp(parseFloat(voltageValue, PV3_VOLTAGE_RANGE.getLower())); - setText(displayPV3, VOLTAGE_FORMAT, voltage); - controllerPV3.setProgress(mapPowerToProgress(voltage, PV3_CONTROLLER_MAX, - PV3_VOLTAGE_RANGE.getUpper(), PV3_VOLTAGE_RANGE.getLower())); - } - return false; - } - }); - - displayPCS.setOnEditorActionListener(new TextView.OnEditorActionListener() { - @Override - public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { - if (actionId == EditorInfo.IME_ACTION_DONE) { - final String currentValue = remove(displayPCS.getText(), "mA", "\\+").trim(); - final float current = PCS_CURRENT_RANGE.clamp(parseFloat(currentValue, PCS_CURRENT_RANGE.getLower())); - setText(displayPV3, CURRENT_FORMAT, current); - controllerPCS.setProgress(mapPowerToProgress(current, PCS_CONTROLLER_MAX, - PCS_CURRENT_RANGE.getUpper(), PCS_CURRENT_RANGE.getLower())); - } - return false; - } - }); - - monitorControllers(controllerPV1, Pin.PV1, PV1_CONTROLLER_MAX); - monitorControllers(controllerPV2, Pin.PV2, PV2_CONTROLLER_MAX); - monitorControllers(controllerPV3, Pin.PV3, PV3_CONTROLLER_MAX); - monitorControllers(controllerPCS, Pin.PCS, PCS_CONTROLLER_MAX); - - monitorVariations(upPV1, downPV1, Pin.PV1); - monitorVariations(upPV2, downPV2, Pin.PV2); - monitorVariations(upPV3, downPV3, Pin.PV3); - monitorVariations(upPCS, downPCS, Pin.PCS); - - monitorLongClicks(upPV1, downPV1); - monitorLongClicks(upPV2, downPV2); - monitorLongClicks(upPV3, downPV3); - monitorLongClicks(upPCS, downPCS); - - updateDisplay(displayPV1, limitDigits(mapProgressToPower(retrievePowerValues(Pin.PV1), - PV1_CONTROLLER_MAX, PV1_VOLTAGE_RANGE.getUpper(), PV1_VOLTAGE_RANGE.getLower())), Pin.PV1); - updateDisplay(displayPV2, limitDigits(mapProgressToPower(retrievePowerValues(Pin.PV2), - PV2_CONTROLLER_MAX, PV2_VOLTAGE_RANGE.getUpper(), PV2_VOLTAGE_RANGE.getLower())), Pin.PV2); - updateDisplay(displayPV3, limitDigits(mapProgressToPower(retrievePowerValues(Pin.PV3), - PV3_CONTROLLER_MAX, PV3_VOLTAGE_RANGE.getUpper(), PV3_VOLTAGE_RANGE.getLower())), Pin.PV3); - updateDisplay(displayPCS, limitDigits(mapProgressToPower(retrievePowerValues(Pin.PCS), - PCS_CONTROLLER_MAX, PCS_CURRENT_RANGE.getUpper(), PCS_CURRENT_RANGE.getLower())), Pin.PCS); - - if (getIntent().getExtras() != null && getIntent().getExtras().getBoolean(KEY_LOG)) { - recordedPowerData = LocalDataLog.with() - .getBlockOfPowerRecords(getIntent().getExtras().getLong(DATA_BLOCK)); - isPlayingBack = true; - disableButtons(); - } - - if (getResources().getBoolean(R.bool.isTablet)) { - setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_USER); - } - - if (!scienceLab.isConnected() && savedInstanceState != null) { - displayPV1.setText(savedInstanceState.getString("displayPV1")); - displayPV1.onEditorAction(EditorInfo.IME_ACTION_DONE); - displayPV2.setText(savedInstanceState.getString("displayPV2")); - displayPV2.onEditorAction(EditorInfo.IME_ACTION_DONE); - displayPV3.setText(savedInstanceState.getString("displayPV3")); - displayPV3.onEditorAction(EditorInfo.IME_ACTION_DONE); - displayPCS.setText(savedInstanceState.getString("displayPCS")); - displayPCS.onEditorAction(EditorInfo.IME_ACTION_DONE); - } - } - - /** - * Parses text to produce a number respecting the current locale of the system. - * - * @param toBeParsed text to be parsed - * @param defaultValue fallback value to be used if text cannot be parsed - * @return number parsed from text - */ - private float parseFloat(@NonNull String toBeParsed, float defaultValue) { - float parsedValue = defaultValue; - try { - parsedValue = numberFormat.parse(toBeParsed).floatValue(); - } catch (ParseException e) { - Log.e(TAG, "Unable to parse " + toBeParsed, e); - } - - return parsedValue; - } - - /** - * Turns a value into a String representation that respects the current locale of the device - * and sets it to a TextVew. - * - * @param textView UI element which will display the text - * @param format formatted String which value will be inserted to - * @param value the value to display - */ - private static void setText(@NonNull TextView textView, @NonNull String format, float value) { - textView.setText(String.format(Locale.getDefault(), format, value)); - } - - private String remove(@NonNull Editable input, @NonNull String... toBeRemoved) { - return remove(input.toString(), toBeRemoved); - } - - private String remove(@NonNull String input, @NonNull String... toBeRemoved) { - String output = input; - for (String s : toBeRemoved) { - output = output.replaceAll(s, ""); - } - return output; - } - - /** - * Autosize the voltage display in textView to utilize empty space - * - * @param view Display text view - */ - private void autoSize(TextView view) { - TextViewCompat.setAutoSizeTextTypeWithDefaults(view, - TextViewCompat.AUTO_SIZE_TEXT_TYPE_UNIFORM); - } - - @Override - public boolean onCreateOptionsMenu(Menu menu) { - MenuInflater inflater = getMenuInflater(); - inflater.inflate(R.menu.power_source_menu, menu); - return true; - } - - @Override - public boolean onPrepareOptionsMenu(Menu menu) { - if (isPlayingBack) { - menu.findItem(R.id.play_data).setVisible(true); - menu.findItem(R.id.stop_data).setVisible(false); - menu.findItem(R.id.power_source_record_data).setVisible(false); - } else { - menu.findItem(R.id.play_data).setVisible(false); - menu.findItem(R.id.stop_data).setVisible(false); - menu.findItem(R.id.power_source_record_data).setVisible(true); - } - stopMenu = menu.findItem(R.id.stop_data); - playMenu = menu.findItem(R.id.play_data); - return super.onPrepareOptionsMenu(menu); - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case R.id.show_guide: - toggleGuide(); - break; - case R.id.power_source_record_data: - if (!isRecording) { - item.setIcon(ResourcesCompat.getDrawable(getResources(), R.drawable.ic_record_stop_white, null)); - isRecording = true; - if (recordTimer == null) { - recordTimer = new Timer(); - } else { - recordTimer.cancel(); - recordTimer = new Timer(); - } - CustomSnackBar.showSnackBar(coordinatorLayout, getString(R.string.data_recording_start), null, null, Snackbar.LENGTH_SHORT); - final Handler handler = new Handler(); - block = System.currentTimeMillis(); - recordTimer.schedule(new TimerTask() { - @Override - public void run() { - handler.post(new Runnable() { - @Override - public void run() { - recordData(); - } - }); - } - }, 0, recordPeriod); - } else { - item.setIcon(ResourcesCompat.getDrawable(getResources(), R.drawable.ic_record_white, null)); - recordTimer.cancel(); - recordTimer = null; - isRecording = false; - writeHeaderToFile = true; - CustomSnackBar.showSnackBar(coordinatorLayout, - getString(R.string.csv_store_text) + " " + powerSourceLogger.getCurrentFilePath() - , getString(R.string.open), new View.OnClickListener() { - @Override - public void onClick(View view) { - Intent intent = new Intent(PowerSourceActivity.this, DataLoggerActivity.class); - intent.putExtra(DataLoggerActivity.CALLER_ACTIVITY, getResources().getString(R.string.power_source)); - startActivity(intent); - } - }, Snackbar.LENGTH_LONG); - - } - break; - case R.id.play_data: - if (!playClicked) { - playClicked = true; - stopMenu.setVisible(true); - item.setIcon(ResourcesCompat.getDrawable(getResources(), R.drawable.ic_pause_white_24dp, null)); - if (playbackTimer == null) { - playbackTimer = new Timer(); - } else { - playbackTimer.cancel(); - playbackTimer = new Timer(); - } - final Handler handler = new Handler(); - playbackTimer.schedule(new TimerTask() { - @Override - public void run() { - handler.post(new Runnable() { - @Override - public void run() { - if (recordedPowerData != null && currentPosition < recordedPowerData.size()) { - final PowerSourceData data = recordedPowerData.get(currentPosition); - if (data != null) { - setSavedValue(data); - } - } else { - playbackTimer.cancel(); - currentPosition = 0; - playClicked = false; - stopMenu.setVisible(false); - item.setIcon(ResourcesCompat.getDrawable(getResources(), R.drawable.ic_play_arrow_white_24dp, null)); - } - } - }); - } - }, 0, recordPeriod); - - } else { - playClicked = false; - stopMenu.setVisible(false); - item.setIcon(ResourcesCompat.getDrawable(getResources(), R.drawable.ic_play_arrow_white_24dp, null)); - if (playbackTimer != null) { - playbackTimer.cancel(); - playbackTimer = null; - } - } - break; - case R.id.stop_data: - if (playbackTimer != null) { - playbackTimer.cancel(); - currentPosition = 0; - playClicked = false; - playMenu.setIcon(ResourcesCompat.getDrawable(getResources(), R.drawable.ic_play_arrow_white_24dp, null)); - stopMenu.setVisible(false); - } - break; - case android.R.id.home: - this.finish(); - break; - default: - break; - } - - return true; - } - - @Override - protected void onSaveInstanceState(@NonNull Bundle outState) { - outState.putString("displayPV1", displayPV1.getText().toString()); - outState.putString("displayPV2", displayPV2.getText().toString()); - outState.putString("displayPV3", displayPV3.getText().toString()); - outState.putString("displayPCS", displayPCS.getText().toString()); - super.onSaveInstanceState(outState); - } - - /** - * Initiates and sets up power knob controller - * - * @param controller assigned knob - * @param pin assigned power pin - * @param controllerLimit maximum value the knob can handle - */ - private void monitorControllers(Croller controller, final Pin pin, int controllerLimit) { - controller.setMax(controllerLimit); - controller.setProgress(retrievePowerValues(pin)); - controller.setOnCrollerChangeListener(new OnCrollerChangeListener() { - private int progress; - - @Override - public void onProgressChanged(Croller croller, int progress) { - setMappedPower(pin, progress); - this.progress = progress; - removeCursor(); - } - - @Override - public void onStartTrackingTouch(Croller croller) { /**/ } - - @Override - public void onStopTrackingTouch(Croller croller) { - setPower(pin); - /* - V6 hardware has two pairs of paired channels: - 0: PCS & PVS2 - 1: PVS1 & PVS3 - Paired channels share relative output levels, i.e. if PV1 outputs 5 V - then PV3 outputs 3.3 V. - */ - switch (pin) { - case PV1: - if ((int) (progress * 3.3 / 10) > PV3_CONTROLLER_MAX) { - controllerPV3.setProgress(PV3_CONTROLLER_MAX); - } else if ((int) (progress * 3.3 / 10) < CONTROLLER_MIN) { - controllerPV3.setProgress(CONTROLLER_MIN); - } else { - controllerPV3.setProgress((int) (progress * 3.3 / 10)); - } - break; - case PV2: - if (PCS_CONTROLLER_MAX - (progress / 2) > PCS_CONTROLLER_MAX) { - controllerPCS.setProgress(PCS_CONTROLLER_MAX); - } else if (PCS_CONTROLLER_MAX - (progress / 2) < CONTROLLER_MIN) { - controllerPCS.setProgress(CONTROLLER_MIN); - } else { - controllerPCS.setProgress(PCS_CONTROLLER_MAX - (progress / 2)); - } - break; - case PV3: - if ((int) (progress * 10 / 3.3) > PV1_CONTROLLER_MAX) { - controllerPV1.setProgress(PV1_CONTROLLER_MAX); - } else if ((int) (progress * 10 / 3.3) < CONTROLLER_MIN) { - controllerPV1.setProgress(CONTROLLER_MIN); - } else { - controllerPV1.setProgress((int) (progress * 10 / 3.3)); - } - break; - case PCS: - if (PV2_CONTROLLER_MAX - (progress * 2) > PV2_CONTROLLER_MAX) { - controllerPV2.setProgress(PV2_CONTROLLER_MAX); - } else if (PV2_CONTROLLER_MAX - (progress * 2) < CONTROLLER_MIN) { - controllerPV2.setProgress(CONTROLLER_MIN); - } else { - controllerPV2.setProgress(PV2_CONTROLLER_MAX - (progress * 2)); - } - break; - default: - break; - } - } - }); - } - - private void removeCursor() { - displayPV1.setCursorVisible(false); - displayPV2.setCursorVisible(false); - displayPV3.setCursorVisible(false); - displayPCS.setCursorVisible(false); - } - - /** - * Click listeners to increment and decrement buttons - * - * @param up increment button - * @param down decrement button - * @param pin assigned power pin - */ - private void monitorVariations(SquareImageButton up, SquareImageButton down, final Pin pin) { - up.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - incrementValue(pin); - } - }); - up.setOnLongClickListener(new View.OnLongClickListener() { - @Override - public boolean onLongClick(final View view) { - if (!isRunning) { - isRunning = true; - incrementPower = true; - fastCounter(pin); - } - return true; - } - }); - down.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - decrementValue(pin); - } - }); - down.setOnLongClickListener(new View.OnLongClickListener() { - @Override - public boolean onLongClick(final View view) { - if (!isRunning) { - isRunning = true; - decrementPower = true; - fastCounter(pin); - } - return true; - } - }); - } - - /** - * Handles action when user releases long click on an increment or a decrement button - * - * @param up increment button - * @param down decrement button - */ - private void monitorLongClicks(SquareImageButton up, SquareImageButton down) { - up.setOnTouchListener(new View.OnTouchListener() { - @SuppressLint("ClickableViewAccessibility") - @Override - public boolean onTouch(View view, MotionEvent motionEvent) { - view.onTouchEvent(motionEvent); - if (motionEvent.getAction() == MotionEvent.ACTION_UP && incrementPower) { - if (isRunning) { - isRunning = false; - stopCounter(); - incrementPower = false; - } - } - return true; - } - }); - down.setOnTouchListener(new View.OnTouchListener() { - @SuppressLint("ClickableViewAccessibility") - @Override - public boolean onTouch(View view, MotionEvent motionEvent) { - view.onTouchEvent(motionEvent); - if (motionEvent.getAction() == MotionEvent.ACTION_UP && decrementPower) { - if (isRunning) { - isRunning = false; - stopCounter(); - decrementPower = false; - } - } - return true; - } - }); - } - - /** - * Increase power value by a fraction of hundreds - * - * @param pin assigned power pin - */ - private void incrementValue(Pin pin) { - switch (pin) { - case PV1: - if (voltagePV1 < PV1_VOLTAGE_RANGE.getUpper()) { - voltagePV1 += STEP; - updateDisplay(displayPV1, voltagePV1, Pin.PV1); - updateController(controllerPV1, Pin.PV1); - } - break; - case PV2: - if (voltagePV2 < PV2_VOLTAGE_RANGE.getUpper()) { - voltagePV2 += STEP; - updateDisplay(displayPV2, voltagePV2, Pin.PV2); - updateController(controllerPV2, Pin.PV2); - } - break; - case PV3: - if (voltagePV3 < PV3_VOLTAGE_RANGE.getUpper()) { - voltagePV3 += STEP; - updateDisplay(displayPV3, voltagePV3, Pin.PV3); - updateController(controllerPV3, Pin.PV3); - } - break; - case PCS: - if (currentPCS < PCS_CURRENT_RANGE.getUpper()) { - currentPCS += STEP; - updateDisplay(displayPCS, currentPCS, Pin.PCS); - updateController(controllerPCS, Pin.PCS); - } - break; - default: - break; - } - } - - /** - * Decrease power value by a fraction of hundreds - * - * @param pin assigned power pin - */ - private void decrementValue(Pin pin) { - switch (pin) { - case PV1: - if (voltagePV1 > PV1_VOLTAGE_RANGE.getLower()) { - voltagePV1 -= STEP; - updateDisplay(displayPV1, voltagePV1, Pin.PV1); - updateController(controllerPV1, Pin.PV1); - } - break; - case PV2: - if (voltagePV2 > PV2_VOLTAGE_RANGE.getLower()) { - voltagePV2 -= STEP; - updateDisplay(displayPV2, voltagePV2, Pin.PV2); - updateController(controllerPV2, Pin.PV2); - } - break; - case PV3: - if (voltagePV3 > PV3_VOLTAGE_RANGE.getLower()) { - voltagePV3 -= STEP; - updateDisplay(displayPV3, voltagePV3, Pin.PV3); - updateController(controllerPV3, Pin.PV3); - } - break; - case PCS: - if (currentPCS > PCS_CURRENT_RANGE.getLower()) { - currentPCS -= STEP; - updateDisplay(displayPCS, currentPCS, Pin.PCS); - updateController(controllerPCS, Pin.PCS); - } - break; - default: - break; - } - } - - /** - * Rotate power knob to the correct position determined by the numerical power value - * - * @param controller assigned knob - * @param pin assigned power pin - */ - private void updateController(Croller controller, Pin pin) { - switch (pin) { - case PV1: - controller.setProgress(mapPowerToProgress(voltagePV1, PV1_CONTROLLER_MAX, - PV1_VOLTAGE_RANGE.getUpper(), PV1_VOLTAGE_RANGE.getLower())); - break; - case PV2: - controller.setProgress(mapPowerToProgress(voltagePV2, PV2_CONTROLLER_MAX, - PV2_VOLTAGE_RANGE.getUpper(), PV2_VOLTAGE_RANGE.getLower())); - break; - case PV3: - controller.setProgress(mapPowerToProgress(voltagePV3, PV3_CONTROLLER_MAX, - PV3_VOLTAGE_RANGE.getUpper(), PV3_VOLTAGE_RANGE.getLower())); - break; - case PCS: - controller.setProgress(mapPowerToProgress(currentPCS, PCS_CONTROLLER_MAX, - PCS_CURRENT_RANGE.getUpper(), PCS_CURRENT_RANGE.getLower())); - break; - default: - break; - } - - } - - /** - * Updates display with user set values and issue commands to PSLab device to output power - * - * @param display text view corresponding to power values - * @param value signed power value - * @param pin assigned power pin - */ - private void updateDisplay(TextView display, float value, Pin pin) { - String displayText = (value >= 0 ? "+" : "-").concat(String.format(Locale.getDefault(), - "%.2f", Math.abs(value))).concat(pin.equals(Pin.PCS) ? " mA" : " V"); - display.setText(displayText); - setPower(pin); - } - - /** - * Updates display and calculate power value determined by knob position - * - * @param pin assigned power pin - * @param progress corresponding progress value - */ - private void setMappedPower(Pin pin, int progress) { - savePowerValues(pin, progress); - switch (pin) { - case PV1: - voltagePV1 = limitDigits(mapProgressToPower(progress, PV1_CONTROLLER_MAX, - PV1_VOLTAGE_RANGE.getUpper(), PV1_VOLTAGE_RANGE.getLower())); - updateDisplay(displayPV1, voltagePV1, pin); - break; - case PV2: - voltagePV2 = limitDigits(mapProgressToPower(progress, PV2_CONTROLLER_MAX, - PV2_VOLTAGE_RANGE.getUpper(), PV2_VOLTAGE_RANGE.getLower())); - updateDisplay(displayPV2, voltagePV2, pin); - break; - case PV3: - voltagePV3 = limitDigits(mapProgressToPower(progress, PV3_CONTROLLER_MAX, - PV3_VOLTAGE_RANGE.getUpper(), PV3_VOLTAGE_RANGE.getLower())); - updateDisplay(displayPV3, voltagePV3, pin); - break; - case PCS: - currentPCS = limitDigits(mapProgressToPower(progress, PCS_CONTROLLER_MAX, - PCS_CURRENT_RANGE.getUpper(), PCS_CURRENT_RANGE.getLower())); - updateDisplay(displayPCS, currentPCS, pin); - break; - default: - break; - } - } - - /** - * Output the power values set by user when the PSLab device is connected - * - * @param pin assigned power pin - */ - private void setPower(Pin pin) { - if (scienceLab.isConnected()) { - switch (pin) { - case PV1: - scienceLab.setPV1(voltagePV1); - break; - case PV2: - scienceLab.setPV2(voltagePV2); - break; - case PV3: - scienceLab.setPV3(voltagePV3); - break; - case PCS: - scienceLab.setPCS(currentPCS); - break; - default: - break; - } - } - } - - /** - * Saves power values set by user if the PSLab device is plugged in - * - * @param pin assigned power pin - * @param power corresponding progress value - */ - private void savePowerValues(Pin pin, int power) { - if (scienceLab.isConnected()) { - SharedPreferences.Editor modifier = powerPreferences.edit(); - modifier.putInt(String.valueOf(pin), power); - modifier.apply(); - } - } - - /** - * Retrieves saved power values corresponding to power pin. If user has already unplugged the - * PSLab device, this method will clean up records as the device has reset already - * - * @param pin assigned power pin - * @return corresponding progress value - */ - private int retrievePowerValues(Pin pin) { - if (scienceLab.isConnected()) { - return powerPreferences.getInt(String.valueOf(pin), 1); - } else { - boolean guideState = powerPreferences.getBoolean("PowerSourceFirstTime", true); - powerPreferences.edit().clear().apply(); - SharedPreferences.Editor editor = powerPreferences.edit(); - editor.putBoolean("PowerSourceFirstTime", guideState); - editor.apply(); - return 1; - } - } - - /** - * Maps progress value to power values in between the range supported by power pin - * - * @param progress value captured from knob position - * @param CONTROLLER_MAX maximum value supported by knob - * @param max maximum power output - * @param min minimum power output - * @return float value corresponding to the progress value in between min and max - */ - private float mapProgressToPower(int progress, int CONTROLLER_MAX, float max, float min) { - return (progress - CONTROLLER_MIN) * (max - min) / - (CONTROLLER_MAX - CONTROLLER_MIN) + min; - } - - /** - * Maps power value to progress values in between the range supported by knob - * - * @param power signed voltage or current value - * @param CONTROLLER_MAX maximum value supported by knob - * @param max maximum power output - * @param min minimum power output - * @return integer value representing progress level at the respective power level in between - * CONTROLLER_MIN and CONTROLLER_MAX - */ - private int mapPowerToProgress(float power, int CONTROLLER_MAX, float max, float min) { - return (int) (limitDigits((power - min) * (CONTROLLER_MAX - CONTROLLER_MIN) / - (max - min)) + CONTROLLER_MIN); - } - - /** - * Chops off excess and rounds off a float number to two decimal places - * - * @param number float value with inconsistent decimal places - * @return truncated float value - */ - private float limitDigits(float number) { - try { - return Float.parseFloat(String.format(Locale.ROOT, "%.2f", number)); - } catch (NumberFormatException e) { - return 0.00f; - } - } - - /** - * Stops the Timer that is changing power pin values - */ - private void stopCounter() { - if (powerCounter != null) { - powerCounter.cancel(); - powerCounter.purge(); - } - } - - /** - * TimerTask implementation to increment or decrement assigned power pin values at a constant - * rate provided by LONG_CLICK_DELAY - * - * @param pin assigned power pin - */ - private void fastCounter(final Pin pin) { - powerCounter = new Timer(); - TimerTask task = new TimerTask() { - public void run() { - powerHandler.post(new Runnable() { - public void run() { - if (incrementPower) { - incrementValue(pin); - } else if (decrementPower) { - decrementValue(pin); - } - } - }); - } - }; - powerCounter.schedule(task, 1, LONG_CLICK_DELAY); - } - - private void recordData() { - long timestamp; - double lat; - double lon; - if (writeHeaderToFile) { - powerSourceLogger = new CSVLogger(getString(R.string.power_source)); - powerSourceLogger.prepareLogFile(); - powerSourceLogger.writeMetaData(getString(R.string.power_source)); - powerSourceLogger.writeCSVFile(CSV_HEADER); - writeHeaderToFile = !writeHeaderToFile; - recordSensorDataBlockID(new SensorDataBlock(block, getResources().getString(R.string.power_source))); - } - if (gpsLogger.isGPSEnabled()) { - Location location = gpsLogger.getDeviceLocation(); - if (location != null) { - lat = location.getLatitude(); - lon = location.getLongitude(); - } else { - lat = 0.0; - lon = 0.0; - } - } else { - lat = 0.0; - lon = 0.0; - } - timestamp = System.currentTimeMillis(); - powerSourceLogger.writeCSVFile( - new CSVDataLine() - .add(System.currentTimeMillis()) - .add(CSVLogger.FILE_NAME_FORMAT.format(new Date(System.currentTimeMillis()))) - .add(voltagePV1) - .add(voltagePV2) - .add(voltagePV3) - .add(currentPCS) - .add(lat) - .add(lon) - ); - recordSensorData(new PowerSourceData(timestamp, block, voltagePV1, voltagePV2, voltagePV3, currentPCS, lat, lon)); - } - - public void recordSensorDataBlockID(SensorDataBlock block) { - realm.beginTransaction(); - realm.copyToRealm(block); - realm.commitTransaction(); - } - - public void recordSensorData(RealmObject sensorData) { - realm.beginTransaction(); - realm.copyToRealm((PowerSourceData) sensorData); - realm.commitTransaction(); - } - - private void setSavedValue(PowerSourceData data) { - voltagePV1 = data.getPv1(); - voltagePV2 = data.getPv2(); - voltagePV3 = data.getPv3(); - currentPCS = data.getPcs(); - controllerPV1.setProgress(mapPowerToProgress(voltagePV1, PV1_CONTROLLER_MAX, - PV1_VOLTAGE_RANGE.getUpper(), PV1_VOLTAGE_RANGE.getLower())); - setMappedPower(Pin.PV1, mapPowerToProgress(voltagePV1, PV1_CONTROLLER_MAX, - PV1_VOLTAGE_RANGE.getUpper(), PV1_VOLTAGE_RANGE.getLower())); - controllerPV2.setProgress(mapPowerToProgress(voltagePV2, PV2_CONTROLLER_MAX, - PV2_VOLTAGE_RANGE.getUpper(), PV2_VOLTAGE_RANGE.getLower())); - setMappedPower(Pin.PV2, mapPowerToProgress(voltagePV2, PV2_CONTROLLER_MAX, - PV2_VOLTAGE_RANGE.getUpper(), PV2_VOLTAGE_RANGE.getLower())); - controllerPV3.setProgress(mapPowerToProgress(voltagePV3, PV3_CONTROLLER_MAX, - PV3_VOLTAGE_RANGE.getUpper(), PV3_VOLTAGE_RANGE.getLower())); - setMappedPower(Pin.PV3, mapPowerToProgress(voltagePV3, PV3_CONTROLLER_MAX, - PV3_VOLTAGE_RANGE.getUpper(), PV3_VOLTAGE_RANGE.getLower())); - controllerPCS.setProgress(mapPowerToProgress(currentPCS, PCS_CONTROLLER_MAX, - PCS_CURRENT_RANGE.getUpper(), PCS_CURRENT_RANGE.getLower())); - setMappedPower(Pin.PCS, mapPowerToProgress(currentPCS, PCS_CONTROLLER_MAX, - PCS_CURRENT_RANGE.getUpper(), PCS_CURRENT_RANGE.getLower())); - currentPosition++; - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (recordTimer != null) { - recordTimer.cancel(); - recordTimer = null; - } - } - - private void disableButtons() { - upPV1.setEnabled(false); - upPV2.setEnabled(false); - upPV3.setEnabled(false); - upPCS.setEnabled(false); - downPV1.setEnabled(false); - downPV2.setEnabled(false); - downPV3.setEnabled(false); - downPCS.setEnabled(false); - } - - private enum Pin { - PV1, PV2, PV3, PCS - } -} diff --git a/app/src/main/java/io/pslab/activity/RoboticArmActivity.java b/app/src/main/java/io/pslab/activity/RoboticArmActivity.java deleted file mode 100644 index 4a6b8a5de..000000000 --- a/app/src/main/java/io/pslab/activity/RoboticArmActivity.java +++ /dev/null @@ -1,712 +0,0 @@ -package io.pslab.activity; - -import android.content.Context; -import android.content.Intent; -import android.graphics.Point; -import android.location.Location; -import android.location.LocationManager; -import android.os.Build; -import android.os.Bundle; -import android.os.CountDownTimer; -import android.text.InputFilter; -import android.util.TypedValue; -import android.view.Display; -import android.view.DragEvent; -import android.view.KeyEvent; -import android.view.LayoutInflater; -import android.view.Menu; -import android.view.MenuItem; -import android.view.View; -import android.view.WindowManager; -import android.view.inputmethod.EditorInfo; -import android.widget.EditText; -import android.widget.HorizontalScrollView; -import android.widget.LinearLayout; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import androidx.appcompat.app.ActionBar; -import androidx.appcompat.widget.Toolbar; -import androidx.core.content.res.ResourcesCompat; - -import com.google.android.material.snackbar.Snackbar; -import com.triggertrap.seekarc.SeekArc; - -import java.util.ArrayList; -import java.util.Date; -import java.util.List; - -import butterknife.ButterKnife; -import io.pslab.InputMinMaxFilter; -import io.pslab.R; -import io.pslab.activity.guide.GuideActivity; -import io.pslab.communication.ScienceLab; -import io.pslab.models.SensorDataBlock; -import io.pslab.models.ServoData; -import io.pslab.others.CSVDataLine; -import io.pslab.others.CSVLogger; -import io.pslab.others.CustomSnackBar; -import io.pslab.others.GPSLogger; -import io.pslab.others.LocalDataLog; -import io.pslab.others.ScienceLabCommon; -import io.realm.Realm; -import io.realm.RealmObject; -import io.realm.RealmResults; - -public class RoboticArmActivity extends GuideActivity { - - private static final CSVDataLine CSV_HEADER = new CSVDataLine() - .add("Timestamp") - .add("DateTime") - .add("Servo1") - .add("Servo2") - .add("Servo3") - .add("Servo4") - .add("Latitude") - .add("Longitude"); - private EditText degreeText1, degreeText2, degreeText3, degreeText4; - private SeekArc seekArc1, seekArc2, seekArc3, seekArc4; - private LinearLayout servo1TimeLine, servo2TimeLine, servo3TimeLine, servo4TimeLine; - private int degree; - private boolean editEnter = false; - private HorizontalScrollView scrollView; - private CountDownTimer timeLine; - private boolean isPlaying = false; - private CSVLogger servoCSVLogger; - private Realm realm; - private GPSLogger gpsLogger; - private RealmResults recordedServoData; - private final String KEY_LOG = "has_log"; - private final String DATA_BLOCK = "data_block"; - private int timelinePosition = 0; - private ScienceLab scienceLab; - private LinearLayout timeIndicatorLayout; - private LinearLayout.LayoutParams timeIndicatorParams; - private MenuItem playMenu; - - public RoboticArmActivity() { - super(R.layout.activity_robotic_arm); - } - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - ButterKnife.bind(this); - - Toolbar toolbar = findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - final ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setTitle(R.string.robotic_arm); - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setDisplayShowHomeEnabled(true); - } - - scienceLab = ScienceLabCommon.scienceLab; - if (!scienceLab.isConnected()) { - CustomSnackBar.showSnackBar(findViewById(android.R.id.content), - getString(R.string.device_not_connected), null, null, Snackbar.LENGTH_SHORT); - } - Display display = getWindowManager().getDefaultDisplay(); - Point size = new Point(); - display.getSize(size); - TypedValue tv = new TypedValue(); - int actionBarHeight = 0; - if (getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true)) { - actionBarHeight = TypedValue.complexToDimensionPixelSize(tv.data, getResources().getDisplayMetrics()); - } - int screen_width = size.x; - int screen_height = size.y - actionBarHeight; - realm = LocalDataLog.with().getRealm(); - gpsLogger = new GPSLogger(this, - (LocationManager) getSystemService(Context.LOCATION_SERVICE)); - - View servo1Layout = findViewById(R.id.servo_1); - View servo2Layout = findViewById(R.id.servo_2); - View servo3Layout = findViewById(R.id.servo_3); - View servo4Layout = findViewById(R.id.servo_4); - degreeText1 = servo1Layout.findViewById(R.id.degreeText); - degreeText2 = servo2Layout.findViewById(R.id.degreeText); - degreeText3 = servo3Layout.findViewById(R.id.degreeText); - degreeText4 = servo4Layout.findViewById(R.id.degreeText); - seekArc1 = servo1Layout.findViewById(R.id.seek_arc); - seekArc2 = servo2Layout.findViewById(R.id.seek_arc); - seekArc3 = servo3Layout.findViewById(R.id.seek_arc); - seekArc4 = servo4Layout.findViewById(R.id.seek_arc); - servo1TimeLine = findViewById(R.id.servo1_timeline); - servo2TimeLine = findViewById(R.id.servo2_timeline); - servo3TimeLine = findViewById(R.id.servo3_timeline); - servo4TimeLine = findViewById(R.id.servo4_timeline); - scrollView = findViewById(R.id.horizontal_scroll_view); - servoCSVLogger = new CSVLogger(getResources().getString(R.string.robotic_arm)); - - degreeText1.setText(getResources().getString(R.string.zero)); - degreeText2.setText(getResources().getString(R.string.zero)); - degreeText3.setText(getResources().getString(R.string.zero)); - degreeText4.setText(getResources().getString(R.string.zero)); - - degreeText1.setFilters(new InputFilter[]{new InputMinMaxFilter(0, 360)}); - degreeText2.setFilters(new InputFilter[]{new InputMinMaxFilter(0, 360)}); - degreeText3.setFilters(new InputFilter[]{new InputMinMaxFilter(0, 360)}); - degreeText4.setFilters(new InputFilter[]{new InputMinMaxFilter(0, 360)}); - - LinearLayout.LayoutParams servoControllerParams = new LinearLayout.LayoutParams(screen_width / 4 - 4, screen_height / 2 - 4); - servoControllerParams.setMargins(2, 5, 2, 0); - servo1Layout.setLayoutParams(servoControllerParams); - servo2Layout.setLayoutParams(servoControllerParams); - servo3Layout.setLayoutParams(servoControllerParams); - servo4Layout.setLayoutParams(servoControllerParams); - - LinearLayout.LayoutParams servoTimeLineParams = new LinearLayout.LayoutParams(screen_width * 10, screen_height / 8 - 3); - servoTimeLineParams.setMargins(2, 0, 2, 4); - - servo1TimeLine.setLayoutParams(servoTimeLineParams); - servo2TimeLine.setLayoutParams(servoTimeLineParams); - servo3TimeLine.setLayoutParams(servoTimeLineParams); - servo4TimeLine.setLayoutParams(servoTimeLineParams); - - LinearLayout.LayoutParams servoTimeLineBoxParams = new LinearLayout.LayoutParams(screen_width / 6 - 2, screen_height / 8 - 2); - servoTimeLineBoxParams.setMargins(2, 0, 0, 0); - - for (int i = 0; i < 60; i++) { - RelativeLayout timeLineBox = (RelativeLayout) LayoutInflater.from(RoboticArmActivity.this).inflate(R.layout.robotic_arm_timeline_textview, null); - timeLineBox.setLayoutParams(servoTimeLineBoxParams); - timeLineBox.setPadding(5, 5, 5, 5); - TextView timeText = timeLineBox.findViewById(R.id.timeline_box_time_text); - timeText.setText((i + 1) + getResources().getString(R.string.robotic_arm_second_unit)); - timeLineBox.setOnDragListener(servo1DragListener); - servo1TimeLine.addView(timeLineBox, i); - } - - for (int i = 0; i < 60; i++) { - RelativeLayout timeLineBox = (RelativeLayout) LayoutInflater.from(RoboticArmActivity.this).inflate(R.layout.robotic_arm_timeline_textview, null); - timeLineBox.setLayoutParams(servoTimeLineBoxParams); - timeLineBox.setPadding(5, 5, 5, 5); - TextView timeText = timeLineBox.findViewById(R.id.timeline_box_time_text); - timeText.setText((i + 1) + getResources().getString(R.string.robotic_arm_second_unit)); - timeLineBox.setOnDragListener(servo2DragListener); - servo2TimeLine.addView(timeLineBox, i); - } - - for (int i = 0; i < 60; i++) { - RelativeLayout timeLineBox = (RelativeLayout) LayoutInflater.from(RoboticArmActivity.this).inflate(R.layout.robotic_arm_timeline_textview, null); - timeLineBox.setLayoutParams(servoTimeLineBoxParams); - timeLineBox.setPadding(5, 5, 5, 5); - TextView timeText = timeLineBox.findViewById(R.id.timeline_box_time_text); - timeText.setText((i + 1) + getResources().getString(R.string.robotic_arm_second_unit)); - timeLineBox.setOnDragListener(servo3DragListener); - servo3TimeLine.addView(timeLineBox, i); - } - - for (int i = 0; i < 60; i++) { - RelativeLayout timeLineBox = (RelativeLayout) LayoutInflater.from(RoboticArmActivity.this).inflate(R.layout.robotic_arm_timeline_textview, null); - timeLineBox.setLayoutParams(servoTimeLineBoxParams); - timeLineBox.setPadding(5, 5, 5, 5); - TextView timeText = timeLineBox.findViewById(R.id.timeline_box_time_text); - timeText.setText((i + 1) + getResources().getString(R.string.robotic_arm_second_unit)); - timeLineBox.setOnDragListener(servo4DragListener); - servo4TimeLine.addView(timeLineBox, i); - } - - TextView servo1Title = servo1Layout.findViewById(R.id.servo_title); - servo1Title.setText(getResources().getString(R.string.servo1_title)); - - TextView servo2Title = servo2Layout.findViewById(R.id.servo_title); - servo2Title.setText(getResources().getString(R.string.servo2_title)); - - TextView servo3Title = servo3Layout.findViewById(R.id.servo_title); - servo3Title.setText(getResources().getString(R.string.servo3_title)); - - TextView servo4Title = servo4Layout.findViewById(R.id.servo_title); - servo4Title.setText(getResources().getString(R.string.servo4_title)); - - removeStatusBar(); - - seekArc1.setOnSeekArcChangeListener(new SeekArc.OnSeekArcChangeListener() { - @Override - public void onProgressChanged(SeekArc seekArc, int i, boolean b) { - if (editEnter) { - degreeText1.setText(String.valueOf(degree)); - editEnter = false; - } else { - degreeText1.setText(String.valueOf((int) (i * 3.6))); - } - degreeText1.setCursorVisible(false); - } - - @Override - public void onStartTrackingTouch(SeekArc seekArc) { - - } - - @Override - public void onStopTrackingTouch(SeekArc seekArc) { - - } - }); - - seekArc2.setOnSeekArcChangeListener(new SeekArc.OnSeekArcChangeListener() { - @Override - public void onProgressChanged(SeekArc seekArc, int i, boolean b) { - if (editEnter) { - degreeText2.setText(String.valueOf(degree)); - editEnter = false; - } else { - degreeText2.setText(String.valueOf((int) (i * 3.6))); - } - degreeText2.setCursorVisible(false); - } - - @Override - public void onStartTrackingTouch(SeekArc seekArc) { - - } - - @Override - public void onStopTrackingTouch(SeekArc seekArc) { - - } - }); - - seekArc3.setOnSeekArcChangeListener(new SeekArc.OnSeekArcChangeListener() { - @Override - public void onProgressChanged(SeekArc seekArc, int i, boolean b) { - if (editEnter) { - degreeText3.setText(String.valueOf(degree)); - editEnter = false; - } else { - degreeText3.setText(String.valueOf((int) (i * 3.6))); - } - degreeText3.setCursorVisible(false); - } - - @Override - public void onStartTrackingTouch(SeekArc seekArc) { - - } - - @Override - public void onStopTrackingTouch(SeekArc seekArc) { - - } - }); - - seekArc4.setOnSeekArcChangeListener(new SeekArc.OnSeekArcChangeListener() { - @Override - public void onProgressChanged(SeekArc seekArc, int i, boolean b) { - if (editEnter) { - degreeText4.setText(String.valueOf(degree)); - editEnter = false; - } else { - degreeText4.setText(String.valueOf((int) (i * 3.6))); - } - degreeText4.setCursorVisible(false); - } - - @Override - public void onStartTrackingTouch(SeekArc seekArc) { - - } - - @Override - public void onStopTrackingTouch(SeekArc seekArc) { - - } - }); - - servo1Layout.findViewById(R.id.drag_handle).setOnLongClickListener(new View.OnLongClickListener() { - @Override - public boolean onLongClick(View v) { - View.DragShadowBuilder myShadow = new View.DragShadowBuilder(servo1Layout); - v.startDrag(null, myShadow, servo1Layout, 0); - return true; - } - }); - - servo2Layout.findViewById(R.id.drag_handle).setOnLongClickListener(new View.OnLongClickListener() { - @Override - public boolean onLongClick(View v) { - View.DragShadowBuilder myShadow = new View.DragShadowBuilder(servo2Layout); - v.startDrag(null, myShadow, servo2Layout, 0); - return true; - } - }); - - servo3Layout.findViewById(R.id.drag_handle).setOnLongClickListener(new View.OnLongClickListener() { - @Override - public boolean onLongClick(View v) { - View.DragShadowBuilder myShadow = new View.DragShadowBuilder(servo3Layout); - v.startDrag(null, myShadow, servo3Layout, 0); - return true; - } - }); - - servo4Layout.findViewById(R.id.drag_handle).setOnLongClickListener(new View.OnLongClickListener() { - @Override - public boolean onLongClick(View v) { - View.DragShadowBuilder myShadow = new View.DragShadowBuilder(servo4Layout); - v.startDrag(null, myShadow, servo4Layout, 0); - return true; - } - }); - - degreeText1.setOnEditorActionListener(new TextView.OnEditorActionListener() { - @Override - public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { - removeStatusBar(); - if (actionId == EditorInfo.IME_ACTION_DONE) { - degree = Integer.valueOf(degreeText1.getText().toString()); - if (degree > 360 || degree < 0) { - degreeText1.setText(getResources().getString(R.string.zero)); - seekArc1.setProgress(0); - toastInvalidValueMessage(); - } else { - seekArc1.setProgress((int) (degree / 3.6)); - editEnter = true; - } - } - return false; - } - }); - - degreeText1.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - degreeText1.setCursorVisible(true); - } - }); - - degreeText2.setOnEditorActionListener(new TextView.OnEditorActionListener() { - @Override - public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { - removeStatusBar(); - if (actionId == EditorInfo.IME_ACTION_DONE) { - degree = Integer.valueOf(degreeText2.getText().toString()); - if (degree > 360 || degree < 0) { - degreeText2.setText(getResources().getString(R.string.zero)); - seekArc2.setProgress(0); - toastInvalidValueMessage(); - } else { - seekArc2.setProgress((int) (degree / 3.6)); - editEnter = true; - } - } - return false; - } - }); - - degreeText2.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - degreeText2.setCursorVisible(true); - } - }); - - degreeText3.setOnEditorActionListener(new TextView.OnEditorActionListener() { - @Override - public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { - removeStatusBar(); - if (actionId == EditorInfo.IME_ACTION_DONE) { - degree = Integer.parseInt(degreeText3.getText().toString()); - if (degree > 360 || degree < 0) { - degreeText3.setText(getResources().getString(R.string.zero)); - seekArc3.setProgress(0); - toastInvalidValueMessage(); - } else { - seekArc3.setProgress((int) (degree / 3.6)); - editEnter = true; - } - } - return false; - } - }); - - degreeText3.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - degreeText3.setCursorVisible(true); - } - }); - - degreeText4.setOnEditorActionListener(new TextView.OnEditorActionListener() { - @Override - public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { - removeStatusBar(); - if (actionId == EditorInfo.IME_ACTION_DONE) { - degree = Integer.valueOf(degreeText4.getText().toString()); - if (degree > 360 || degree < 0) { - degreeText4.setText(getResources().getString(R.string.zero)); - seekArc4.setProgress(0); - toastInvalidValueMessage(); - } else { - seekArc4.setProgress((int) (degree / 3.6)); - editEnter = true; - } - } - return false; - } - }); - - degreeText4.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - degreeText4.setCursorVisible(true); - } - }); - - timeIndicatorLayout = findViewById(R.id.time_indicator); - timeIndicatorParams = new LinearLayout.LayoutParams(screen_width / 6 - 2, 12); - timeIndicatorParams.setMarginStart(3); - timeIndicatorLayout.setLayoutParams(timeIndicatorParams); - - timeLine = new CountDownTimer(60000, 1000) { - @Override - public void onTick(long millisUntilFinished) { - timeIndicatorParams.setMarginStart(timeIndicatorParams - .getMarginStart() + screen_width / 6); - timeIndicatorLayout.setLayoutParams(timeIndicatorParams); - scrollView.smoothScrollBy(screen_width / 6, 0); - String deg1 = ((TextView) servo1TimeLine.getChildAt(timelinePosition).findViewById(R.id.timeline_box_degree_text)).getText().toString(); - deg1 = (deg1.length() > 0) ? deg1.substring(0, deg1.length() - 1) : getResources().getString(R.string.zero); - String deg2 = ((TextView) servo2TimeLine.getChildAt(timelinePosition).findViewById(R.id.timeline_box_degree_text)).getText().toString(); - deg2 = (deg2.length() > 0) ? deg2.substring(0, deg2.length() - 1) : getResources().getString(R.string.zero); - String deg3 = ((TextView) servo3TimeLine.getChildAt(timelinePosition).findViewById(R.id.timeline_box_degree_text)).getText().toString(); - deg3 = (deg3.length() > 0) ? deg3.substring(0, deg3.length() - 1) : getResources().getString(R.string.zero); - String deg4 = ((TextView) servo4TimeLine.getChildAt(timelinePosition).findViewById(R.id.timeline_box_degree_text)).getText().toString(); - deg4 = (deg4.length() > 0) ? deg4.substring(0, deg4.length() - 1) : getResources().getString(R.string.zero); - if (scienceLab.isConnected()) { - scienceLab.servo4(Double.valueOf(deg1), Double.valueOf(deg2), Double.valueOf(deg3), Double.valueOf(deg4)); - } - timelinePosition++; - } - - @Override - public void onFinish() { - timeIndicatorLayout.setLayoutParams(timeIndicatorParams); - cancel(); - } - }; - - if (getIntent().getExtras() != null && getIntent().getExtras().getBoolean(KEY_LOG)) { - recordedServoData = LocalDataLog.with() - .getBlockOfServoRecords(getIntent().getExtras().getLong(DATA_BLOCK)); - setReceivedData(); - } - - } - - private void toastInvalidValueMessage() { - CustomSnackBar.showSnackBar(findViewById(android.R.id.content), - getString(R.string.invalid_servo_value), null, null, Snackbar.LENGTH_SHORT); - } - - private void setReceivedData() { - final List servoDataList = new ArrayList<>(recordedServoData); - for (int i = 0; i < servoDataList.size(); i++) { - ServoData servoData = servoDataList.get(i); - ((TextView) servo1TimeLine.getChildAt(i).findViewById(R.id.timeline_box_degree_text)).setText(servoData.getDegree1() + getResources().getString(R.string.robotic_arm_degree_symbol)); - ((TextView) servo2TimeLine.getChildAt(i).findViewById(R.id.timeline_box_degree_text)).setText(servoData.getDegree2() + getResources().getString(R.string.robotic_arm_degree_symbol)); - ((TextView) servo3TimeLine.getChildAt(i).findViewById(R.id.timeline_box_degree_text)).setText(servoData.getDegree3() + getResources().getString(R.string.robotic_arm_degree_symbol)); - ((TextView) servo4TimeLine.getChildAt(i).findViewById(R.id.timeline_box_degree_text)).setText(servoData.getDegree4() + getResources().getString(R.string.robotic_arm_degree_symbol)); - } - } - - private void saveTimeline() { - long block = System.currentTimeMillis(); - servoCSVLogger.prepareLogFile(); - servoCSVLogger.writeMetaData(getResources().getString(R.string.robotic_arm)); - long timestamp; - recordSensorDataBlockID(new SensorDataBlock(block, getString(R.string.robotic_arm))); - String degree1, degree2, degree3, degree4; - double lat, lon; - servoCSVLogger.writeCSVFile(CSV_HEADER); - for (int i = 0; i < 60; i++) { - timestamp = System.currentTimeMillis(); - degree1 = degree2 = degree3 = degree4 = getResources().getString(R.string.zero); - if (((TextView) servo1TimeLine.getChildAt(i).findViewById(R.id.timeline_box_degree_text)).getText().length() > 0) { - degree1 = ((TextView) servo1TimeLine.getChildAt(i).findViewById(R.id.timeline_box_degree_text)).getText().toString(); - degree1 = degree1.substring(0, degree1.length() - 1); - } - if (((TextView) servo2TimeLine.getChildAt(i).findViewById(R.id.timeline_box_degree_text)).getText().length() > 0) { - degree2 = ((TextView) servo2TimeLine.getChildAt(i).findViewById(R.id.timeline_box_degree_text)).getText().toString(); - degree2 = degree2.substring(0, degree2.length() - 1); - } - if (((TextView) servo3TimeLine.getChildAt(i).findViewById(R.id.timeline_box_degree_text)).getText().length() > 0) { - degree3 = ((TextView) servo3TimeLine.getChildAt(i).findViewById(R.id.timeline_box_degree_text)).getText().toString(); - degree3 = degree3.substring(0, degree3.length() - 1); - } - if (((TextView) servo4TimeLine.getChildAt(i).findViewById(R.id.timeline_box_degree_text)).getText().length() > 0) { - degree4 = ((TextView) servo4TimeLine.getChildAt(i).findViewById(R.id.timeline_box_degree_text)).getText().toString(); - degree4 = degree4.substring(0, degree4.length() - 1); - } - if (gpsLogger.isGPSEnabled()) { - Location location = gpsLogger.getDeviceLocation(); - if (location != null) { - lat = location.getLatitude(); - lon = location.getLongitude(); - } else { - lat = 0.0; - lon = 0.0; - } - } else { - lat = 0.0; - lon = 0.0; - } - recordSensorData(new ServoData(timestamp, block, degree1, degree2, degree3, degree4, lat, lon)); - servoCSVLogger.writeCSVFile(new CSVDataLine().add(timestamp).add(CSVLogger.FILE_NAME_FORMAT.format(new Date(timestamp))).add(degree1).add(degree2).add(degree3).add(degree4).add(lat).add(lon)); - } - CustomSnackBar.showSnackBar(findViewById(R.id.robotic_arm_coordinator), - getString(R.string.csv_store_text) + " " + servoCSVLogger.getCurrentFilePath() - , getString(R.string.open), new View.OnClickListener() { - @Override - public void onClick(View view) { - Intent intent = new Intent(RoboticArmActivity.this, DataLoggerActivity.class); - intent.putExtra(DataLoggerActivity.CALLER_ACTIVITY, getResources().getString(R.string.robotic_arm)); - startActivity(intent); - } - }, Snackbar.LENGTH_SHORT); - } - - private final View.OnDragListener servo1DragListener = new View.OnDragListener() { - @Override - public boolean onDrag(View v, DragEvent event) { - if (event.getAction() == DragEvent.ACTION_DRAG_ENTERED) { - View view = (View) event.getLocalState(); - TextView text = view.findViewById(R.id.degreeText); - if (view.getId() == R.id.servo_1) { - ((TextView) v.findViewById(R.id.timeline_box_degree_text)).setText(text.getText().toString()); - } - } - return true; - } - }; - private final View.OnDragListener servo2DragListener = new View.OnDragListener() { - @Override - public boolean onDrag(View v, DragEvent event) { - if (event.getAction() == DragEvent.ACTION_DRAG_ENTERED) { - View view = (View) event.getLocalState(); - TextView text = view.findViewById(R.id.degreeText); - if (view.getId() == R.id.servo_2) { - ((TextView) v.findViewById(R.id.timeline_box_degree_text)).setText(text.getText().toString()); - } - } - return true; - } - }; - private final View.OnDragListener servo3DragListener = new View.OnDragListener() { - @Override - public boolean onDrag(View v, DragEvent event) { - if (event.getAction() == DragEvent.ACTION_DRAG_ENTERED) { - View view = (View) event.getLocalState(); - TextView text = view.findViewById(R.id.degreeText); - if (view.getId() == R.id.servo_3) { - ((TextView) v.findViewById(R.id.timeline_box_degree_text)).setText(text.getText().toString()); - } - } - return true; - } - }; - private final View.OnDragListener servo4DragListener = new View.OnDragListener() { - @Override - public boolean onDrag(View v, DragEvent event) { - if (event.getAction() == DragEvent.ACTION_DRAG_ENTERED) { - View view = (View) event.getLocalState(); - TextView text = view.findViewById(R.id.degreeText); - if (view.getId() == R.id.servo_4) { - ((TextView) v.findViewById(R.id.timeline_box_degree_text)).setText(text.getText().toString()); - } - } - return true; - } - }; - - @Override - public boolean onCreateOptionsMenu(Menu menu) { - getMenuInflater().inflate(R.menu.robotic_arm_menu, menu); - return true; - } - - @Override - public boolean onPrepareOptionsMenu(Menu menu) { - playMenu = menu.findItem(R.id.play_data); - return true; - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case android.R.id.home: - finish(); - break; - case R.id.play_data: - if (isPlaying) { - isPlaying = false; - item.setIcon(ResourcesCompat.getDrawable(getResources(), R.drawable.ic_play_arrow_white_24dp, null)); - timeLine.onFinish(); - } else { - isPlaying = true; - item.setIcon(ResourcesCompat.getDrawable(getResources(), R.drawable.ic_pause_white_24dp, null)); - timeLine.start(); - } - break; - case R.id.stop_data: - timeLine.cancel(); - timeIndicatorParams.setMarginStart(3); - timeIndicatorLayout.setLayoutParams(timeIndicatorParams); - scrollView.fullScroll(HorizontalScrollView.FOCUS_LEFT); - isPlaying = false; - playMenu.setIcon(ResourcesCompat.getDrawable(getResources(), R.drawable.ic_play_arrow_white_24dp, null)); - timelinePosition = 0; - break; - case R.id.show_guide: - toggleGuide(); - break; - case R.id.show_logged_data: - Intent intent = new Intent(RoboticArmActivity.this, DataLoggerActivity.class); - intent.putExtra(DataLoggerActivity.CALLER_ACTIVITY, getResources().getString(R.string.robotic_arm)); - startActivity(intent); - break; - case R.id.save_data: - saveTimeline(); - break; - default: - break; - } - return true; - } - - @Override - protected void onResume() { - super.onResume(); - removeStatusBar(); - } - - private void removeStatusBar() { - if (Build.VERSION.SDK_INT < 16) { - getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, - WindowManager.LayoutParams.FLAG_FULLSCREEN); - } else { - View decorView = getWindow().getDecorView(); - - decorView.setSystemUiVisibility((View.SYSTEM_UI_FLAG_LAYOUT_STABLE - | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION - | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN - | View.SYSTEM_UI_FLAG_FULLSCREEN - | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION - | View.SYSTEM_UI_FLAG_FULLSCREEN - | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY)); - } - } - - public void recordSensorDataBlockID(SensorDataBlock block) { - realm.beginTransaction(); - realm.copyToRealm(block); - realm.commitTransaction(); - } - - public void recordSensorData(RealmObject sensorData) { - realm.beginTransaction(); - realm.copyToRealm((ServoData) sensorData); - realm.commitTransaction(); - } -} diff --git a/app/src/main/java/io/pslab/activity/SensorActivity.java b/app/src/main/java/io/pslab/activity/SensorActivity.java deleted file mode 100644 index 5e9021968..000000000 --- a/app/src/main/java/io/pslab/activity/SensorActivity.java +++ /dev/null @@ -1,229 +0,0 @@ -package io.pslab.activity; - -import android.content.Intent; -import android.os.AsyncTask; -import android.os.Bundle; -import android.view.Menu; -import android.view.MenuItem; -import android.widget.ArrayAdapter; -import android.widget.Button; -import android.widget.ListView; -import android.widget.TextView; - -import androidx.annotation.Nullable; -import androidx.appcompat.app.ActionBar; -import androidx.appcompat.widget.Toolbar; - -import com.google.android.material.snackbar.Snackbar; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -import io.pslab.R; -import io.pslab.activity.guide.GuideActivity; -import io.pslab.communication.ScienceLab; -import io.pslab.communication.peripherals.I2C; -import io.pslab.others.CustomSnackBar; -import io.pslab.others.ScienceLabCommon; -import io.pslab.sensors.SensorADS1115; -import io.pslab.sensors.SensorAPDS9960; -import io.pslab.sensors.SensorBMP180; -import io.pslab.sensors.SensorCCS811; -import io.pslab.sensors.SensorHMC5883L; -import io.pslab.sensors.SensorMLX90614; -import io.pslab.sensors.SensorMPU6050; -import io.pslab.sensors.SensorMPU925X; -import io.pslab.sensors.SensorSHT21; -import io.pslab.sensors.SensorTSL2561; -import io.pslab.sensors.SensorVL53L0X; - -/** - * Created by asitava on 18/6/17. - */ - -public class SensorActivity extends GuideActivity { - - private I2C i2c; - private ScienceLab scienceLab; - private final Map sensorAddr = new LinkedHashMap<>(); - private final List dataAddress = new ArrayList<>(); - private final List dataName = new ArrayList<>(); - private ArrayAdapter adapter; - private ListView lvSensor; - private TextView tvSensorScan; - private Button buttonSensorAutoScan; - - public SensorActivity() { - super(R.layout.sensor_main); - } - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - scienceLab = ScienceLabCommon.scienceLab; - - Toolbar toolbar = findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - final ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setTitle(R.string.sensors); - actionBar.setDisplayHomeAsUpEnabled(true); - } - - i2c = scienceLab.i2c; - sensorAddr.put(0x48, "ADS1115"); - sensorAddr.put(0x77, "BMP180"); - sensorAddr.put(0x5A, "MLX90614"); - sensorAddr.put(0x1E, "HMC5883L"); - sensorAddr.put(0x68, "MPU6050"); - sensorAddr.put(0x40, "SHT21"); - sensorAddr.put(0x39, "TSL2561"); - sensorAddr.put(0x69, "MPU925x"); - sensorAddr.put(0x29, "VL53L0X"); - sensorAddr.put(0x5A, "CCS811"); - sensorAddr.put(0x39, "APDS9960"); - - adapter = new ArrayAdapter<>(getApplication(), R.layout.sensor_list_item, R.id.tv_sensor_list_item, dataName); - - buttonSensorAutoScan = findViewById(R.id.button_sensor_autoscan); - tvSensorScan = findViewById(R.id.tv_sensor_scan); - tvSensorScan.setText(getResources().getString(R.string.use_autoscan)); - lvSensor = findViewById(R.id.lv_sensor); - lvSensor.setAdapter(adapter); - - buttonSensorAutoScan.setOnClickListener(v -> { - buttonSensorAutoScan.setClickable(false); - tvSensorScan.setText(getResources().getString(R.string.scanning)); - new PopulateSensors().execute(); - }); - lvSensor.setOnItemClickListener((parent, view, position, id) -> { - String itemValue = (String) lvSensor.getItemAtPosition(position); - Intent intent; - switch (itemValue) { - case "ADS1115": - intent = new Intent(getApplication(), SensorADS1115.class); - startActivity(intent); - break; - case "BMP180": - intent = new Intent(getApplication(), SensorBMP180.class); - startActivity(intent); - break; - case "MLX90614": - intent = new Intent(getApplication(), SensorMLX90614.class); - startActivity(intent); - break; - case "HMC5883L": - intent = new Intent(getApplication(), SensorHMC5883L.class); - startActivity(intent); - break; - case "MPU6050": - intent = new Intent(getApplication(), SensorMPU6050.class); - startActivity(intent); - break; - case "SHT21": - intent = new Intent(getApplication(), SensorSHT21.class); - startActivity(intent); - break; - case "TSL2561": - intent = new Intent(getApplication(), SensorTSL2561.class); - startActivity(intent); - break; - case "MPU925x": - intent = new Intent(getApplication(), SensorMPU925X.class); - startActivity(intent); - break; - case "VL53L0X": - intent = new Intent(getApplication(), SensorVL53L0X.class); - startActivity(intent); - break; - case "CCS811": - intent = new Intent(getApplication(), SensorCCS811.class); - startActivity(intent); - break; - case "APDS9960": - intent = new Intent(getApplication(), SensorAPDS9960.class); - startActivity(intent); - break; - default: - CustomSnackBar.showSnackBar(findViewById(android.R.id.content), - "Sensor Not Supported", null, null, Snackbar.LENGTH_SHORT); - } - }); - } - - private class PopulateSensors extends AsyncTask { - private List data; - - @Override - protected Void doInBackground(Void... voids) { - data = new ArrayList<>(); - dataName.clear(); - dataAddress.clear(); - if (scienceLab.isConnected()) { - try { - data = i2c.scan(null); - } catch (IOException | NullPointerException e) { - e.printStackTrace(); - } - } - return null; - } - - @Override - protected void onPostExecute(Void aVoid) { - super.onPostExecute(aVoid); - - StringBuilder tvData = new StringBuilder(); - if (data != null) { - for (Integer myInt : data) { - if (myInt != null && sensorAddr.get(myInt) != null) { - dataAddress.add(String.valueOf(myInt)); - } - } - - for (final String s : dataAddress) { - tvData.append(s).append(":").append(sensorAddr.get(Integer.parseInt(s))).append("\n"); - } - - } else { - tvData.append(getResources().getString(R.string.sensor_not_connected)); - } - - for (int key : sensorAddr.keySet()) { - dataName.add(sensorAddr.get(key)); - } - - if (scienceLab.isConnected()) { - tvSensorScan.setText(tvData); - } else { - tvSensorScan.setText(getString(R.string.not_connected)); - } - adapter.notifyDataSetChanged(); - buttonSensorAutoScan.setClickable(true); - } - } - - @Override - public boolean onCreateOptionsMenu(Menu menu) { - getMenuInflater().inflate(R.menu.sensor_menu, menu); - return true; - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case android.R.id.home: - finish(); - break; - case R.id.show_guide: - toggleGuide(); - break; - default: - break; - } - return true; - } -} diff --git a/app/src/main/java/io/pslab/activity/SensorDataLoggerActivity.java b/app/src/main/java/io/pslab/activity/SensorDataLoggerActivity.java deleted file mode 100644 index d71c61681..000000000 --- a/app/src/main/java/io/pslab/activity/SensorDataLoggerActivity.java +++ /dev/null @@ -1,334 +0,0 @@ -package io.pslab.activity; - -import android.Manifest; -import android.content.Context; -import android.content.Intent; -import android.content.pm.PackageManager; -import android.graphics.Color; -import android.os.AsyncTask; -import android.os.Bundle; -import android.os.Handler; -import android.os.Looper; -import android.util.Log; -import android.view.Menu; -import android.view.MenuItem; -import android.view.View; -import android.widget.AdapterView; -import android.widget.ArrayAdapter; -import android.widget.FrameLayout; -import android.widget.ListView; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.appcompat.app.ActionBar; -import androidx.appcompat.app.AppCompatActivity; -import androidx.appcompat.widget.Toolbar; -import androidx.coordinatorlayout.widget.CoordinatorLayout; -import androidx.core.app.ActivityCompat; -import androidx.core.content.ContextCompat; - -import com.afollestad.materialdialogs.DialogAction; -import com.afollestad.materialdialogs.MaterialDialog; -import com.google.android.material.floatingactionbutton.FloatingActionButton; -import com.google.android.material.snackbar.Snackbar; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.LinkedHashMap; - -import butterknife.BindView; -import butterknife.ButterKnife; -import io.pslab.DataFormatter; -import io.pslab.R; -import io.pslab.communication.ScienceLab; -import io.pslab.communication.peripherals.I2C; -import io.pslab.communication.sensors.MPU6050; -import io.pslab.models.DataMPU6050; -import io.pslab.models.SensorLogged; -import io.pslab.others.CustomSnackBar; -import io.pslab.others.ScienceLabCommon; -import io.realm.Realm; -import io.realm.RealmResults; - - -public class SensorDataLoggerActivity extends AppCompatActivity { - - private static final int WRITE_EXTERNAL_STORAGE_REQUEST = 1; - private static boolean hasPermission = false; - private static boolean isLogging = false; - private final LinkedHashMap sensorAddress = new LinkedHashMap<>(); - private final ScienceLab scienceLab = ScienceLabCommon.scienceLab; - private final I2C i2c = scienceLab.i2c; - private final ArrayList sensorList = new ArrayList<>(); - private final ArrayList mpu6050DataList = new ArrayList<>(); - private Context context; - private Thread loggingThread; - private volatile boolean loggingThreadRunning = false; - private final Object lock = new Object(); - private View customView; - private Realm realm; - @BindView(R.id.toolbar) - Toolbar toolbar; - @BindView(R.id.fab) - FloatingActionButton scanFab; - @BindView(R.id.coordinator_layout) - CoordinatorLayout coordinatorLayout; - @BindView(R.id.layout_container) - FrameLayout container; - - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_data_sensor_logger); - ButterKnife.bind(this); - if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { - ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, WRITE_EXTERNAL_STORAGE_REQUEST); - } else { - hasPermission = true; - } - setSupportActionBar(toolbar); - final ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setTitle("Sensor Data Logger"); - } - context = this; - realm = Realm.getDefaultInstance(); - scanFab.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (scienceLab.isConnected()) { - Runnable detectSensors = new Runnable() { - @Override - public void run() { - try { - ArrayList scanResult = i2c.scan(null); - final ArrayList listData = new ArrayList(); - if (scanResult != null) { - for (Integer temp : scanResult) { - if (sensorAddress.get(temp) != null) { - listData.add(sensorAddress.get(temp) + " : " + temp); - sensorList.add(sensorAddress.get(temp)); - } - } - } - new Handler(Looper.getMainLooper()).post(new Runnable() { - @Override - public void run() { - ListView sensorList = new ListView(context); - ArrayAdapter adapter = new ArrayAdapter(context, android.R.layout.simple_list_item_1, listData); - sensorList.setAdapter(adapter); - container.addView(sensorList); - sensorList.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - handleClick(position); - } - }); - } - }); - } catch (IOException e) { - e.printStackTrace(); - } - } - }; - new Thread(detectSensors).start(); - } else { - Snackbar snackbar = Snackbar.make(coordinatorLayout, "Device not connected", Snackbar.LENGTH_SHORT); - View snackBarView = snackbar.getView(); - TextView snackBarTextView = snackBarView.findViewById(R.id.snackbar_text); - snackBarTextView.setTextColor(Color.YELLOW); - snackbar.show(); - } - } - }); - sensorAddress.put(0x60, "MCP4728"); - sensorAddress.put(0x48, "ADS1115"); - sensorAddress.put(0x23, "BH1750"); - sensorAddress.put(0x77, "BMP180"); - sensorAddress.put(0x5A, "MLX90614"); - sensorAddress.put(0x1E, "HMC5883L"); - sensorAddress.put(0x68, "MPU6050"); - sensorAddress.put(0x40, "SHT21"); - sensorAddress.put(0x39, "TSL2561"); - } - - private void handleClick(int position) { - String sensor = sensorList.get(position); - CustomSnackBar.showSnackBar(findViewById(android.R.id.content), - sensor, null, null, Snackbar.LENGTH_SHORT); - switch (sensor) { - case "MPU6050": - MaterialDialog dialog = new MaterialDialog.Builder(context) - .customView(R.layout.sensor_mpu6050_data_card, true) - .positiveText(getResources().getString(R.string.start_logging)) - .onPositive(new MaterialDialog.SingleButtonCallback() { - @Override - public void onClick(@NonNull MaterialDialog dialog, @NonNull final DialogAction which) { - if (!isLogging) { - isLogging = true; - loggingThreadRunning = true; - dialog.getActionButton(DialogAction.POSITIVE).setText(getResources().getString(R.string.stop_logging)); - Runnable loggingRunnable = new Runnable() { - @Override - public void run() { - try { - MPU6050 sensorMPU6050 = new MPU6050(i2c, scienceLab); - while (loggingThreadRunning) { - TaskMPU6050 taskMPU6050 = new TaskMPU6050(sensorMPU6050); - taskMPU6050.execute(); - synchronized (lock) { - try { - lock.wait(); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - Thread.sleep(500); - } - } catch (IOException | InterruptedException e) { - e.printStackTrace(); - } - } - }; - loggingThread = new Thread(loggingRunnable); - loggingThread.start(); - } else { - isLogging = false; - dialog.getActionButton(DialogAction.POSITIVE).setText(getResources().getString(R.string.start_logging)); - loggingThreadRunning = false; - } - } - }) - .negativeText(getResources().getString(R.string.cancel)) - .onNegative(new MaterialDialog.SingleButtonCallback() { - @Override - public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) { - if (isLogging) { - // stop and discard logging gracefully - } - dialog.dismiss(); - } - }) - .neutralText(getResources().getString(R.string.save_data)) - .onNeutral(new MaterialDialog.SingleButtonCallback() { - @Override - public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) { - realm.beginTransaction(); - long trial; - Number trialNumber = realm.where(DataMPU6050.class).max("trial"); - if (trialNumber == null) { - trial = 0; - } else { - trial = (long) trialNumber + 1; - } - for (int i = 0; i < mpu6050DataList.size(); i++) { - DataMPU6050 tempObject = mpu6050DataList.get(i); - tempObject.setTrial(trial); - tempObject.setId(i); - realm.copyToRealm(tempObject); - } - RealmResults results = realm.where(SensorLogged.class).equalTo("sensor", "MPU6050").findAll(); - if (results.size() == 0) { - SensorLogged sensorLogged = new SensorLogged("MPU6050"); - realm.copyToRealm(sensorLogged); - } - realm.commitTransaction(); - CustomSnackBar.showSnackBar(findViewById(android.R.id.content), - "Data Logged Successfully", null, null, Snackbar.LENGTH_SHORT); - dialog.dismiss(); - } - }) - .autoDismiss(false) - .build(); - dialog.show(); - customView = dialog.getCustomView(); - break; - } - } - - private class TaskMPU6050 extends AsyncTask { - - private final MPU6050 sensorMPU6050; - private ArrayList dataMPU6050 = new ArrayList<>(); - - TaskMPU6050(MPU6050 mpu6050) { - this.sensorMPU6050 = mpu6050; - } - - @Override - protected Void doInBackground(Void... params) { - try { - dataMPU6050 = sensorMPU6050.getRaw(); - } catch (IOException e) { - e.printStackTrace(); - } - return null; - } - - @Override - protected void onPostExecute(Void aVoid) { - super.onPostExecute(aVoid); - TextView tvAx = customView.findViewById(R.id.tv_sensor_mpu6050_ax); - TextView tvAy = customView.findViewById(R.id.tv_sensor_mpu6050_ay); - TextView tvAz = customView.findViewById(R.id.tv_sensor_mpu6050_az); - TextView tvGx = customView.findViewById(R.id.tv_sensor_mpu6050_gx); - TextView tvGy = customView.findViewById(R.id.tv_sensor_mpu6050_gy); - TextView tvGz = customView.findViewById(R.id.tv_sensor_mpu6050_gz); - TextView tvTemp = customView.findViewById(R.id.tv_sensor_mpu6050_temp); - tvAx.setText(DataFormatter.formatDouble(dataMPU6050.get(0), DataFormatter.HIGH_PRECISION_FORMAT)); - tvAx.setText(DataFormatter.formatDouble(dataMPU6050.get(1), DataFormatter.HIGH_PRECISION_FORMAT)); - tvAz.setText(DataFormatter.formatDouble(dataMPU6050.get(2), DataFormatter.HIGH_PRECISION_FORMAT)); - tvAz.setText(DataFormatter.formatDouble(dataMPU6050.get(4), DataFormatter.HIGH_PRECISION_FORMAT)); - tvAz.setText(DataFormatter.formatDouble(dataMPU6050.get(5), DataFormatter.HIGH_PRECISION_FORMAT)); - tvAz.setText(DataFormatter.formatDouble(dataMPU6050.get(6), DataFormatter.HIGH_PRECISION_FORMAT)); - tvAz.setText(DataFormatter.formatDouble(dataMPU6050.get(3), DataFormatter.HIGH_PRECISION_FORMAT)); - DataMPU6050 tempObject = new DataMPU6050(dataMPU6050.get(0), dataMPU6050.get(1), dataMPU6050.get(2), - dataMPU6050.get(4), dataMPU6050.get(5), dataMPU6050.get(6), dataMPU6050.get(3)); - mpu6050DataList.add(tempObject); - Log.v("MPU6050", mpu6050DataList.size() + ""); - synchronized (lock) { - lock.notify(); - } - } - } - - @Override - public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { - super.onRequestPermissionsResult(requestCode, permissions, grantResults); - if (requestCode == WRITE_EXTERNAL_STORAGE_REQUEST) { - if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { - hasPermission = true; - } else { - hasPermission = false; - CustomSnackBar.showSnackBar(findViewById(android.R.id.content), - "Can't log data", null, null, Snackbar.LENGTH_SHORT); - } - } - } - - @Override - public boolean onCreateOptionsMenu(Menu menu) { - getMenuInflater().inflate(R.menu.activity_sensor_data_logger, menu); - return true; - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case R.id.menu_logged_data: - Intent activityLoggedData = new Intent(this, ShowLoggedData.class); - startActivity(activityLoggedData); - break; - default: - // - } - return super.onOptionsItemSelected(item); - } - - @Override - public void onBackPressed() { - finish(); - } -} diff --git a/app/src/main/java/io/pslab/activity/SettingsActivity.java b/app/src/main/java/io/pslab/activity/SettingsActivity.java deleted file mode 100644 index c718484ae..000000000 --- a/app/src/main/java/io/pslab/activity/SettingsActivity.java +++ /dev/null @@ -1,123 +0,0 @@ -package io.pslab.activity; - -import android.content.Intent; -import android.content.SharedPreferences; -import android.content.pm.PackageManager; -import android.os.Bundle; -import android.preference.PreferenceManager; -import android.view.MenuItem; -import android.widget.FrameLayout; - -import androidx.annotation.NonNull; -import androidx.appcompat.app.ActionBar; -import androidx.appcompat.app.AppCompatActivity; -import androidx.appcompat.widget.Toolbar; -import androidx.fragment.app.Fragment; - -import butterknife.BindView; -import butterknife.ButterKnife; -import butterknife.Unbinder; -import io.pslab.R; -import io.pslab.fragment.AccelerometerSettingsFragment; -import io.pslab.fragment.BaroMeterSettingsFragment; -import io.pslab.fragment.CompassSettingsFragment; -import io.pslab.fragment.DustSensorSettingsFragment; -import io.pslab.fragment.GyroscopeSettingsFragment; -import io.pslab.fragment.LuxMeterSettingFragment; -import io.pslab.fragment.MultimeterSettingsFragment; -import io.pslab.fragment.SettingsFragment; -import io.pslab.fragment.SoundmeterSettingsFragment; -import io.pslab.fragment.ThermometerSettingsFragment; -import io.pslab.models.PSLabSensor; -import io.pslab.others.GPSLogger; - - -public class SettingsActivity extends AppCompatActivity { - - @BindView(R.id.setting_toolbar) - Toolbar toolbar; - @BindView(R.id.content) - FrameLayout content; - private Unbinder unBinder; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_settings); - unBinder = ButterKnife.bind(this); - - Intent intent = getIntent(); - String title = intent.getStringExtra("title"); - - setSupportActionBar(toolbar); - final ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setHomeAsUpIndicator(R.drawable.ic_arrow_back_white_24dp); - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setTitle(title); - } - - Fragment fragment; - switch (title) { - case PSLabSensor.LUXMETER_CONFIGURATIONS: - fragment = new LuxMeterSettingFragment(); - break; - case PSLabSensor.BAROMETER_CONFIGURATIONS: - fragment = new BaroMeterSettingsFragment(); - break; - case PSLabSensor.GYROSCOPE_CONFIGURATIONS: - fragment = new GyroscopeSettingsFragment(); - break; - case PSLabSensor.ACCELEROMETER_CONFIGURATIONS: - fragment = new AccelerometerSettingsFragment(); - break; - case PSLabSensor.THERMOMETER_CONFIGURATIONS: - fragment = new ThermometerSettingsFragment(); - break; - case "Multimeter Configurations": - fragment = new MultimeterSettingsFragment(); - break; - case PSLabSensor.COMPASS_CONFIGURATIONS: - fragment = new CompassSettingsFragment(); - break; - case PSLabSensor.DUSTSENSOR_CONFIGURATIONS: - fragment = new DustSensorSettingsFragment(); - break; - case PSLabSensor.SOUNDMETER_CONFIGURATIONS: - fragment = new SoundmeterSettingsFragment(); - break; - default: - fragment = new SettingsFragment(); - break; - } - - if (savedInstanceState == null) { - getSupportFragmentManager().beginTransaction().add(R.id.content, fragment).commit(); - } - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - if (item.getItemId() == android.R.id.home) { - finish(); - } - return super.onOptionsItemSelected(item); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - unBinder.unbind(); - } - - @Override - public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { - super.onRequestPermissionsResult(requestCode, permissions, grantResults); - if (requestCode == GPSLogger.PSLAB_PERMISSION_FOR_MAPS && (grantResults.length <= 0 - || grantResults[0] != PackageManager.PERMISSION_GRANTED)) { - SharedPreferences.Editor editor = PreferenceManager.getDefaultSharedPreferences(getBaseContext()).edit(); - editor.putBoolean(LuxMeterSettingFragment.KEY_INCLUDE_LOCATION, false); - editor.apply(); - } - } -} diff --git a/app/src/main/java/io/pslab/activity/ShowLoggedData.java b/app/src/main/java/io/pslab/activity/ShowLoggedData.java deleted file mode 100644 index 96857cedc..000000000 --- a/app/src/main/java/io/pslab/activity/ShowLoggedData.java +++ /dev/null @@ -1,318 +0,0 @@ -package io.pslab.activity; - -import android.content.Context; -import android.content.SharedPreferences; -import android.os.Bundle; -import android.os.Environment; -import android.preference.PreferenceManager; -import android.view.Menu; -import android.view.MenuItem; -import android.view.View; -import android.widget.AdapterView; -import android.widget.ArrayAdapter; -import android.widget.LinearLayout; -import android.widget.ListView; -import android.widget.TextView; - -import androidx.appcompat.app.ActionBar; -import androidx.appcompat.app.AppCompatActivity; -import androidx.appcompat.widget.Toolbar; -import androidx.recyclerview.widget.DefaultItemAnimator; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.afollestad.materialdialogs.MaterialDialog; -import com.google.android.material.snackbar.Snackbar; - -import java.io.File; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.PrintWriter; -import java.util.ArrayList; - -import javax.annotation.Nullable; - -import butterknife.BindView; -import butterknife.ButterKnife; -import io.pslab.R; -import io.pslab.adapters.MPUDataAdapter; -import io.pslab.models.DataMPU6050; -import io.pslab.models.SensorLogged; -import io.pslab.others.CustomSnackBar; -import io.realm.Realm; -import io.realm.RealmResults; - -/** - * Created by viveksb007 on 12/8/17. - * deprecated - */ - -public class ShowLoggedData extends AppCompatActivity { - - - @BindView(R.id.toolbar) - Toolbar toolbar; - @BindView(R.id.layout_container) - LinearLayout linearLayout; - - private Realm realm; - private Context context; - private ListView sensorListView; - private ListView trialListView; - private RecyclerView recyclerView; - private String mSensor; - private String format; - private boolean isRecyclerViewOnStack = false; - private boolean isTrialListViewOnStack = false; - private boolean isSensorListViewOnStack = false; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_show_logged_data); - ButterKnife.bind(this); - setSupportActionBar(toolbar); - realm = Realm.getDefaultInstance(); - context = this; - final ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setTitle(getResources().getString(R.string.sensor_logged_data)); - } - - SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this); - String formatValue = preferences.getString("export_data_format_list", "0"); - if ("0".equals(formatValue)) - format = "txt"; - else - format = "csv"; - - showSensorList(); - } - - private void showSensorList() { - sensorListView = new ListView(this); - linearLayout.addView(sensorListView); - isSensorListViewOnStack = true; - RealmResults results = realm.where(SensorLogged.class).findAll(); - ArrayList sensorList = new ArrayList<>(); - if (results != null) { - for (SensorLogged temp : results) { - sensorList.add(temp.getSensor()); - } - } - ArrayAdapter adapter = new ArrayAdapter(this, - android.R.layout.simple_list_item_1, - sensorList); - sensorListView.setAdapter(adapter); - sensorListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - String sensor = ((TextView) view).getText().toString(); - mSensor = sensor; - showSensorTrialData(sensor); - } - }); - - sensorListView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { - @Override - public boolean onItemLongClick(AdapterView parent, View view, int position, long id) { - final String sensor = ((TextView) view).getText().toString(); - final MaterialDialog dialog = new MaterialDialog.Builder(context) - .title(sensor) - .customView(R.layout.sensor_list_long_click_dailog, false) - .build(); - dialog.show(); - View customView = dialog.getCustomView(); - assert customView != null; - ListView clickOptions = customView.findViewById(R.id.lv_sensor_list_click); - ArrayAdapter arrayAdapter = new ArrayAdapter(context, android.R.layout.simple_list_item_1, getResources().getStringArray(R.array.sensor_click_list)); - clickOptions.setAdapter(arrayAdapter); - - clickOptions.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - switch (position) { - case 0: - // todo : check for permission first - exportCompleteSensorData(sensor); - break; - case 1: - break; - } - dialog.dismiss(); - } - }); - return true; - } - }); - } - - private void exportCompleteSensorData(String sensor) { - File folder = new File(Environment.getExternalStorageDirectory() + File.separator + "PSLab Android"); - boolean success = true; - if (!folder.exists()) { - success = folder.mkdir(); - } - if (success) { - if ("txt".equals(format)) { - FileOutputStream stream = null; - File file; - switch (sensor) { - case "MPU6050": - file = new File(folder, "MPU6050_" + System.currentTimeMillis() + ".txt"); - RealmResults results = realm.where(DataMPU6050.class).findAll(); - try { - stream = new FileOutputStream(file); - for (DataMPU6050 temp : results) { - stream.write((temp.getAx() + " " + temp.getAy() + " " + temp.getAz() + " " + - temp.getGx() + " " + temp.getGy() + " " + temp.getGz() + " " + temp.getTemperature() + "\n").getBytes()); - } - } catch (IOException e) { - e.printStackTrace(); - } finally { - try { - if (stream != null) { - stream.close(); - } - } catch (IOException e) { - e.printStackTrace(); - } - } - CustomSnackBar.showSnackBar(findViewById(android.R.id.content), - "MPU6050 data exported successfully", null, null, Snackbar.LENGTH_SHORT); - break; - } - } else { - File file; - PrintWriter writer; - switch (sensor) { - case "MPU6050": - file = new File(folder, "MPU6050_" + System.currentTimeMillis() + ".csv"); - RealmResults results = realm.where(DataMPU6050.class).findAll(); - try { - writer = new PrintWriter(file); - StringBuilder stringBuilder = new StringBuilder(); - stringBuilder.append("Ax,Ay,Ax,Gx,Gy,Gz,Temperature\n"); - for (DataMPU6050 temp : results) { - stringBuilder.append(temp.getAx()); - stringBuilder.append(','); - stringBuilder.append(temp.getAy()); - stringBuilder.append(','); - stringBuilder.append(temp.getAz()); - stringBuilder.append(','); - stringBuilder.append(temp.getGx()); - stringBuilder.append(','); - stringBuilder.append(temp.getGy()); - stringBuilder.append(','); - stringBuilder.append(temp.getGz()); - stringBuilder.append(','); - stringBuilder.append(temp.getTemperature()); - stringBuilder.append('\n'); - } - writer.write(stringBuilder.toString()); - writer.close(); - } catch (FileNotFoundException e) { - e.printStackTrace(); - } - CustomSnackBar.showSnackBar(findViewById(android.R.id.content), - "MPU6050 data exported successfully", null, null, Snackbar.LENGTH_SHORT); - break; - } - } - } else { - CustomSnackBar.showSnackBar(findViewById(android.R.id.content), - "Can't write to storage", null, null, Snackbar.LENGTH_SHORT); - } - } - - private void showSensorTrialData(final String sensor) { - Number trial; - ArrayList trialList = new ArrayList<>(); - - switch (sensor) { - case "MPU6050": - trial = realm.where(DataMPU6050.class).max("trial"); - if (trial == null) return; - long maxTrials = (long) trial + 1; - for (int i = 0; i < maxTrials; i++) { - trialList.add("Trial #" + (i + 1)); - } - break; - default: - // Todo : Add cases for other sensor - } - - linearLayout.removeView(sensorListView); - isSensorListViewOnStack = false; - trialListView = new ListView(context); - linearLayout.addView(trialListView); - isTrialListViewOnStack = true; - ArrayAdapter adapter = new ArrayAdapter<>(context, android.R.layout.simple_list_item_1, trialList); - trialListView.setAdapter(adapter); - trialListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - populateSensorData(sensor, position); - } - }); - } - - private void populateSensorData(String sensor, long trial) { - linearLayout.removeView(trialListView); - isTrialListViewOnStack = false; - recyclerView = new RecyclerView(this); - linearLayout.addView(recyclerView); - isRecyclerViewOnStack = true; - - switch (sensor) { - case "MPU6050": - RealmResults queryResults = realm.where(DataMPU6050.class).equalTo("trial", trial).findAll(); - MPUDataAdapter mpuDataAdapter = new MPUDataAdapter(queryResults); - RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getApplicationContext()); - recyclerView.setLayoutManager(layoutManager); - recyclerView.setItemAnimator(new DefaultItemAnimator()); - recyclerView.setAdapter(mpuDataAdapter); - break; - default: - // Todo : Add other cases - } - - } - - @Override - public void onBackPressed() { - if (isRecyclerViewOnStack) { - linearLayout.removeView(recyclerView); - isRecyclerViewOnStack = false; - showSensorTrialData(mSensor); - return; - } else if (isTrialListViewOnStack) { - linearLayout.removeView(trialListView); - isTrialListViewOnStack = false; - showSensorList(); - return; - } - super.onBackPressed(); - } - - @Override - public boolean onCreateOptionsMenu(Menu menu) { - getMenuInflater().inflate(R.menu.activity_show_item_logged_data, menu); - return true; - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case R.id.export_logged_data: - // Exporting locally logged data - break; - case android.R.id.home: - onBackPressed(); - break; - } - return super.onOptionsItemSelected(item); - } -} diff --git a/app/src/main/java/io/pslab/activity/SoundMeterActivity.java b/app/src/main/java/io/pslab/activity/SoundMeterActivity.java deleted file mode 100644 index 98d482d2e..000000000 --- a/app/src/main/java/io/pslab/activity/SoundMeterActivity.java +++ /dev/null @@ -1,135 +0,0 @@ -package io.pslab.activity; - -import android.content.SharedPreferences; - -import androidx.appcompat.app.ActionBar; -import androidx.fragment.app.Fragment; -import androidx.preference.PreferenceManager; - -import io.pslab.R; -import io.pslab.fragment.SoundMeterDataFragment; -import io.pslab.fragment.SoundmeterSettingsFragment; -import io.pslab.models.PSLabSensor; -import io.pslab.models.SensorDataBlock; -import io.pslab.models.SoundData; -import io.pslab.others.LocalDataLog; -import io.realm.RealmObject; -import io.realm.RealmResults; - -/** - * @author reckoner1429 - */ -public class SoundMeterActivity extends PSLabSensor { - - private static final String PREF_NAME = "customDialogPreference"; - public RealmResults recordedSoundData; - - @Override - public int getMenu() { - return R.menu.sensor_data_log_menu; - } - - @Override - public SharedPreferences getStateSettings() { - return this.getSharedPreferences(PREF_NAME, MODE_PRIVATE); - } - - @Override - public String getFirstTimeSettingID() { - return "SoundMeterFirstTime"; - } - - @Override - public String getSensorName() { - return getResources().getString(R.string.sound_meter); - } - - @Override - public int getGuideTitle() { - return R.string.sound_meter; - } - - @Override - public int getGuideAbstract() { - return R.string.sound_meter_intro; - } - - @Override - public int getGuideSchematics() { - return R.drawable.bh1750_schematic; - } - - @Override - public int getGuideDescription() { - return R.string.sound_meter_desc; - } - - @Override - public int getGuideExtraContent() { - return 0; - } - - @Override - public void recordSensorDataBlockID(SensorDataBlock categoryData) { - realm.beginTransaction(); - realm.copyToRealm(categoryData); - realm.commitTransaction(); - } - - @Override - public void recordSensorData(RealmObject sensorData) { - realm.beginTransaction(); - realm.copyToRealm((SoundData) sensorData); - realm.commitTransaction(); - } - - @Override - public void stopRecordSensorData() { - LocalDataLog.with().refresh(); - } - - @Override - public Fragment getSensorFragment() { - return SoundMeterDataFragment.newInstance(); - } - - @Override - public void getDataFromDataLogger() { - if (getIntent().getExtras() != null && getIntent().getExtras().getBoolean(KEY_LOG)) { - //playingData = true; - viewingData = true; - recordedSoundData = LocalDataLog.with() - .getBlockOfSoundRecords(getIntent().getExtras().getLong(DATA_BLOCK)); - final SoundData data = recordedSoundData.get(0); - if (data != null) { - final ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - final String title = titleFormat.format(data.getTime()); - actionBar.setTitle(title); - } - } - } - } - - @Override - public boolean sensorFound() { - return true; - } - - /** - * Once settings have been changed, those changes can be captured from onResume method. - * reinstateConfigurations() will update the logs with new settings - */ - @Override - protected void onResume() { - super.onResume(); - reinstateConfigurations(); - } - - private void reinstateConfigurations() { - SharedPreferences soundMeterConfigurations; - soundMeterConfigurations = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); - locationEnabled = soundMeterConfigurations.getBoolean(SoundmeterSettingsFragment.KEY_INCLUDE_LOCATION, true); - SoundMeterDataFragment.setParameters(1d, 100); - } -} diff --git a/app/src/main/java/io/pslab/activity/SplashActivity.java b/app/src/main/java/io/pslab/activity/SplashActivity.java deleted file mode 100644 index 72b9b8274..000000000 --- a/app/src/main/java/io/pslab/activity/SplashActivity.java +++ /dev/null @@ -1,72 +0,0 @@ -package io.pslab.activity; - -import android.Manifest; -import android.content.Intent; -import android.content.pm.PackageManager; -import android.os.Bundle; -import android.os.Handler; -import android.util.Log; -import android.widget.ImageView; -import android.widget.Toast; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; - -import butterknife.ButterKnife; -import io.pslab.R; -import io.pslab.others.PSLabPermission; - -/** - * Created by viveksb007 on 11/3/17. - */ - -public class SplashActivity extends AppCompatActivity { - - private Handler handler; - private Runnable runnable; - private ImageView logo; - private ImageView text; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.splash_screen); - ButterKnife.bind(this); - logo = findViewById(R.id.imageView); - text = findViewById(R.id.PSLabText); - logo.animate().alpha(1f).setDuration(2500); - text.animate().alpha(1f).setDuration(2500); - PSLabPermission psLabPermission = PSLabPermission.getInstance(); - if (psLabPermission.checkPermissions(SplashActivity.this, - PSLabPermission.ALL_PERMISSION)) { - exitSplashScreen(); - } - } - @Override - public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { - super.onRequestPermissionsResult(requestCode, permissions, grantResults); - if(requestCode == PSLabPermission.PERMISSIONS_REQUIRED) { - exitSplashScreen(); - } - } - - @Override - public void onBackPressed() { - super.onBackPressed(); - handler.removeCallbacks(runnable); - } - - private void exitSplashScreen() { - handler = new Handler(); - int SPLASH_TIME_OUT = 2000; - handler.postDelayed(runnable = new Runnable() { - @Override - public void run() { - Intent intent = new Intent(SplashActivity.this, MainActivity.class); - startActivity(intent); - finish(); - } - }, SPLASH_TIME_OUT); - } -} diff --git a/app/src/main/java/io/pslab/activity/ThermometerActivity.java b/app/src/main/java/io/pslab/activity/ThermometerActivity.java deleted file mode 100644 index 036a15939..000000000 --- a/app/src/main/java/io/pslab/activity/ThermometerActivity.java +++ /dev/null @@ -1,144 +0,0 @@ -package io.pslab.activity; - -import android.content.SharedPreferences; -import android.hardware.Sensor; -import android.hardware.SensorManager; - -import androidx.appcompat.app.ActionBar; -import androidx.fragment.app.Fragment; -import androidx.preference.PreferenceManager; - -import io.pslab.R; -import io.pslab.fragment.ThermometerDataFragment; -import io.pslab.fragment.ThermometerSettingsFragment; -import io.pslab.models.PSLabSensor; -import io.pslab.models.SensorDataBlock; -import io.pslab.models.ThermometerData; -import io.pslab.others.LocalDataLog; -import io.realm.RealmObject; -import io.realm.RealmResults; - -public class ThermometerActivity extends PSLabSensor { - - private static final String PREF_NAME = "customDialogPreference"; - public RealmResults recordedThermometerData; - public final String THERMOMETER_MAX_LIMIT = "thermometer_max_limit"; - public final String THERMOMETER_MIN_LIMIT = "thermometer_min_limit"; - - @Override - public int getMenu() { - return R.menu.sensor_data_log_menu; - } - - @Override - public SharedPreferences getStateSettings() { - return this.getSharedPreferences(PREF_NAME, MODE_PRIVATE); - } - - @Override - public String getFirstTimeSettingID() { - return "ThermometerFirstTIme"; - } - - @Override - public String getSensorName() { - return getResources().getString(R.string.thermometer); - } - - @Override - public int getGuideTitle() { - return R.string.thermometer; - } - - @Override - public int getGuideAbstract() { - return R.string.thermometer_bottom_sheet_text; - } - - @Override - public int getGuideSchematics() { - return 0; - } - - @Override - public int getGuideDescription() { - return R.string.thermometer_bottom_sheet_desc; - } - - @Override - public int getGuideExtraContent() { - return 0; - } - - @Override - public void recordSensorDataBlockID(SensorDataBlock block) { - realm.beginTransaction(); - realm.copyToRealm(block); - realm.commitTransaction(); - } - - @Override - public void recordSensorData(RealmObject sensorData) { - realm.beginTransaction(); - realm.copyToRealm((ThermometerData) sensorData); - realm.commitTransaction(); - } - - @Override - public void stopRecordSensorData() { - LocalDataLog.with().refresh(); - } - - @Override - public Fragment getSensorFragment() { - return ThermometerDataFragment.newInstance(); - } - - @Override - public void getDataFromDataLogger() { - if (getIntent().getExtras() != null && getIntent().getExtras().getBoolean(KEY_LOG)) { - viewingData = true; - recordedThermometerData = LocalDataLog.with() - .getBlockOfThermometerRecords(getIntent().getExtras().getLong(DATA_BLOCK)); - final ThermometerData data = recordedThermometerData.get(0); - if (data != null) { - final ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - final String title = titleFormat.format(data.getTime()); - actionBar.setTitle(title); - } - } - } - } - - @Override - public boolean sensorFound() { - SensorManager sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); - return sensorManager.getDefaultSensor(Sensor.TYPE_AMBIENT_TEMPERATURE) != null; - } - - @Override - protected void onResume() { - super.onResume(); - reinstateConfigurations(); - } - - private void reinstateConfigurations() { - SharedPreferences thermometerConfigurations; - thermometerConfigurations = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); - locationEnabled = thermometerConfigurations.getBoolean(ThermometerSettingsFragment.KEY_INCLUDE_LOCATION, true); - ThermometerDataFragment.setParameters( - getValueFromText(thermometerConfigurations.getString(ThermometerSettingsFragment.KEY_UPDATE_PERIOD, "1000"), - 100, 1000), - thermometerConfigurations.getString(ThermometerSettingsFragment.KEY_THERMO_SENSOR_TYPE, "0"), - thermometerConfigurations.getString(ThermometerSettingsFragment.KEY_THERMO_UNIT, "°C")); - } - - private int getValueFromText(String strValue, int lowerBound, int upperBound) { - if (strValue.isEmpty()) return lowerBound; - int value = Integer.parseInt(strValue); - if (value > upperBound) return upperBound; - else if (value < lowerBound) return lowerBound; - else return value; - } -} diff --git a/app/src/main/java/io/pslab/activity/WaveGeneratorActivity.java b/app/src/main/java/io/pslab/activity/WaveGeneratorActivity.java deleted file mode 100644 index bf9b6790f..000000000 --- a/app/src/main/java/io/pslab/activity/WaveGeneratorActivity.java +++ /dev/null @@ -1,1503 +0,0 @@ -package io.pslab.activity; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.content.DialogInterface; -import android.content.Intent; -import android.content.pm.ActivityInfo; -import android.graphics.Color; -import android.graphics.drawable.Drawable; -import android.location.Location; -import android.location.LocationManager; -import android.media.AudioFormat; -import android.media.AudioManager; -import android.media.AudioTrack; -import android.os.AsyncTask; -import android.os.Bundle; -import android.os.Handler; -import android.util.DisplayMetrics; -import android.util.Log; -import android.view.LayoutInflater; -import android.view.Menu; -import android.view.MenuItem; -import android.view.MotionEvent; -import android.view.View; -import android.view.Window; -import android.widget.Button; -import android.widget.ImageButton; -import android.widget.ImageView; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.appcompat.app.ActionBar; -import androidx.appcompat.app.AlertDialog; -import androidx.appcompat.widget.Toolbar; -import androidx.constraintlayout.widget.ConstraintLayout; -import androidx.coordinatorlayout.widget.CoordinatorLayout; -import androidx.core.content.ContextCompat; -import androidx.core.content.res.ResourcesCompat; - -import com.github.mikephil.charting.charts.LineChart; -import com.github.mikephil.charting.components.Legend; -import com.github.mikephil.charting.data.Entry; -import com.github.mikephil.charting.data.LineData; -import com.github.mikephil.charting.data.LineDataSet; -import com.github.mikephil.charting.interfaces.datasets.ILineDataSet; -import com.google.android.material.snackbar.Snackbar; -import com.warkiz.widget.IndicatorSeekBar; -import com.warkiz.widget.OnSeekChangeListener; -import com.warkiz.widget.SeekParams; - -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Objects; -import java.util.Timer; -import java.util.TimerTask; - -import butterknife.BindView; -import butterknife.ButterKnife; -import io.pslab.R; -import io.pslab.activity.guide.GuideActivity; -import io.pslab.communication.ScienceLab; -import io.pslab.models.SensorDataBlock; -import io.pslab.models.WaveGeneratorData; -import io.pslab.others.CSVDataLine; -import io.pslab.others.CSVLogger; -import io.pslab.others.CustomSnackBar; -import io.pslab.others.GPSLogger; -import io.pslab.others.LocalDataLog; -import io.pslab.others.ScienceLabCommon; -import io.pslab.others.WaveGeneratorConstants; -import io.realm.Realm; -import io.realm.RealmObject; -import io.realm.RealmResults; - -public class WaveGeneratorActivity extends GuideActivity { - - //const values - public static final int SIN = 1; - public static final int TRIANGULAR = 2; - public static final int PWM = 3; - private static final CSVDataLine CSV_HEADER = new CSVDataLine() - .add("Timestamp") - .add("DateTime") - .add("Mode") - .add("Wave") - .add("Shape") - .add("Freq") - .add("Phase") - .add("Duty") - .add("lat") - .add("lon"); - private static boolean waveMonSelected; - private final long LONG_CLICK_DELAY = 100; - private final String KEY_LOG = "has_log"; - private final String DATA_BLOCK = "data_block"; - private final String MODE_SQUARE = "Square"; - private final String MODE_PWM = "PWM"; - //waveform monitor - @BindView(R.id.wave_ic_img) - ImageView selectedWaveImg; - @BindView(R.id.wave_mon_select_wave) - TextView selectedWaveText; - @BindView(R.id.wave_freq_value) - TextView waveFreqValue; - @BindView(R.id.wave_phase_value) - TextView wavePhaseValue; - @BindView(R.id.wave_mon_select_prop) - TextView waveMonPropSelect; - @BindView(R.id.wave_mon_select_prop_value) - TextView waveMonPropValueSelect; - //pwm monitor - @BindView(R.id.pwm_ic_img) - ImageView pwmSelectedModeImg; - @BindView(R.id.pwm_mon_mode_select) - TextView pwmMonSelectMode; - @BindView(R.id.pwm_freq_value) - TextView pwmFreqValue; - @BindView(R.id.pwm_phase_value) - TextView pwmPhaseValue; - @BindView(R.id.pwm_duty_value) - TextView pwmDutyValue; - @BindView(R.id.pwm_mon_select_prop) - TextView pwmMonPropSelect; - @BindView(R.id.pwm_mon_select_prop_value) - TextView pwmMonPropSelectValue; - //buttons on waveform panel - @BindView(R.id.ctrl_btn_wave1) - Button btnCtrlWave1; - @BindView(R.id.ctrl_btn_wave2) - Button btnCtrlWave2; - @BindView(R.id.ctrl_btn_freq) - Button btnCtrlFreq; - @BindView(R.id.ctrl_btn_phase) - Button btnCtrlPhase; - @BindView(R.id.ctrl_img_btn_sin) - ImageButton imgBtnSin; - @BindView(R.id.ctrl_img_btn_tri) - ImageButton imgBtnTri; - //buttons on PWM panel - @BindView(R.id.pwm_btn_sq1) - Button btnPwmSq1; - @BindView(R.id.pwm_btn_sq2) - Button btnPwmSq2; - @BindView(R.id.pwm_btn_sq3) - Button btnPwmSq3; - @BindView(R.id.pwm_btn_sq4) - Button btnPwmSq4; - @BindView(R.id.analog_mode_btn) - Button btnAnalogMode; - @BindView(R.id.digital_mode_btn) - Button btnDigitalMode; - @BindView(R.id.pwm_btn_freq) - Button pwmBtnFreq; - @BindView(R.id.pwm_btn_duty) - Button pwmBtnDuty; - @BindView(R.id.pwm_btn_phase) - Button pwmBtnPhase; - //seek bar controls - @BindView(R.id.img_btn_up) - ImageButton imgBtnUp; - @BindView(R.id.img_btn_down) - ImageButton imgBtnDown; - @BindView(R.id.seek_bar_wave_gen) - IndicatorSeekBar seekBar; - @BindView(R.id.wave_phase) - TextView wavePhaseTitle; - @BindView(R.id.btn_produce_sound) - Button btnProduceSound; - ScienceLab scienceLab; - private int leastCount, seekMax, seekMin; - private String unit; - private Timer waveGenCounter; - private final Handler wavegenHandler = new Handler(); - private AlertDialog waveDialog; - private CSVLogger csvLogger; - private WaveConst waveBtnActive, pwmBtnActive, prop_active, digital_mode; - private TextView activePropTv; - private CoordinatorLayout coordinatorLayout; - private Realm realm; - private GPSLogger gpsLogger; - private RealmResults recordedWaveData; - private ConstraintLayout pwmModeLayout; - private ConstraintLayout squareModeLayout; - private RelativeLayout pwmModeControls; - private RelativeLayout squareModeControls; - private LineChart previewChart; - private boolean isPlayingSound = false; - private ProduceSoundTask produceSoundTask; - - private AudioTrack track; - - public WaveGeneratorActivity() { - super(R.layout.activity_wave_generator_main); - } - - @SuppressLint("ClickableViewAccessibility") - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - ButterKnife.bind(this); - - realm = LocalDataLog.with().getRealm(); - gpsLogger = new GPSLogger(this, - (LocationManager) getSystemService(Context.LOCATION_SERVICE)); - - Toolbar toolbar = findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - final ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setTitle(getString(R.string.wave_generator)); - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setDisplayShowHomeEnabled(true); - } - coordinatorLayout = findViewById(R.id.wave_generator_coordinator_layout); - squareModeLayout = findViewById(R.id.square_mode_layout); - pwmModeLayout = findViewById(R.id.pwm_mode_layout); - previewChart = findViewById(R.id.chart_preview); - - waveBtnActive = WaveConst.WAVE1; - pwmBtnActive = WaveConst.SQR1; - squareModeControls = findViewById(R.id.square_mode_controls); - pwmModeControls = findViewById(R.id.pwm_mode_controls); - csvLogger = new CSVLogger(getString(R.string.wave_generator)); - scienceLab = ScienceLabCommon.scienceLab; - seekBar.setSaveEnabled(false); - - if (savedInstanceState != null) { - switch (Objects.requireNonNull(savedInstanceState.getString("digital_mode"))) { - case "SQUARE": - toggleDigitalMode(WaveConst.SQUARE); - break; - case "PWM": - toggleDigitalMode(WaveConst.PWM); - break; - default: - break; - } - switch (Objects.requireNonNull(savedInstanceState.getString("waveBtnActive"))) { - case "WAVE1": - waveMonSelected = true; - selectBtn(WaveConst.WAVE1); - switch (Objects.requireNonNull(savedInstanceState.getString("prop_active"))) { - case "FREQUENCY": - waveMonSelected = true; - prop_active = WaveConst.FREQUENCY; - unit = getString(R.string.unit_hz); - activePropTv = waveFreqValue; - btnCtrlFreq.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded_light, null)); - btnCtrlPhase.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded_light, null)); - break; - case "PHASE": - waveMonSelected = true; - prop_active = WaveConst.PHASE; - unit = getString(R.string.deg_text); - activePropTv = wavePhaseValue; - btnCtrlFreq.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded_light, null)); - btnCtrlPhase.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded_light, null)); - break; - default: - break; - } - break; - case "WAVE2": - waveMonSelected = true; - selectBtn(WaveConst.WAVE2); - switch (Objects.requireNonNull(savedInstanceState.getString("prop_active"))) { - case "FREQUENCY": - waveMonSelected = true; - prop_active = WaveConst.FREQUENCY; - unit = getString(R.string.unit_hz); - activePropTv = waveFreqValue; - btnCtrlFreq.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded_light, null)); - btnCtrlPhase.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded_light, null)); - break; - case "PHASE": - waveMonSelected = true; - prop_active = WaveConst.PHASE; - unit = getString(R.string.deg_text); - activePropTv = wavePhaseValue; - btnCtrlFreq.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded_light, null)); - btnCtrlPhase.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded_light, null)); - break; - default: - break; - } - break; - default: - break; - } - switch (Objects.requireNonNull(savedInstanceState.getString("pwmBtnActive"))) { - case "SQR1": - waveMonSelected = false; - selectBtn(WaveConst.SQR1); - switch (Objects.requireNonNull(savedInstanceState.getString("prop_active"))) { - case "FREQUENCY": - waveMonSelected = false; - prop_active = WaveConst.FREQUENCY; - unit = getString(R.string.unit_hz); - activePropTv = pwmFreqValue; - pwmBtnFreq.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded_light, null)); - pwmBtnPhase.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded_light, null)); - pwmBtnDuty.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded_light, null)); - break; - case "PHASE": - waveMonSelected = false; - prop_active = WaveConst.PHASE; - unit = getString(R.string.deg_text); - activePropTv = pwmPhaseValue; - pwmBtnFreq.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded_light, null)); - pwmBtnPhase.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded_light, null)); - pwmBtnDuty.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded_light, null)); - break; - case "DUTY": - waveMonSelected = false; - prop_active = WaveConst.DUTY; - unit = getString(R.string.unit_percent); - activePropTv = pwmDutyValue; - pwmBtnFreq.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded_light, null)); - pwmBtnPhase.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded_light, null)); - pwmBtnDuty.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded_light, null)); - break; - default: - break; - } - break; - case "SQR2": - selectBtn(WaveConst.SQR2); - switch (Objects.requireNonNull(savedInstanceState.getString("prop_active"))) { - case "FREQUENCY": - waveMonSelected = false; - prop_active = WaveConst.FREQUENCY; - unit = getString(R.string.unit_hz); - activePropTv = pwmFreqValue; - pwmBtnFreq.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded_light, null)); - pwmBtnPhase.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded_light, null)); - pwmBtnDuty.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded_light, null)); - break; - case "PHASE": - waveMonSelected = false; - prop_active = WaveConst.PHASE; - unit = getString(R.string.deg_text); - activePropTv = pwmPhaseValue; - pwmBtnFreq.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded_light, null)); - pwmBtnPhase.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded_light, null)); - pwmBtnDuty.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded_light, null)); - break; - case "DUTY": - waveMonSelected = false; - prop_active = WaveConst.DUTY; - unit = getString(R.string.unit_percent); - activePropTv = pwmDutyValue; - pwmBtnFreq.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded_light, null)); - pwmBtnPhase.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded_light, null)); - pwmBtnDuty.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded_light, null)); - break; - default: - break; - } - break; - case "SQR3": - selectBtn(WaveConst.SQR3); - switch (Objects.requireNonNull(savedInstanceState.getString("prop_active"))) { - case "FREQUENCY": - waveMonSelected = false; - prop_active = WaveConst.FREQUENCY; - unit = getString(R.string.unit_hz); - activePropTv = pwmFreqValue; - pwmBtnFreq.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded_light, null)); - pwmBtnPhase.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded_light, null)); - pwmBtnDuty.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded_light, null)); - break; - case "PHASE": - waveMonSelected = false; - prop_active = WaveConst.PHASE; - unit = getString(R.string.deg_text); - activePropTv = pwmPhaseValue; - pwmBtnFreq.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded_light, null)); - pwmBtnPhase.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded_light, null)); - pwmBtnDuty.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded_light, null)); - break; - case "DUTY": - waveMonSelected = false; - prop_active = WaveConst.DUTY; - unit = getString(R.string.unit_percent); - activePropTv = pwmDutyValue; - pwmBtnFreq.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded_light, null)); - pwmBtnPhase.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded_light, null)); - pwmBtnDuty.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded_light, null)); - break; - default: - break; - } - break; - case "SQR4": - selectBtn(WaveConst.SQR4); - switch (Objects.requireNonNull(savedInstanceState.getString("prop_active"))) { - case "FREQUENCY": - waveMonSelected = false; - prop_active = WaveConst.FREQUENCY; - unit = getString(R.string.unit_hz); - activePropTv = pwmFreqValue; - pwmBtnFreq.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded_light, null)); - pwmBtnPhase.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded_light, null)); - pwmBtnDuty.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded_light, null)); - break; - case "PHASE": - waveMonSelected = false; - prop_active = WaveConst.PHASE; - unit = getString(R.string.deg_text); - activePropTv = pwmPhaseValue; - pwmBtnFreq.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded_light, null)); - pwmBtnPhase.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded_light, null)); - pwmBtnDuty.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded_light, null)); - break; - case "DUTY": - waveMonSelected = false; - prop_active = WaveConst.DUTY; - unit = getString(R.string.unit_percent); - activePropTv = pwmDutyValue; - pwmBtnFreq.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded_light, null)); - pwmBtnPhase.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded_light, null)); - pwmBtnDuty.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded_light, null)); - break; - default: - break; - } - break; - default: - break; - } - } else { - enableInitialState(); - } - waveDialog = createIntentDialog(); - - //wave panel - btnCtrlWave1.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - if (!waveBtnActive.equals(WaveConst.WAVE1)) { - waveMonSelected = true; - selectBtn(WaveConst.WAVE1); - } - } - }); - btnCtrlWave2.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - if (!waveBtnActive.equals(WaveConst.WAVE2)) { - waveMonSelected = true; - selectBtn(WaveConst.WAVE2); - } - } - }); - imgBtnSin.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - selectWaveform(SIN); - } - }); - - imgBtnTri.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - selectWaveform(TRIANGULAR); - } - }); - - btnCtrlFreq.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - waveMonSelected = true; - prop_active = WaveConst.FREQUENCY; - unit = getString(R.string.unit_hz); - activePropTv = waveFreqValue; - waveMonPropSelect.setText(getString(R.string.wave_frequency)); - setSeekBar(seekBar); - btnCtrlFreq.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded, null)); - btnCtrlPhase.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded_light, null)); - } - }); - - btnCtrlPhase.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - waveMonSelected = true; - prop_active = WaveConst.PHASE; - unit = getString(R.string.deg_text); - activePropTv = wavePhaseValue; - waveMonPropSelect.setText(getString(R.string.phase_offset)); - setSeekBar(seekBar); - btnCtrlFreq.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded_light, null)); - btnCtrlPhase.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded, null)); - } - }); - - btnAnalogMode.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - toggleDigitalMode(WaveConst.SQUARE); - } - }); - - btnDigitalMode.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - toggleDigitalMode(WaveConst.PWM); - } - }); - - btnPwmSq1.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - if (!pwmBtnActive.equals(WaveConst.SQR1)) { - waveMonSelected = false; - selectBtn(WaveConst.SQR1); - } - } - }); - - btnPwmSq2.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - if (!pwmBtnActive.equals(WaveConst.SQR2)) { - waveMonSelected = false; - selectBtn(WaveConst.SQR2); - } - } - }); - - btnPwmSq3.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - if (!pwmBtnActive.equals(WaveConst.SQR3)) { - waveMonSelected = false; - selectBtn(WaveConst.SQR3); - } - } - }); - - btnPwmSq4.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - if (!pwmBtnActive.equals(WaveConst.SQR4)) { - waveMonSelected = false; - selectBtn(WaveConst.SQR4); - } - } - }); - - pwmBtnFreq.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - waveMonSelected = false; - prop_active = WaveConst.FREQUENCY; - unit = getString(R.string.unit_hz); - activePropTv = pwmFreqValue; - pwmMonPropSelect.setText(getString(R.string.frequecy_colon)); - setSeekBar(seekBar); - pwmBtnFreq.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded, null)); - pwmBtnPhase.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded_light, null)); - pwmBtnDuty.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded_light, null)); - } - }); - - pwmBtnPhase.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - waveMonSelected = false; - prop_active = WaveConst.PHASE; - unit = getString(R.string.deg_text); - activePropTv = pwmPhaseValue; - pwmMonPropSelect.setText(getString(R.string.pwm_phase)); - setSeekBar(seekBar); - pwmBtnFreq.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded_light, null)); - pwmBtnPhase.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded, null)); - pwmBtnDuty.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded_light, null)); - } - }); - - pwmBtnDuty.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - waveMonSelected = false; - prop_active = WaveConst.DUTY; - unit = getString(R.string.unit_percent); - activePropTv = pwmDutyValue; - pwmMonPropSelect.setText(getString(R.string.duty_cycle)); - setSeekBar(seekBar); - pwmBtnFreq.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded_light, null)); - pwmBtnPhase.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded_light, null)); - pwmBtnDuty.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded, null)); - } - }); - - monitorVariations(imgBtnUp, imgBtnDown); - - monitorLongClicks(imgBtnUp, imgBtnDown); - - seekBar.setOnSeekChangeListener(new OnSeekChangeListener() { - @Override - public void onSeeking(SeekParams seekParams) { - String valueText = formatWithUnit(seekParams.progress, unit); - - if (waveMonSelected) { - waveMonPropValueSelect.setText(valueText); - } else { - pwmMonPropSelectValue.setText(valueText); - } - setValue(); - } - - @Override - public void onStartTrackingTouch(IndicatorSeekBar seekBar) { - // Unused method override - } - - @Override - public void onStopTrackingTouch(IndicatorSeekBar seekBar) { - // Unused method override - } - }); - - if (getIntent().getExtras() != null && getIntent().getExtras().getBoolean(KEY_LOG)) { - recordedWaveData = LocalDataLog.with() - .getBlockOfWaveRecords(getIntent().getExtras().getLong(DATA_BLOCK)); - setReceivedData(); - } - chartInit(); - - btnProduceSound.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (isPlayingSound) { - btnProduceSound.setText(getResources().getString(R.string.produce_sound_text)); - produceSoundTask.cancel(true); - produceSoundTask = null; - isPlayingSound = false; - } else { - btnProduceSound.setText(getResources().getString(R.string.stop_sound_text)); - produceSoundTask = new ProduceSoundTask(); - produceSoundTask.execute(); - isPlayingSound = true; - } - } - }); - - if (getResources().getBoolean(R.bool.isTablet)) { - setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_USER); - } - - activePropTv = prop_active == WaveConst.FREQUENCY ? waveFreqValue : wavePhaseValue; - } - - public void saveWaveConfig() { - long block = System.currentTimeMillis(); - csvLogger.prepareLogFile(); - csvLogger.writeMetaData(getResources().getString(R.string.wave_generator)); - long timestamp; - double lat, lon; - csvLogger.writeCSVFile(CSV_HEADER); - recordSensorDataBlockID(new SensorDataBlock(block, getResources().getString(R.string.wave_generator))); - double freq1 = (double) (WaveGeneratorConstants.wave.get(WaveConst.WAVE1).get(WaveConst.FREQUENCY)); - double freq2 = (double) WaveGeneratorConstants.wave.get(WaveConst.WAVE2).get(WaveConst.FREQUENCY); - double phase = (double) WaveGeneratorConstants.wave.get(WaveConst.WAVE2).get(WaveConst.PHASE); - - String waveType1 = WaveGeneratorConstants.wave.get(WaveConst.WAVE1).get(WaveConst.WAVETYPE) == SIN ? "sine" : "tria"; - String waveType2 = WaveGeneratorConstants.wave.get(WaveConst.WAVE2).get(WaveConst.WAVETYPE) == SIN ? "sine" : "tria"; - - if (gpsLogger.isGPSEnabled()) { - Location location = gpsLogger.getDeviceLocation(); - if (location != null) { - lat = location.getLatitude(); - lon = location.getLongitude(); - } else { - lat = 0.0; - lon = 0.0; - } - } else { - lat = 0.0; - lon = 0.0; - } - - timestamp = System.currentTimeMillis(); - String timeData = timestamp + "," + CSVLogger.FILE_NAME_FORMAT.format(new Date(timestamp)); - String locationData = lat + "," + lon; - String dateTime = CSVLogger.FILE_NAME_FORMAT.format(new Date(timestamp)); - if (scienceLab.isConnected()) { - if (digital_mode == WaveConst.SQUARE) { - csvLogger.writeCSVFile(new CSVDataLine().add(timestamp).add(dateTime).add("Square").add("Wave1").add(waveType1).add(freq1).add(0).add(0).add(lat).add(lon)); //wave1 - recordSensorData(new WaveGeneratorData(timestamp, block, "Square", "Wave1", waveType1, String.valueOf(freq1), "0", "0", lat, lon)); - csvLogger.writeCSVFile(new CSVDataLine().add(timestamp).add(dateTime).add("Square").add("Wave2").add(waveType2).add(freq2).add(phase).add(0).add(lat).add(lon)); //wave2 - recordSensorData(new WaveGeneratorData(timestamp + 1, block, "Square", "Wave2", waveType2, String.valueOf(freq2), String.valueOf(phase), "0", lat, lon)); - } else { - double freqSqr1 = (double) WaveGeneratorConstants.wave.get(WaveConst.SQR1).get(WaveConst.FREQUENCY); - double dutySqr1 = (double) WaveGeneratorConstants.wave.get(WaveConst.SQR1).get(WaveConst.DUTY) / 100; - double dutySqr2 = ((double) WaveGeneratorConstants.wave.get(WaveConst.SQR2).get(WaveConst.DUTY)) / 100; - double phaseSqr2 = (double) WaveGeneratorConstants.wave.get(WaveConst.SQR2).get(WaveConst.PHASE) / 360; - double dutySqr3 = ((double) WaveGeneratorConstants.wave.get(WaveConst.SQR3).get(WaveConst.DUTY)) / 100; - double phaseSqr3 = (double) WaveGeneratorConstants.wave.get(WaveConst.SQR3).get(WaveConst.PHASE) / 360; - double dutySqr4 = ((double) WaveGeneratorConstants.wave.get(WaveConst.SQR4).get(WaveConst.DUTY)) / 100; - double phaseSqr4 = (double) WaveGeneratorConstants.wave.get(WaveConst.SQR4).get(WaveConst.PHASE) / 360; - - csvLogger.writeCSVFile(new CSVDataLine().add(timestamp).add(dateTime).add("PWM").add("Sq1").add("PWM").add(freqSqr1).add(0).add(dutySqr1).add(lat).add(lon)); - recordSensorData(new WaveGeneratorData(timestamp, block, "PWM", "Sq1", "PWM", String.valueOf(freqSqr1), "0", String.valueOf(dutySqr1), lat, lon)); - csvLogger.writeCSVFile(new CSVDataLine().add(timestamp).add(dateTime).add("PWM").add("Sq2").add("PWM").add(freqSqr1).add(phaseSqr2).add(dutySqr2).add(lat).add(lon)); - recordSensorData(new WaveGeneratorData(timestamp + 1, block, "PWM", "Sq2", "PWM", String.valueOf(freqSqr1), String.valueOf(phaseSqr2), String.valueOf(dutySqr2), lat, lon)); - csvLogger.writeCSVFile(new CSVDataLine().add(timestamp).add(dateTime).add("PWM").add("Sq3").add("PWM").add(freqSqr1).add(phaseSqr3).add(dutySqr3).add(lat).add(lon)); - recordSensorData(new WaveGeneratorData(timestamp + 2, block, "PWM", "Sq3", "PWM", String.valueOf(freqSqr1), String.valueOf(phaseSqr3), String.valueOf(dutySqr3), lat, lon)); - csvLogger.writeCSVFile(new CSVDataLine().add(timestamp).add(dateTime).add("PWM").add("Sq4").add("PWM").add(freqSqr1).add(phaseSqr4).add(dutySqr4).add(lat).add(lon)); - recordSensorData(new WaveGeneratorData(timestamp + 3, block, "PWM", "Sq4", "PWM", String.valueOf(freqSqr1), String.valueOf(phaseSqr4), String.valueOf(dutySqr4), lat, lon)); - } - CustomSnackBar.showSnackBar(coordinatorLayout, - getString(R.string.csv_store_text) + " " + csvLogger.getCurrentFilePath() - , getString(R.string.open), new View.OnClickListener() { - @Override - public void onClick(View view) { - Intent intent = new Intent(WaveGeneratorActivity.this, DataLoggerActivity.class); - intent.putExtra(DataLoggerActivity.CALLER_ACTIVITY, getResources().getString(R.string.wave_generator)); - startActivity(intent); - } - }, Snackbar.LENGTH_SHORT); - } else { - CustomSnackBar.showSnackBar(findViewById(android.R.id.content), - getString(R.string.device_not_connected), null, null, Snackbar.LENGTH_SHORT); - } - } - - public void setReceivedData() { - for (WaveGeneratorData data : recordedWaveData) { - Log.d("data", data.toString()); - if (data.getMode().equals(MODE_SQUARE)) { - WaveGeneratorConstants.mode_selected = WaveConst.SQUARE; - switch (data.getWave()) { - case "Wave1": - if (data.getShape().equals("sine")) { - WaveGeneratorConstants.wave.get(WaveConst.WAVE1).put(WaveConst.WAVETYPE, SIN); - } else { - WaveGeneratorConstants.wave.get(WaveConst.WAVE1).put(WaveConst.WAVETYPE, TRIANGULAR); - } - WaveGeneratorConstants.wave.get(WaveConst.WAVE1).put(WaveConst.FREQUENCY, Double.valueOf(data.getFreq()).intValue()); - break; - case "Wave2": - if (data.getShape().equals("sine")) { - WaveGeneratorConstants.wave.get(WaveConst.WAVE2).put(WaveConst.WAVETYPE, SIN); - } else { - WaveGeneratorConstants.wave.get(WaveConst.WAVE2).put(WaveConst.WAVETYPE, TRIANGULAR); - } - WaveGeneratorConstants.wave.get(WaveConst.WAVE2).put(WaveConst.FREQUENCY, Double.valueOf(data.getFreq()).intValue()); - WaveGeneratorConstants.wave.get(WaveConst.WAVE2).put(WaveConst.PHASE, Double.valueOf(data.getPhase()).intValue()); - break; - } - enableInitialState(); - } else if (data.getMode().equals(MODE_PWM)) { - WaveGeneratorConstants.mode_selected = WaveConst.PWM; - switch (data.getWave()) { - case "Sq1": - WaveGeneratorConstants.wave.get(WaveConst.SQR1).put(WaveConst.FREQUENCY, Double.valueOf(data.getFreq()).intValue()); - WaveGeneratorConstants.wave.get(WaveConst.SQR1).put(WaveConst.DUTY, ((Double) (Double.valueOf(data.getDuty()) * 100)).intValue()); - break; - case "Sq2": - WaveGeneratorConstants.wave.get(WaveConst.SQR2).put(WaveConst.DUTY, ((Double) (Double.valueOf(data.getDuty()) * 100)).intValue()); - WaveGeneratorConstants.wave.get(WaveConst.SQR2).put(WaveConst.PHASE, ((Double) (Double.valueOf(data.getPhase()) * 360)).intValue()); - break; - case "Sq3": - WaveGeneratorConstants.wave.get(WaveConst.SQR3).put(WaveConst.DUTY, ((Double) (Double.valueOf(data.getDuty()) * 100)).intValue()); - WaveGeneratorConstants.wave.get(WaveConst.SQR3).put(WaveConst.PHASE, ((Double) (Double.valueOf(data.getPhase()) * 360)).intValue()); - break; - case "Sq4": - WaveGeneratorConstants.wave.get(WaveConst.SQR4).put(WaveConst.DUTY, ((Double) (Double.valueOf(data.getDuty()) * 100)).intValue()); - WaveGeneratorConstants.wave.get(WaveConst.SQR4).put(WaveConst.PHASE, ((Double) (Double.valueOf(data.getPhase()) * 360)).intValue()); - break; - } - enableInitialStatePWM(); - } - } - } - - private void setWave() { - double freq1 = (double) (WaveGeneratorConstants.wave.get(WaveConst.WAVE1).get(WaveConst.FREQUENCY)); - double freq2 = (double) WaveGeneratorConstants.wave.get(WaveConst.WAVE2).get(WaveConst.FREQUENCY); - double phase = (double) WaveGeneratorConstants.wave.get(WaveConst.WAVE2).get(WaveConst.PHASE); - - String waveType1 = WaveGeneratorConstants.wave.get(WaveConst.WAVE1).get(WaveConst.WAVETYPE) == SIN ? "sine" : "tria"; - String waveType2 = WaveGeneratorConstants.wave.get(WaveConst.WAVE2).get(WaveConst.WAVETYPE) == SIN ? "sine" : "tria"; - - if (scienceLab.isConnected()) { - if (digital_mode == WaveConst.SQUARE) { - if (phase == WaveData.PHASE_MIN.getValue()) { - scienceLab.setSI1(freq1, waveType1); - scienceLab.setSI2(freq2, waveType2); - } else { - scienceLab.setWaves(freq1, phase, freq2); - } - } else { - double freqSqr1 = (double) WaveGeneratorConstants.wave.get(WaveConst.SQR1).get(WaveConst.FREQUENCY); - double dutySqr1 = (double) WaveGeneratorConstants.wave.get(WaveConst.SQR1).get(WaveConst.DUTY) / 100; - double dutySqr2 = ((double) WaveGeneratorConstants.wave.get(WaveConst.SQR2).get(WaveConst.DUTY)) / 100; - double phaseSqr2 = (double) WaveGeneratorConstants.wave.get(WaveConst.SQR2).get(WaveConst.PHASE) / 360; - double dutySqr3 = ((double) WaveGeneratorConstants.wave.get(WaveConst.SQR3).get(WaveConst.DUTY)) / 100; - double phaseSqr3 = (double) WaveGeneratorConstants.wave.get(WaveConst.SQR3).get(WaveConst.PHASE) / 360; - double dutySqr4 = ((double) WaveGeneratorConstants.wave.get(WaveConst.SQR4).get(WaveConst.DUTY)) / 100; - double phaseSqr4 = (double) WaveGeneratorConstants.wave.get(WaveConst.SQR4).get(WaveConst.PHASE) / 360; - - scienceLab.sqrPWM(freqSqr1, dutySqr1, phaseSqr2, dutySqr2, phaseSqr3, dutySqr3, phaseSqr4, dutySqr4, false); - } - - } - } - - private void viewWaveDialog() { - waveDialog.show(); - Window window = waveDialog.getWindow(); - window.setLayout(dpToPx(350), dpToPx(300)); - waveDialog.getButton(DialogInterface.BUTTON_NEGATIVE) - .setTextColor(ContextCompat.getColor(WaveGeneratorActivity.this, R.color.colorPrimary)); - } - - @Override - public boolean onCreateOptionsMenu(Menu menu) { - getMenuInflater().inflate(R.menu.wave_generator_menu, menu); - return true; - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case android.R.id.home: - if (produceSoundTask != null) - produceSoundTask.cancel(true); - produceSoundTask = null; - isPlayingSound = false; - finish(); - break; - case R.id.save_data: - saveWaveConfig(); - break; - case R.id.play_data: - setWave(); - if (scienceLab.isConnected()) { - viewWaveDialog(); - } else { - CustomSnackBar.showSnackBar(findViewById(android.R.id.content), - getString(R.string.device_not_connected), null, null, Snackbar.LENGTH_SHORT); - } - break; - case R.id.show_guide: - toggleGuide(); - break; - case R.id.show_logged_data: - Intent intent = new Intent(WaveGeneratorActivity.this, DataLoggerActivity.class); - intent.putExtra(DataLoggerActivity.CALLER_ACTIVITY, getString(R.string.wave_generator)); - startActivity(intent); - break; - default: - break; - } - return true; - } - - public void selectBtn(WaveConst btn_selected) { - - switch (btn_selected) { - - case WAVE1: - - waveBtnActive = WaveConst.WAVE1; - - btnCtrlWave1.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded, null)); - btnCtrlWave2.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded_light, null)); - - btnCtrlPhase.setEnabled(false); //disable phase for wave - btnCtrlPhase.setVisibility(View.INVISIBLE); - wavePhaseValue.setText("--"); - - selectWaveform(WaveGeneratorConstants.wave.get(waveBtnActive).get(WaveConst.WAVETYPE)); - - fetchPropertyValue(waveBtnActive, WaveConst.FREQUENCY, getString(R.string.unit_hz), waveFreqValue); - wavePhaseTitle.setText(getResources().getString(R.string.text_phase_colon)); - break; - - case WAVE2: - - waveBtnActive = WaveConst.WAVE2; - - btnCtrlWave2.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded, null)); - btnCtrlWave1.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded_light, null)); - - btnCtrlPhase.setEnabled(true); // enable phase for wave2 - btnCtrlPhase.setVisibility(View.VISIBLE); - - selectWaveform(WaveGeneratorConstants.wave.get(waveBtnActive).get(WaveConst.WAVETYPE)); - - fetchPropertyValue(waveBtnActive, WaveConst.FREQUENCY, getString(R.string.unit_hz), waveFreqValue); - fetchPropertyValue(waveBtnActive, WaveConst.PHASE, getString(R.string.deg_text), wavePhaseValue); - wavePhaseTitle.setText(getResources().getString(R.string.text_phase_colon)); - break; - - case SQR1: - pwmBtnActive = WaveConst.SQR1; - btnPwmSq1.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded, null)); - btnPwmSq2.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded_light, null)); - btnPwmSq3.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded_light, null)); - btnPwmSq4.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded_light, null)); - pwmBtnPhase.setEnabled(false); //phase disabled for sq1 - pwmBtnPhase.setVisibility(View.INVISIBLE); - pwmPhaseValue.setText("--"); - fetchPropertyValue(pwmBtnActive, WaveConst.FREQUENCY, getString(R.string.unit_hz), pwmFreqValue); - fetchPropertyValue(pwmBtnActive, WaveConst.DUTY, getString(R.string.unit_percent), pwmDutyValue); - break; - - case SQR2: - - pwmBtnActive = WaveConst.SQR2; - btnPwmSq1.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded_light, null)); - btnPwmSq2.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded, null)); - btnPwmSq3.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded_light, null)); - btnPwmSq4.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded_light, null)); - pwmBtnPhase.setEnabled(true); - pwmBtnPhase.setVisibility(View.VISIBLE); - fetchPropertyValue(WaveConst.SQR1, WaveConst.FREQUENCY, getString(R.string.unit_hz), pwmFreqValue); - fetchPropertyValue(pwmBtnActive, WaveConst.PHASE, getString(R.string.deg_text), pwmPhaseValue); - fetchPropertyValue(pwmBtnActive, WaveConst.DUTY, getString(R.string.unit_percent), pwmDutyValue); - break; - - case SQR3: - - pwmBtnActive = WaveConst.SQR3; - btnPwmSq1.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded_light, null)); - btnPwmSq2.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded_light, null)); - btnPwmSq3.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded, null)); - btnPwmSq4.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded_light, null)); - pwmBtnPhase.setEnabled(true); - pwmBtnPhase.setVisibility(View.VISIBLE); - fetchPropertyValue(WaveConst.SQR1, WaveConst.FREQUENCY, getString(R.string.unit_hz), pwmFreqValue); - fetchPropertyValue(pwmBtnActive, WaveConst.PHASE, getString(R.string.deg_text), pwmPhaseValue); - fetchPropertyValue(pwmBtnActive, WaveConst.DUTY, getString(R.string.unit_percent), pwmDutyValue); - break; - - case SQR4: - - pwmBtnActive = WaveConst.SQR4; - btnPwmSq1.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded_light, null)); - btnPwmSq2.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded_light, null)); - btnPwmSq3.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded_light, null)); - btnPwmSq4.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded, null)); - pwmBtnPhase.setEnabled(true); - pwmBtnPhase.setVisibility(View.VISIBLE); - fetchPropertyValue(WaveConst.SQR1, WaveConst.FREQUENCY, getString(R.string.unit_hz), pwmFreqValue); - fetchPropertyValue(pwmBtnActive, WaveConst.PHASE, getString(R.string.deg_text), pwmPhaseValue); - fetchPropertyValue(pwmBtnActive, WaveConst.DUTY, getString(R.string.unit_percent), pwmDutyValue); - break; - - default: - waveBtnActive = WaveConst.WAVE1; - btnCtrlWave1.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded, null)); - btnCtrlWave2.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded_light, null)); - btnCtrlPhase.setEnabled(false); //disable phase for wave - pwmBtnPhase.setVisibility(View.INVISIBLE); - wavePhaseValue.setText("--"); - selectWaveform(WaveGeneratorConstants.wave.get(waveBtnActive).get(WaveConst.WAVETYPE)); - fetchPropertyValue(waveBtnActive, WaveConst.FREQUENCY, getString(R.string.unit_hz), waveFreqValue); - break; - - } - prop_active = null; - toggleSeekBtns(false); - previewWave(); - } - - private void selectWaveform(final int waveType) { - String waveFormText; - Drawable image; - - switch (waveType) { - case SIN: - waveFormText = getString(R.string.sine); - imgBtnSin.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded, null)); - imgBtnTri.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded_light, null)); - WaveGeneratorConstants.wave.get(waveBtnActive).put(WaveConst.WAVETYPE, SIN); - image = ResourcesCompat.getDrawable(getResources(), R.drawable.ic_sin, null); - break; - - case TRIANGULAR: - waveFormText = getString(R.string.triangular); - imgBtnSin.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded_light, null)); - imgBtnTri.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded, null)); - WaveGeneratorConstants.wave.get(waveBtnActive).put(WaveConst.WAVETYPE, TRIANGULAR); - image = ResourcesCompat.getDrawable(getResources(), R.drawable.ic_triangular, null); - break; - case PWM: - waveFormText = getResources().getString(R.string.text_pwm); - WaveGeneratorConstants.wave.get(waveBtnActive).put(WaveConst.WAVETYPE, PWM); - image = ResourcesCompat.getDrawable(getResources(), R.drawable.ic_pwm_pic, null); - break; - - default: - waveFormText = getString(R.string.sine); - WaveGeneratorConstants.wave.get(waveBtnActive).put(WaveConst.WAVETYPE, SIN); - image = ResourcesCompat.getDrawable(getResources(), R.drawable.ic_sin, null); - } - selectedWaveText.setText(waveFormText); - selectedWaveImg.setImageDrawable(image); - previewWave(); - } - - private void toggleDigitalMode(WaveConst mode) { - waveMonSelected = false; - if (mode == WaveConst.SQUARE) { - digital_mode = WaveConst.SQUARE; - pwmModeLayout.setVisibility(View.GONE); - pwmModeControls.setVisibility(View.GONE); - squareModeLayout.setVisibility(View.VISIBLE); - squareModeControls.setVisibility(View.VISIBLE); - imgBtnSin.setEnabled(true); - imgBtnTri.setEnabled(true); - pwmSelectedModeImg.setImageResource(R.drawable.ic_square); - pwmMonSelectMode.setText(getString(R.string.square)); - btnPwmSq2.setEnabled(false); - btnPwmSq3.setEnabled(false); - btnPwmSq4.setEnabled(false); - pwmBtnPhase.setEnabled(false); - btnDigitalMode.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded_light, null)); - btnAnalogMode.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded, null)); - - } else { - digital_mode = WaveConst.PWM; - pwmModeLayout.setVisibility(View.VISIBLE); - pwmModeControls.setVisibility(View.VISIBLE); - squareModeLayout.setVisibility(View.GONE); - squareModeControls.setVisibility(View.GONE); - pwmSelectedModeImg.setImageResource(R.drawable.ic_pwm_pic); - pwmMonSelectMode.setText(getString(R.string.text_pwm)); - btnPwmSq2.setEnabled(true); - btnPwmSq3.setEnabled(true); - btnPwmSq4.setEnabled(true); - imgBtnSin.setEnabled(false); - imgBtnTri.setEnabled(false); - selectBtn(WaveConst.SQR2); - btnDigitalMode.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded, null)); - btnAnalogMode.setBackground(ResourcesCompat.getDrawable(getResources(), R.drawable.btn_back_rounded_light, null)); - } - WaveGeneratorConstants.mode_selected = mode; - previewWave(); - } - - private void fetchPropertyValue(WaveConst btnActive, WaveConst property, String unit, TextView propTextView) { - if (WaveGeneratorConstants.wave.get(btnActive).get(property) != null) { - int value = WaveGeneratorConstants.wave.get(btnActive).get(property); - propTextView.setText(formatWithUnit(value, unit)); - } else { - if (property == WaveConst.FREQUENCY) { - int value = WaveData.FREQ_MIN.getValue(); - propTextView.setText(formatWithUnit(value, unit)); - } else if (property == WaveConst.PHASE) { - int value = WaveData.PHASE_MIN.getValue(); - propTextView.setText(formatWithUnit(value, unit)); - } else { - int value = WaveData.DUTY_MIN.getValue(); - propTextView.setText(formatWithUnit(value, unit)); - } - } - } - - private void setSeekBar(IndicatorSeekBar seekBar) { - - int numTicks; - - switch (prop_active) { - case FREQUENCY: - seekMin = WaveData.FREQ_MIN.getValue(); - seekMax = WaveData.FREQ_MAX.getValue(); - numTicks = 50; - leastCount = 1; - break; - - case PHASE: - seekMin = WaveData.PHASE_MIN.getValue(); - seekMax = WaveData.PHASE_MAX.getValue(); - numTicks = 50; - leastCount = 1; - break; - - case DUTY: - seekMin = WaveData.DUTY_MIN.getValue(); - seekMax = WaveData.DUTY_MAX.getValue(); - numTicks = 50; - leastCount = 1; - unit = getString(R.string.unit_percent); - break; - - default: - seekMin = 0; - seekMax = 5000; - numTicks = 50; - leastCount = 1; - } - - seekBar.setMin(seekMin); - seekBar.setMax(seekMax); - seekBar.setTickCount(numTicks); - - if (!waveMonSelected) { - waveMonPropSelect.setText(""); - waveMonPropValueSelect.setText(""); - - if (prop_active.equals(WaveConst.FREQUENCY)) { - if (WaveGeneratorConstants.wave.get(WaveConst.SQR1).get(prop_active) != null) { - seekBar.setProgress(WaveGeneratorConstants.wave.get(WaveConst.SQR1).get(prop_active)); - } - } else { - if (WaveGeneratorConstants.wave.get(pwmBtnActive).get(prop_active) != null) { - seekBar.setProgress(WaveGeneratorConstants.wave.get(pwmBtnActive).get(prop_active)); - } - } - } else { - pwmMonPropSelect.setText(""); - pwmMonPropSelectValue.setText(""); - if (WaveGeneratorConstants.wave.get(waveBtnActive).get(prop_active) != null) { - seekBar.setProgress(WaveGeneratorConstants.wave.get(waveBtnActive).get(prop_active)); - } - } - toggleSeekBtns(true); - } - - private void incProgressSeekBar() { - seekBar.setProgress(seekBar.getProgress() + leastCount); - } - - private void decProgressSeekBar() { - seekBar.setProgress(seekBar.getProgress() - leastCount); - } - - private void setValue() { - int value = seekBar.getProgress(); - - if (!waveMonSelected) { - if (prop_active == WaveConst.FREQUENCY) { - WaveGeneratorConstants.wave.get(WaveConst.SQR1).put(prop_active, value); - } else { - if (prop_active == WaveConst.DUTY) { - if (value != WaveData.DUTY_MIN.getValue()) { - WaveGeneratorConstants.state.put(pwmBtnActive.toString(), 1); - } else - WaveGeneratorConstants.state.put(pwmBtnActive.toString(), 0); - } - WaveGeneratorConstants.wave.get(pwmBtnActive).put(prop_active, value); - } - } else { - WaveGeneratorConstants.wave.get(waveBtnActive).put(prop_active, value); - } - setWave(); - previewWave(); - activePropTv.setText(formatWithUnit(value, unit)); - } - - private static String formatWithUnit(int value, String unit) { - return value + ("\u00b0".equals(unit) ? "" : " ") + unit; - } - - private void previewWave() { - List dataSets = new ArrayList<>(); - ArrayList entries = getSamplePoints(false); - ArrayList refEntries = getSamplePoints(true); - LineDataSet dataSet; - LineDataSet refDataSet; - if (WaveGeneratorConstants.mode_selected == WaveConst.PWM) { - dataSet = new LineDataSet(entries, pwmBtnActive.toString()); - refDataSet = new LineDataSet(refEntries, getResources().getString(R.string.reference_wave_title)); - } else { - dataSet = new LineDataSet(entries, waveBtnActive.toString()); - refDataSet = new LineDataSet(refEntries, getResources().getString(R.string.reference_wave_title)); - } - dataSet.setDrawCircles(false); - dataSet.setColor(Color.WHITE); - refDataSet.setDrawCircles(false); - refDataSet.setColor(Color.GRAY); - dataSets.add(refDataSet); - dataSets.add(dataSet); - LineData data = new LineData(dataSets); - data.setDrawValues(false); - previewChart.setData(data); - previewChart.notifyDataSetChanged(); - previewChart.invalidate(); - } - - private ArrayList getSamplePoints(boolean isReference) { - ArrayList entries = new ArrayList<>(); - if (WaveGeneratorConstants.mode_selected == WaveConst.PWM) { - double freq = (double) WaveGeneratorConstants.wave.get(WaveConst.SQR1).get(WaveConst.FREQUENCY); - double duty = ((double) WaveGeneratorConstants.wave.get(pwmBtnActive).get(WaveConst.DUTY)) / 100; - double phase = 0; - if (pwmBtnActive != WaveConst.SQR1 && !isReference) { - phase = (double) WaveGeneratorConstants.wave.get(pwmBtnActive).get(WaveConst.PHASE); - } - for (int i = 0; i < 5000; i++) { - double t = 2 * Math.PI * freq * (i) / 1e6 + phase * Math.PI / 180; - double y; - if (t % (2 * Math.PI) < 2 * Math.PI * duty) { - y = 5; - } else { - y = -5; - } - entries.add(new Entry((float) i, (float) y)); - } - } else { - double phase = 0; - int shape = WaveGeneratorConstants.wave.get(waveBtnActive).get(WaveConst.WAVETYPE); - double freq = (double) WaveGeneratorConstants.wave.get(waveBtnActive).get(WaveConst.FREQUENCY); - - if (waveBtnActive != WaveConst.WAVE1 && !isReference) { - phase = (double) WaveGeneratorConstants.wave.get(WaveConst.WAVE2).get(WaveConst.PHASE); - } - if (shape == 1) { - for (int i = 0; i < 5000; i++) { - float y = (float) (5 * Math.sin(2 * Math.PI * (freq / 1e6) * i + phase * Math.PI / 180)); - entries.add(new Entry((float) i, y)); - } - } else { - for (int i = 0; i < 5000; i++) { - float y = (float) ((10 / Math.PI) * (Math.asin(Math.sin(2 * Math.PI * (freq / 1e6) * i + phase * Math.PI / 180)))); - entries.add(new Entry((float) i, y)); - } - } - } - return entries; - } - - private void chartInit() { - previewChart.setTouchEnabled(true); - previewChart.setHighlightPerDragEnabled(true); - previewChart.setDragEnabled(true); - previewChart.setScaleEnabled(true); - previewChart.setDrawGridBackground(false); - previewChart.setPinchZoom(true); - previewChart.setScaleYEnabled(false); - previewChart.setBackgroundColor(Color.BLACK); - previewChart.getDescription().setEnabled(false); - previewChart.getXAxis().setAxisMaximum(5000); - previewChart.getXAxis().setAxisMinimum(0); - previewChart.getXAxis().setTextColor(Color.WHITE); - previewChart.getAxisLeft().setAxisMaximum(10); - previewChart.getAxisLeft().setAxisMinimum(-10); - previewChart.getAxisRight().setAxisMaximum(10); - previewChart.getAxisRight().setAxisMinimum(-10); - previewChart.fitScreen(); - previewChart.invalidate(); - Legend l = previewChart.getLegend(); - l.setForm(Legend.LegendForm.LINE); - l.setTextColor(Color.WHITE); - } - - private void toggleSeekBtns(boolean state) { - if (!state) { - waveMonPropSelect.setText(""); - waveMonPropValueSelect.setText(""); - pwmMonPropSelect.setText(""); - pwmMonPropSelectValue.setText(""); - } - imgBtnUp.setEnabled(state); - imgBtnDown.setEnabled(state); - seekBar.setEnabled(state); - } - - private void enableInitialState() { - selectBtn(WaveConst.WAVE1); - toggleDigitalMode(WaveConst.SQUARE); - } - - private void enableInitialStatePWM() { - selectBtn(WaveConst.SQR2); - toggleDigitalMode(WaveConst.PWM); - } - - @Override - protected void onSaveInstanceState(@NonNull Bundle outState) { - outState.putString("waveBtnActive", String.valueOf(waveBtnActive)); - outState.putString("pwmBtnActive", String.valueOf(pwmBtnActive)); - outState.putString("prop_active", String.valueOf(prop_active)); - outState.putString("digital_mode", String.valueOf(digital_mode)); - super.onSaveInstanceState(outState); - } - - /** - * Click listeners to increment and decrement buttons - * - * @param up increment button - * @param down decrement button - */ - private void monitorVariations(ImageButton up, ImageButton down) { - up.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - incProgressSeekBar(); - } - }); - up.setOnLongClickListener(new View.OnLongClickListener() { - @Override - public boolean onLongClick(final View view) { - fastCounter(true); - return true; - } - }); - down.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - decProgressSeekBar(); - } - }); - down.setOnLongClickListener(new View.OnLongClickListener() { - @Override - public boolean onLongClick(final View view) { - fastCounter(false); - return true; - } - }); - } - - /** - * Handles action when user releases long click on an increment or a decrement button - * - * @param up increment button - * @param down decrement button - */ - @SuppressLint("ClickableViewAccessibility") - private void monitorLongClicks(ImageButton up, ImageButton down) { - up.setOnTouchListener(new View.OnTouchListener() { - @Override - public boolean onTouch(View view, MotionEvent motionEvent) { - view.onTouchEvent(motionEvent); - if (motionEvent.getAction() == MotionEvent.ACTION_UP) { - stopCounter(); - } - return true; - } - }); - down.setOnTouchListener(new View.OnTouchListener() { - @Override - public boolean onTouch(View view, MotionEvent motionEvent) { - view.onTouchEvent(motionEvent); - if (motionEvent.getAction() == MotionEvent.ACTION_UP) { - stopCounter(); - } - return true; - } - }); - } - - /** - * Stops the Timer that is changing the seekbar value - */ - private void stopCounter() { - if (waveGenCounter != null) { - waveGenCounter.cancel(); - waveGenCounter.purge(); - } - } - - /** - * TimerTask implementation to increment or decrement value at the seekbar at a constant - * rate provided by LONG_CLICK_DELAY - * - * @param increaseValue flag for whether it is increase or decrease - */ - private void fastCounter(final boolean increaseValue) { - waveGenCounter = new Timer(); - TimerTask task = new TimerTask() { - public void run() { - wavegenHandler.post(new Runnable() { - public void run() { - if (increaseValue) { - incProgressSeekBar(); - } else { - decProgressSeekBar(); - } - } - }); - } - }; - waveGenCounter.schedule(task, 1, LONG_CLICK_DELAY); - } - - private AlertDialog createIntentDialog() { - AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this); - LayoutInflater inflater = this.getLayoutInflater(); - View dialogView = inflater.inflate(R.layout.wavegen_intent_dialog, null); - dialogBuilder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialogInterface, int i) { - waveDialog.cancel(); - } - }).setTitle(R.string.open_instrument); - - dialogView.findViewById(R.id.osc_btn).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - startActivity(new Intent(WaveGeneratorActivity.this, OscilloscopeActivity.class)); - waveDialog.cancel(); - } - }); - - dialogView.findViewById(R.id.la_btn).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - startActivity(new Intent(WaveGeneratorActivity.this, LogicalAnalyzerActivity.class)); - waveDialog.cancel(); - } - }); - - dialogBuilder.setView(dialogView); - return dialogBuilder.create(); - } - - private int dpToPx(int dp) { - DisplayMetrics displayMetrics = this.getResources().getDisplayMetrics(); - return Math.round((float) dp * (displayMetrics.xdpi / 160.0F)); - } - - public void recordSensorDataBlockID(SensorDataBlock block) { - realm.beginTransaction(); - realm.copyToRealm(block); - realm.commitTransaction(); - } - - public void recordSensorData(RealmObject sensorData) { - realm.beginTransaction(); - realm.copyToRealm((WaveGeneratorData) sensorData); - realm.commitTransaction(); - } - - public enum WaveConst {WAVETYPE, WAVE1, WAVE2, SQR1, SQR2, SQR3, SQR4, FREQUENCY, PHASE, DUTY, SQUARE, PWM} - - public enum WaveData { - FREQ_MIN(10), DUTY_MIN(0), PHASE_MIN(0), FREQ_MAX(5000), PHASE_MAX(360), DUTY_MAX(100); - - public final int value; - - WaveData(final int v) { - value = v; - } - - public final int getValue() { - return value; - } - } - - private class ProduceSoundTask extends AsyncTask { - - @Override - protected Void doInBackground(Void... voids) { - short[] buffer = new short[1024]; - track = new AudioTrack(AudioManager.STREAM_MUSIC, 44100, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT, buffer.length, AudioTrack.MODE_STREAM); - float angle = 0; - float[] samples = new float[1024]; - - track.play(); - double frequency; - while (isPlayingSound) { - if (WaveGeneratorConstants.mode_selected == WaveConst.SQUARE) { - frequency = WaveGeneratorConstants.wave.get(waveBtnActive).get(WaveConst.FREQUENCY); - } else { - frequency = WaveGeneratorConstants.wave.get(WaveConst.SQR1).get(WaveConst.FREQUENCY); - } - float increment = (float) ((2 * Math.PI) * frequency / 44100); - for (int i = 0; i < samples.length; i++) { - samples[i] = (float) Math.sin(angle); - if (WaveGeneratorConstants.mode_selected == WaveConst.PWM) { - samples[i] = (samples[i] >= 0.0) ? 1 : -1; - } else { - if (WaveGeneratorConstants.wave.get(waveBtnActive).get(WaveConst.WAVETYPE) == 2) { - samples[i] = (float) ((2 / Math.PI) * Math.asin(samples[i])); - } - } - buffer[i] = (short) (samples[i] * Short.MAX_VALUE); - angle += increment; - } - track.write(buffer, 0, buffer.length); - } - return null; - } - - @Override - protected void onCancelled() { - super.onCancelled(); - if (track != null) { - track.flush(); - track.stop(); - track.release(); - } - } - } - - @Override - public void onBackPressed() { - super.onBackPressed(); - if (produceSoundTask != null) - produceSoundTask.cancel(true); - produceSoundTask = null; - isPlayingSound = false; - } -} diff --git a/app/src/main/java/io/pslab/activity/guide/GuideActivity.java b/app/src/main/java/io/pslab/activity/guide/GuideActivity.java deleted file mode 100644 index 181296207..000000000 --- a/app/src/main/java/io/pslab/activity/guide/GuideActivity.java +++ /dev/null @@ -1,133 +0,0 @@ -package io.pslab.activity.guide; - -import android.annotation.SuppressLint; -import android.content.SharedPreferences; -import android.os.Bundle; -import android.os.Handler; -import android.view.GestureDetector; -import android.view.MotionEvent; -import android.view.View; -import android.widget.ImageView; -import android.widget.LinearLayout; -import android.widget.TextView; - -import androidx.annotation.LayoutRes; -import androidx.annotation.NonNull; -import androidx.appcompat.app.AppCompatActivity; - -import com.google.android.material.bottomsheet.BottomSheetBehavior; - -import butterknife.BindView; -import butterknife.ButterKnife; -import io.pslab.R; -import io.pslab.others.MathUtils; -import io.pslab.others.SwipeGestureDetector; - -/** - * Base class for activities which have a guide. - */ -public class GuideActivity extends AppCompatActivity { - - public static final String PREFS_NAME = "customDialogPreference"; - - @BindView(R.id.bottom_sheet) - LinearLayout bottomSheet; - @BindView(R.id.shadow) - View shadowLayer; - @BindView(R.id.img_arrow) - ImageView arrowUpDown; - @BindView(R.id.sheet_slide_text) - TextView bottomSheetSlideText; - - BottomSheetBehavior bottomSheetBehavior; - GestureDetector gestureDetector; - - public GuideActivity(@LayoutRes int contentLayoutId) { - super(contentLayoutId); - } - - @SuppressLint("ClickableViewAccessibility") - @Override - protected void onCreate(final Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - ButterKnife.bind(this); - - setUpBottomSheet(); - shadowLayer.setOnClickListener(v -> { - if (bottomSheetBehavior.getState() == BottomSheetBehavior.STATE_EXPANDED) - bottomSheetBehavior.setState(BottomSheetBehavior.STATE_HIDDEN); - shadowLayer.setVisibility(View.GONE); - }); - shadowLayer.setVisibility(View.GONE); - } - - private void setUpBottomSheet() { - bottomSheetBehavior = BottomSheetBehavior.from(bottomSheet); - - final SharedPreferences settings = this.getSharedPreferences(PREFS_NAME, MODE_PRIVATE); - final boolean isFirstTime = settings.getBoolean("WaveGenFirstTime", true); - - if (isFirstTime) { - bottomSheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED); - shadowLayer.setVisibility(View.VISIBLE); - shadowLayer.setAlpha(0.8f); - arrowUpDown.setRotation(180); - bottomSheetSlideText.setText(R.string.hide_guide_text); - SharedPreferences.Editor editor = settings.edit(); - editor.putBoolean("WaveGenFirstTime", false); - editor.apply(); - } else { - bottomSheetBehavior.setState(BottomSheetBehavior.STATE_HIDDEN); - } - - bottomSheetBehavior.addBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() { - private final Handler handler = new Handler(); - private final Runnable runnable = new Runnable() { - @Override - public void run() { - bottomSheetBehavior.setState(BottomSheetBehavior.STATE_HIDDEN); - } - }; - - @Override - public void onStateChanged(@NonNull final View bottomSheet, int newState) { - switch (newState) { - case BottomSheetBehavior.STATE_EXPANDED: - handler.removeCallbacks(runnable); - bottomSheetSlideText.setText(R.string.hide_guide_text); - break; - - case BottomSheetBehavior.STATE_COLLAPSED: - handler.postDelayed(runnable, 2000); - break; - - default: - handler.removeCallbacks(runnable); - bottomSheetSlideText.setText(R.string.show_guide_text); - break; - } - } - - @Override - public void onSlide(@NonNull final View bottomSheet, float slideOffset) { - float value = (float) MathUtils.map(slideOffset, 0.0, 1.0, 0.0, 0.8); - shadowLayer.setVisibility(value <= 0.0 ? View.GONE : View.VISIBLE); - shadowLayer.setAlpha(value); - arrowUpDown.setRotation(slideOffset * 180); - } - }); - gestureDetector = new GestureDetector(this, new SwipeGestureDetector(bottomSheetBehavior)); - } - - @Override - public boolean onTouchEvent(final MotionEvent event) { - gestureDetector.onTouchEvent(event); //Gesture detector need this to transfer touch event to the gesture detector. - return super.onTouchEvent(event); - } - - protected void toggleGuide() { - bottomSheetBehavior.setState(bottomSheetBehavior.getState() == BottomSheetBehavior.STATE_HIDDEN ? - BottomSheetBehavior.STATE_EXPANDED : BottomSheetBehavior.STATE_HIDDEN); - } - -} diff --git a/app/src/main/java/io/pslab/adapters/ApplicationAdapter.java b/app/src/main/java/io/pslab/adapters/ApplicationAdapter.java deleted file mode 100644 index 0e7cf1765..000000000 --- a/app/src/main/java/io/pslab/adapters/ApplicationAdapter.java +++ /dev/null @@ -1,82 +0,0 @@ -package io.pslab.adapters; - -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.appcompat.app.AppCompatDelegate; -import androidx.recyclerview.widget.RecyclerView; - -import java.util.List; - -import io.pslab.R; -import io.pslab.items.ApplicationItem; - - -public class ApplicationAdapter extends RecyclerView.Adapter { - - private final List applicationList; - private final OnItemClickListener listener; - - - static { - AppCompatDelegate.setCompatVectorFromResourcesEnabled(true); - } - - /** - * View holder for application list item - */ - public static class Holder extends RecyclerView.ViewHolder { - - private final TextView header; - private final TextView description; - private final ImageView applicationIcon; - - public Holder(@NonNull final View itemView) { - super(itemView); - this.header = itemView.findViewById(R.id.heading_card); - this.description = itemView.findViewById(R.id.description_card); - this.applicationIcon = itemView.findViewById(R.id.application_icon); - } - - public void setup(@NonNull final ApplicationItem applicationItem, @NonNull final OnItemClickListener listener) { - header.setText(applicationItem.getApplicationName()); - description.setText(applicationItem.getApplicationDescription()); - applicationIcon.setLayerType(View.LAYER_TYPE_SOFTWARE, null); - applicationIcon.setImageResource(applicationItem.getApplicationIcon()); - - itemView.setOnClickListener(v -> listener.onItemClick(applicationItem)); - } - } - - public ApplicationAdapter(@NonNull final List applicationList, @NonNull final OnItemClickListener listener) { - this.applicationList = applicationList; - this.listener = listener; - } - - @NonNull - @Override - public Holder onCreateViewHolder(@NonNull final ViewGroup parent, int viewType) { - View itemView = LayoutInflater.from(parent.getContext()) - .inflate(R.layout.application_list_item, parent, false); - return new Holder(itemView); - } - - @Override - public void onBindViewHolder(@NonNull final Holder holder, int position) { - holder.setup(applicationList.get(position), listener); - } - - @Override - public int getItemCount() { - return applicationList.size(); - } - - public interface OnItemClickListener { - void onItemClick(ApplicationItem item); - } - -} diff --git a/app/src/main/java/io/pslab/adapters/CheckBoxAdapter.java b/app/src/main/java/io/pslab/adapters/CheckBoxAdapter.java deleted file mode 100644 index b2290f5be..000000000 --- a/app/src/main/java/io/pslab/adapters/CheckBoxAdapter.java +++ /dev/null @@ -1,75 +0,0 @@ -package io.pslab.adapters; - -import android.content.Context; -import androidx.recyclerview.widget.RecyclerView; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.CheckBox; -import android.widget.TextView; - -import java.util.ArrayList; -import java.util.List; - -import io.pslab.CheckBoxGetter; -import io.pslab.R; - - -public class CheckBoxAdapter extends RecyclerView.Adapter { - - private Context boxcontext; - private List list = new ArrayList<>(); - - public CheckBoxAdapter(Context boxcontext, List list) { - this.boxcontext = boxcontext; - this.list = list; - } - - @Override - public CheckBoxHolder onCreateViewHolder(ViewGroup parent, int viewType) { - - View view = LayoutInflater.from(boxcontext).inflate(R.layout.item_checkbox, parent, false); - return new CheckBoxHolder(view); - } - - @Override - public void onBindViewHolder(final CheckBoxHolder holder, final int position) { - - final CheckBoxGetter check = list.get(position); - - holder.tv_name.setText(check.getName()); - - holder.checkBox.setChecked(check.isSelected()); - holder.checkBox.setTag(list.get(position)); - - holder.checkBox.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - CheckBoxGetter check1 = (CheckBoxGetter) holder.checkBox.getTag(); - check1.setSelected(holder.checkBox.isChecked()); - list.get(position).setSelected(holder.checkBox.isChecked()); - } - }); - } - - @Override - public int getItemCount() { - return list.size(); - } - - public List getCheckList() { - return list; - } - - public static class CheckBoxHolder extends RecyclerView.ViewHolder { - - private TextView tv_name; - private CheckBox checkBox; - - public CheckBoxHolder(View itemView) { - super(itemView); - tv_name = itemView.findViewById(R.id.tv_checkbox); - checkBox = itemView.findViewById(R.id.checkBox_select); - } - } -} diff --git a/app/src/main/java/io/pslab/adapters/ControlMainAdapter.java b/app/src/main/java/io/pslab/adapters/ControlMainAdapter.java deleted file mode 100644 index c658a55a6..000000000 --- a/app/src/main/java/io/pslab/adapters/ControlMainAdapter.java +++ /dev/null @@ -1,985 +0,0 @@ -package io.pslab.adapters; - -import android.graphics.Color; -import android.text.Editable; -import android.text.TextWatcher; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.Button; -import android.widget.EditText; -import android.widget.SeekBar; -import android.widget.TextView; - -import androidx.cardview.widget.CardView; -import androidx.recyclerview.widget.RecyclerView; - -import io.pslab.R; -import io.pslab.communication.ScienceLab; -import io.pslab.others.ScienceLabCommon; -import static io.pslab.others.MathUtils.map; - -import java.text.DecimalFormat; -import io.pslab.DataFormatter; -import static io.pslab.others.MathUtils.map; - -public class ControlMainAdapter extends RecyclerView.Adapter { - - private String[] mDataset; - private ScienceLab scienceLab = ScienceLabCommon.scienceLab; - private boolean manualSeekBarChange = false; - - private boolean isSet1 = false; - private boolean isSet2 = false; - private boolean isSet3 = false; - private boolean isSet4 = false; - private boolean isSet5 = false; - private boolean isSet6 = false; - private boolean isSet7 = false; - - static class ViewHolder extends RecyclerView.ViewHolder { - - CardView mCardView; - TextView tvControlMain1; - TextView tvControlMain2; - EditText editTextControlMain; - Button buttonControlMain1; - Button buttonControlMain2; - Button buttonControlMain3; - SeekBar seekBarControlMain; - - public ViewHolder(View view) { - super(view); - mCardView = view.findViewById(R.id.cardview_control_main); - tvControlMain1 = view.findViewById(R.id.tv_control_main1); - tvControlMain2 = view.findViewById(R.id.tv_control_main2); - editTextControlMain = view.findViewById(R.id.edittext_control_main); - buttonControlMain1 = view.findViewById(R.id.button_control_main1); - buttonControlMain2 = view.findViewById(R.id.button_control_main2); - buttonControlMain3 = view.findViewById(R.id.button_control_main3); - seekBarControlMain = view.findViewById(R.id.seekbar_control_main); - editTextControlMain.setText("0"); - } - - } - - public ControlMainAdapter(String[] myDataset) { - mDataset = myDataset; - } - - @Override - public ControlMainAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { - View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.control_main_list_item, parent, false); - return new ViewHolder(v); - } - - @Override - public void onBindViewHolder(final ViewHolder holder, final int position) { - holder.setIsRecyclable(true); - holder.tvControlMain1.setText(mDataset[position]); - - final Button buttonControlMain1 = holder.buttonControlMain1; - final Button buttonControlMain2 = holder.buttonControlMain2; - final Button buttonControlMain3 = holder.buttonControlMain3; - - final SeekBar seekBarControlMain = holder.seekBarControlMain; - final EditText editTextControlMain = holder.editTextControlMain; - - switch (position) { - case 0: - buttonControlMain1.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - try { - if (isSet1) { - buttonControlMain3.setBackgroundColor(Color.parseColor("#c72c2c")); - isSet1 = false; - } - Double data = Double.parseDouble(editTextControlMain.getText().toString()); - Double dataDecrement = data - 0.0025; - if (dataDecrement < -5.0) - dataDecrement = -5.0; - else if (dataDecrement > 5.0) - dataDecrement = 5.0; - int setProgress = (int) ((dataDecrement + 5) * 100); - manualSeekBarChange = true; - seekBarControlMain.setProgress(setProgress); - manualSeekBarChange = false; - editTextControlMain.setText(DataFormatter.formatDouble(dataDecrement, DataFormatter.MEDIUM_PRECISION_FORMAT)); - } catch (NumberFormatException e) { - editTextControlMain.setText(DataFormatter.formatDouble(0, DataFormatter.MEDIUM_PRECISION_FORMAT)); - } - } - }); - - buttonControlMain2.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - try { - if (isSet1) { - buttonControlMain3.setBackgroundColor(Color.parseColor("#c72c2c")); - isSet1 = false; - } - Double data1 = Double.parseDouble(editTextControlMain.getText().toString()); - Double dataIncrement = data1 + 0.0025; - if (dataIncrement < -5.0) - dataIncrement = -5.0; - else if (dataIncrement > 5.0) - dataIncrement = 5.0; - int setProgress = (int) ((dataIncrement + 5) * 100); - manualSeekBarChange = true; - seekBarControlMain.setProgress(setProgress); - manualSeekBarChange = false; - editTextControlMain.setText(DataFormatter.formatDouble(dataIncrement, DataFormatter.MEDIUM_PRECISION_FORMAT)); - } catch (NumberFormatException e) { - DataFormatter.formatDouble(0, DataFormatter.MEDIUM_PRECISION_FORMAT); - } - } - }); - - buttonControlMain3.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - try { - Float value = Float.parseFloat(editTextControlMain.getText().toString()); - if (value > 5) - value = 5f; - else if (value < -5) - value = -5f; - editTextControlMain.setText(DataFormatter.formatDouble(value, DataFormatter.MEDIUM_PRECISION_FORMAT)); - manualSeekBarChange = true; - seekBarControlMain.setProgress((int) map(value, -5, 5, 0, 1000)); - manualSeekBarChange = false; - if (scienceLab.isConnected()) { - scienceLab.setPV1(value); - if (!isSet1) { - buttonControlMain3.setBackgroundColor(Color.GREEN); - isSet1 = true; - } - } - } catch (NumberFormatException e) { - editTextControlMain.setText(DataFormatter.formatDouble(0, DataFormatter.MEDIUM_PRECISION_FORMAT)); - } - - } - }); - //Text focus listener to figure out if the value has changed. Change color of SET button - editTextControlMain.addTextChangedListener(new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { - - } - - @Override - public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { - if (isSet1) { - buttonControlMain3.setBackgroundColor(Color.parseColor("#c72c2c")); - isSet1 = false; - } - } - - @Override - public void afterTextChanged(Editable editable) { - - } - }); - - seekBarControlMain.setMax(1000); - editTextControlMain.setText(DataFormatter.formatDouble(-5f, DataFormatter.MEDIUM_PRECISION_FORMAT)); - - - seekBarControlMain.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { - - @Override - public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { - if (!manualSeekBarChange) { - double text = map(progress, 0, 1000, -5.0, 5.0); - DecimalFormat df = new DecimalFormat("0.0000"); - editTextControlMain.setText( - DataFormatter.formatDouble(text, DataFormatter.MEDIUM_PRECISION_FORMAT)); - } - } - - @Override - public void onStartTrackingTouch(SeekBar seekBar) { - if (isSet1) { - buttonControlMain3.setBackgroundColor(Color.parseColor("#c72c2c")); - isSet1 = false; - } - } - - @Override - public void onStopTrackingTouch(SeekBar seekBar) { - - } - }); - - break; - - case 1: - buttonControlMain1.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - try { - if (isSet2) { - buttonControlMain3.setBackgroundColor(Color.parseColor("#c72c2c")); - isSet2 = false; - } - Double data = Double.parseDouble(editTextControlMain.getText().toString()); - Double dataDecrement = data - 0.0025; - if (dataDecrement < -3.3) - dataDecrement = -3.3; - else if (dataDecrement > 3.3) - dataDecrement = 3.3; - int setProgress = (int) ((dataDecrement + 3.3) * 100); - manualSeekBarChange = true; - seekBarControlMain.setProgress(setProgress); - manualSeekBarChange = false; - editTextControlMain.setText(DataFormatter.formatDouble(dataDecrement, DataFormatter.MEDIUM_PRECISION_FORMAT)); - } catch (NumberFormatException e) { - editTextControlMain.setText("0"); - } - } - }); - - buttonControlMain2.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - try { - if (isSet2) { - buttonControlMain3.setBackgroundColor(Color.parseColor("#c72c2c")); - isSet2 = false; - } - Double data1 = Double.parseDouble(editTextControlMain.getText().toString()); - Double dataIncrement = data1 + 0.0025; - if (dataIncrement < -3.3) - dataIncrement = -3.3; - else if (dataIncrement > 3.3) - dataIncrement = 3.3; - int setProgress = (int) ((dataIncrement + 3.3) * 100); - manualSeekBarChange = true; - seekBarControlMain.setProgress(setProgress); - manualSeekBarChange = false; - editTextControlMain.setText(DataFormatter.formatDouble(dataIncrement, DataFormatter.MEDIUM_PRECISION_FORMAT)); - } catch (NumberFormatException e) { - editTextControlMain.setText(DataFormatter.formatDouble(0, DataFormatter.MEDIUM_PRECISION_FORMAT)); - } - } - }); - - buttonControlMain3.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - try { - Float value = Float.parseFloat(editTextControlMain.getText().toString()); - if (value > 3.3) - value = 3.3f; - else if (value < -3.3) - value = -3.3f; - editTextControlMain.setText(DataFormatter.formatDouble(value, DataFormatter.MEDIUM_PRECISION_FORMAT)); - manualSeekBarChange = true; - seekBarControlMain.setProgress((int) ((value + 3.3) * 100)); - manualSeekBarChange = false; - if (scienceLab.isConnected()) { - scienceLab.setPV2(value); - if (!isSet2) { - buttonControlMain3.setBackgroundColor(Color.GREEN); - isSet2 = true; - } - } - } catch (NumberFormatException e) { - editTextControlMain.setText(DataFormatter.formatDouble(0, DataFormatter.MEDIUM_PRECISION_FORMAT)); - } - } - }); - - //Text focus listener to figure out if the value has changed. Change color of SET button - editTextControlMain.addTextChangedListener(new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { - - } - - @Override - public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { - if (isSet2) { - buttonControlMain3.setBackgroundColor(Color.parseColor("#c72c2c")); - isSet2 = false; - } - } - - @Override - public void afterTextChanged(Editable editable) { - - } - }); - - seekBarControlMain.setMax(660); - editTextControlMain.setText(DataFormatter.formatDouble(-3.3, DataFormatter.MEDIUM_PRECISION_FORMAT)); - - seekBarControlMain.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { - - @Override - public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { - if (!manualSeekBarChange) { - double text = map(progress, 0, 660, -3.3, 3.3); - editTextControlMain.setText(DataFormatter.formatDouble(text, DataFormatter.MEDIUM_PRECISION_FORMAT)); - } - } - - @Override - public void onStartTrackingTouch(SeekBar seekBar) { - if (isSet2) { - buttonControlMain3.setBackgroundColor(Color.parseColor("#c72c2c")); - isSet2 = false; - } - } - - @Override - public void onStopTrackingTouch(SeekBar seekBar) { - - } - }); - break; - - case 2: - buttonControlMain1.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - try { - if (isSet3) { - buttonControlMain3.setBackgroundColor(Color.parseColor("#c72c2c")); - isSet3 = false; - } - Double data = Double.parseDouble(editTextControlMain.getText().toString()); - Double dataDecrement = data - 0.0025; - if (dataDecrement < 0.0) - dataDecrement = 0.0; - else if (dataDecrement > 3.3) - dataDecrement = 3.3; - manualSeekBarChange = true; - seekBarControlMain.setProgress((int) (dataDecrement * 100)); - manualSeekBarChange = false; - editTextControlMain.setText(DataFormatter.formatDouble(dataDecrement, DataFormatter.MEDIUM_PRECISION_FORMAT)); - } catch (NumberFormatException e) { - editTextControlMain.setText(DataFormatter.formatDouble(0, DataFormatter.MEDIUM_PRECISION_FORMAT)); - } - } - }); - - buttonControlMain2.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - try { - if (isSet3) { - buttonControlMain3.setBackgroundColor(Color.parseColor("#c72c2c")); - isSet3 = false; - } - Double data1 = Double.parseDouble(editTextControlMain.getText().toString()); - Double dataIncrement = data1 + 0.0025; - if (dataIncrement < 0.0) - dataIncrement = 0.0; - else if (dataIncrement > 3.3) - dataIncrement = 3.3; - manualSeekBarChange = true; - seekBarControlMain.setProgress((int) (dataIncrement * 100)); - manualSeekBarChange = false; - editTextControlMain.setText(DataFormatter.formatDouble(dataIncrement, DataFormatter.MEDIUM_PRECISION_FORMAT)); - } catch (NumberFormatException e) { - editTextControlMain.setText(DataFormatter.formatDouble(0f, DataFormatter.MEDIUM_PRECISION_FORMAT)); - } - } - }); - - buttonControlMain3.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - try { - Float value = Float.parseFloat(editTextControlMain.getText().toString()); - if (value > 3.3) - value = 3.3f; - else if (value < 0) - value = 0f; - editTextControlMain.setText(DataFormatter.formatDouble(value, DataFormatter.MEDIUM_PRECISION_FORMAT)); - manualSeekBarChange = true; - seekBarControlMain.setProgress((int) map(value, 0, 3.3, 0, 330)); - manualSeekBarChange = false; - if (scienceLab.isConnected()) { - scienceLab.setPV3(value); - if (!isSet3) { - buttonControlMain3.setBackgroundColor(Color.GREEN); - isSet3 = true; - } - } - } catch (NumberFormatException e) { - editTextControlMain.setText(DataFormatter.formatDouble(0, DataFormatter.MEDIUM_PRECISION_FORMAT)); - } - - } - }); - - //Text focus listener to figure out if the value has changed. Change color of SET button - editTextControlMain.addTextChangedListener(new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { - - } - - @Override - public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { - if (isSet3) { - buttonControlMain3.setBackgroundColor(Color.parseColor("#c72c2c")); - isSet3 = false; - } - } - - @Override - public void afterTextChanged(Editable editable) { - - } - }); - - seekBarControlMain.setMax(330); - editTextControlMain.setText(DataFormatter.formatDouble(0, DataFormatter.MEDIUM_PRECISION_FORMAT)); - - - seekBarControlMain.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { - - @Override - public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { - if (!manualSeekBarChange) { - double text = map(progress, 0, 330, 0, 3.3); - editTextControlMain.setText(DataFormatter.formatDouble(text, DataFormatter.MEDIUM_PRECISION_FORMAT)); - } - } - - @Override - public void onStartTrackingTouch(SeekBar seekBar) { - if (isSet3) { - buttonControlMain3.setBackgroundColor(Color.parseColor("#c72c2c")); - isSet3 = false; - } - } - - @Override - public void onStopTrackingTouch(SeekBar seekBar) { - - } - }); - - break; - - case 3: - buttonControlMain1.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - try { - if (isSet4) { - buttonControlMain3.setBackgroundColor(Color.parseColor("#c72c2c")); - isSet4 = false; - } - Double data = Double.parseDouble(editTextControlMain.getText().toString()); - Double dataDecrement = data - 0.0025; - if (dataDecrement < 0.0) - dataDecrement = 0.0; - else if (dataDecrement > 3.3) - dataDecrement = 3.3; - manualSeekBarChange = true; - seekBarControlMain.setProgress((int) (dataDecrement * 100)); - manualSeekBarChange = false; - editTextControlMain.setText(DataFormatter.formatDouble(dataDecrement, DataFormatter.MEDIUM_PRECISION_FORMAT)); - } catch (NumberFormatException e) { - editTextControlMain.setText(DataFormatter.formatDouble(0, DataFormatter.MEDIUM_PRECISION_FORMAT)); - } - } - }); - - buttonControlMain2.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - try { - if (isSet4) { - buttonControlMain3.setBackgroundColor(Color.parseColor("#c72c2c")); - isSet4 = false; - } - Double data1 = Double.parseDouble(editTextControlMain.getText().toString()); - Double dataIncrement = data1 + 0.0025; - if (dataIncrement < 0.0) - dataIncrement = 0.0; - else if (dataIncrement > 3.3) - dataIncrement = 3.3; - manualSeekBarChange = true; - seekBarControlMain.setProgress((int) (dataIncrement * 100)); - manualSeekBarChange = false; - editTextControlMain.setText(DataFormatter.formatDouble(dataIncrement, DataFormatter.MEDIUM_PRECISION_FORMAT)); - } catch (NumberFormatException e) { - editTextControlMain.setText(DataFormatter.formatDouble(0, DataFormatter.MEDIUM_PRECISION_FORMAT)); - } - } - }); - - buttonControlMain3.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - try { - Float value = Float.parseFloat(editTextControlMain.getText().toString()); - if (value > 3.3) - value = 3.3f; - else if (value < 0) - value = 0f; - editTextControlMain.setText(DataFormatter.formatDouble(value, DataFormatter.MEDIUM_PRECISION_FORMAT)); - manualSeekBarChange = true; - seekBarControlMain.setProgress((int) (value * 100)); - manualSeekBarChange = false; - if (scienceLab.isConnected()) { - scienceLab.setPCS(value); - if (!isSet4) { - buttonControlMain3.setBackgroundColor(Color.GREEN); - isSet4 = true; - } - } - } catch (NumberFormatException e) { - editTextControlMain.setText(DataFormatter.formatDouble(0, DataFormatter.MEDIUM_PRECISION_FORMAT)); - } - } - }); - - //Text focus listener to figure out if the value has changed. Change color of SET button - editTextControlMain.addTextChangedListener(new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { - - } - - @Override - public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { - if (isSet4) { - buttonControlMain3.setBackgroundColor(Color.parseColor("#c72c2c")); - isSet4 = false; - } - } - - @Override - public void afterTextChanged(Editable editable) { - - } - }); - - seekBarControlMain.setMax(330); - DataFormatter.formatDouble(0, DataFormatter.MEDIUM_PRECISION_FORMAT); - - seekBarControlMain.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { - - @Override - public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { - if (!manualSeekBarChange) { - double text = map(progress, 0, 330, 0.0, 3.3); - editTextControlMain.setText(DataFormatter.formatDouble(text, DataFormatter.MEDIUM_PRECISION_FORMAT)); - } - } - - @Override - public void onStartTrackingTouch(SeekBar seekBar) { - if (isSet4) { - buttonControlMain3.setBackgroundColor(Color.parseColor("#c72c2c")); - isSet4 = false; - } - } - - @Override - public void onStopTrackingTouch(SeekBar seekBar) { - - } - }); - break; - - case 4: - buttonControlMain1.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - try { - if (isSet5) { - buttonControlMain3.setBackgroundColor(Color.parseColor("#c72c2c")); - isSet5 = false; - } - int data = Integer.parseInt(editTextControlMain.getText().toString()); - int dataDecrement = data - 1; - if (dataDecrement < 10) - dataDecrement = 10; - else if (dataDecrement > 5000) - dataDecrement = 5000; - manualSeekBarChange = true; - seekBarControlMain.setProgress(dataDecrement - 10); - manualSeekBarChange = false; - DecimalFormat df = new DecimalFormat("####"); - editTextControlMain.setText(df.format(dataDecrement)); - } catch (NumberFormatException e) { - editTextControlMain.setText("0"); - } - } - }); - - buttonControlMain2.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - try { - if (isSet5) { - buttonControlMain3.setBackgroundColor(Color.parseColor("#c72c2c")); - isSet5 = false; - } - int data1 = Integer.parseInt(editTextControlMain.getText().toString()); - int dataIncrement = data1 + 1; - if (dataIncrement < 10) - dataIncrement = 10; - else if (dataIncrement > 5000) - dataIncrement = 5000; - manualSeekBarChange = true; - seekBarControlMain.setProgress(dataIncrement - 10); - manualSeekBarChange = false; - DecimalFormat df = new DecimalFormat("####"); - editTextControlMain.setText(df.format(dataIncrement)); - } catch (NumberFormatException e) { - editTextControlMain.setText("0"); - } - } - }); - - buttonControlMain3.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - try { - int value = Integer.parseInt(editTextControlMain.getText().toString()); - if (value < 10) - value = 10; - else if (value > 5000) - value = 5000; - editTextControlMain.setText(String.valueOf(value)); - manualSeekBarChange = true; - seekBarControlMain.setProgress(value - 10); - manualSeekBarChange = false; - if (scienceLab.isConnected()) { - scienceLab.setSine1(value); - if (!isSet5) { - buttonControlMain3.setBackgroundColor(Color.GREEN); - isSet5 = true; - } - } - } catch (NumberFormatException e) { - editTextControlMain.setText("0"); - } - } - }); - - //Text focus listener to figure out if the value has changed. Change color of SET button - editTextControlMain.addTextChangedListener(new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { - - } - - @Override - public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { - if (isSet5) { - buttonControlMain3.setBackgroundColor(Color.parseColor("#c72c2c")); - isSet5 = false; - } - } - - @Override - public void afterTextChanged(Editable editable) { - - } - }); - - seekBarControlMain.setMax(4990); - editTextControlMain.setText("10"); - - seekBarControlMain.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { - - @Override - public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { - if (!manualSeekBarChange) { - int frequency = (int) map(progress, 0, 4990, 10, 5000); - DecimalFormat df = new DecimalFormat("####"); - editTextControlMain.setText(df.format(frequency)); - } - } - - @Override - public void onStartTrackingTouch(SeekBar seekBar) { - if (isSet5) { - buttonControlMain3.setBackgroundColor(Color.parseColor("#c72c2c")); - isSet5 = false; - } - } - - @Override - public void onStopTrackingTouch(SeekBar seekBar) { - - } - }); - break; - - case 5: - buttonControlMain1.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - try { - if (isSet6) { - buttonControlMain3.setBackgroundColor(Color.parseColor("#c72c2c")); - isSet6 = false; - } - int data = Integer.parseInt(editTextControlMain.getText().toString()); - int dataDecrement = data - 1; - if (dataDecrement < 10) - dataDecrement = 10; - else if (dataDecrement > 5000) - dataDecrement = 5000; - manualSeekBarChange = true; - seekBarControlMain.setProgress(dataDecrement - 10); - manualSeekBarChange = false; - DecimalFormat df = new DecimalFormat("####"); - editTextControlMain.setText(df.format(dataDecrement)); - } catch (NumberFormatException e) { - editTextControlMain.setText("0"); - } - } - }); - - buttonControlMain2.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - try { - if (isSet6) { - buttonControlMain3.setBackgroundColor(Color.parseColor("#c72c2c")); - isSet6 = false; - } - int data1 = Integer.parseInt(editTextControlMain.getText().toString()); - int dataIncrement = data1 + 1; - if (dataIncrement < 10) - dataIncrement = 10; - else if (dataIncrement > 5000) - dataIncrement = 5000; - manualSeekBarChange = true; - seekBarControlMain.setProgress(dataIncrement - 10); - manualSeekBarChange = false; - DecimalFormat df = new DecimalFormat("####"); - editTextControlMain.setText(df.format(dataIncrement)); - } catch (NumberFormatException e) { - editTextControlMain.setText("0"); - } - } - }); - - buttonControlMain3.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - try { - int value = Integer.parseInt(editTextControlMain.getText().toString()); - if (value < 10) - value = 10; - else if (value > 5000) - value = 5000; - editTextControlMain.setText(String.valueOf(value)); - manualSeekBarChange = true; - seekBarControlMain.setProgress(value - 10); - manualSeekBarChange = false; - if (scienceLab.isConnected()) { - scienceLab.setSine2(value); - if (!isSet6) { - buttonControlMain3.setBackgroundColor(Color.GREEN); - isSet6 = true; - } - } - } catch (NumberFormatException e) { - editTextControlMain.setText("0"); - } - } - }); - - //Text focus listener to figure out if the value has changed. Change color of SET button - editTextControlMain.addTextChangedListener(new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { - - } - - @Override - public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { - if (isSet6) { - buttonControlMain3.setBackgroundColor(Color.parseColor("#c72c2c")); - isSet6 = false; - } - } - - @Override - public void afterTextChanged(Editable editable) { - - } - }); - - seekBarControlMain.setMax(4990); - editTextControlMain.setText("10"); - seekBarControlMain.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { - - @Override - public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { - if (!manualSeekBarChange) { - int frequency = (int) map(progress, 0, 4990, 10, 5000); - DecimalFormat df = new DecimalFormat("####"); - editTextControlMain.setText(df.format(frequency)); - } - } - - @Override - public void onStartTrackingTouch(SeekBar seekBar) { - if (isSet6) { - buttonControlMain3.setBackgroundColor(Color.parseColor("#c72c2c")); - isSet6 = false; - } - } - - @Override - public void onStopTrackingTouch(SeekBar seekBar) { - - } - }); - break; - - case 6: - buttonControlMain1.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - try { - if (isSet7) { - buttonControlMain3.setBackgroundColor(Color.parseColor("#c72c2c")); - isSet7 = false; - } - int data = Integer.parseInt(editTextControlMain.getText().toString()); - int dataDecrement = data - 1; - if (dataDecrement < 10) - dataDecrement = 10; - else if (dataDecrement > 5000) - dataDecrement = 5000; - manualSeekBarChange = true; - seekBarControlMain.setProgress(dataDecrement - 10); - manualSeekBarChange = false; - DecimalFormat df = new DecimalFormat("####"); - editTextControlMain.setText(df.format(dataDecrement)); - } catch (NumberFormatException e) { - editTextControlMain.setText("0"); - } - } - }); - - buttonControlMain2.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - try { - if (isSet7) { - buttonControlMain3.setBackgroundColor(Color.parseColor("#c72c2c")); - isSet7 = false; - } - int data1 = Integer.parseInt(editTextControlMain.getText().toString()); - int dataIncrement = data1 + 1; - if (dataIncrement < 10) - dataIncrement = 10; - else if (dataIncrement > 5000) - dataIncrement = 5000; - manualSeekBarChange = true; - seekBarControlMain.setProgress(dataIncrement - 10); - manualSeekBarChange = false; - DecimalFormat df = new DecimalFormat("####"); - editTextControlMain.setText(df.format(dataIncrement)); - } catch (NumberFormatException e) { - editTextControlMain.setText("0"); - } - } - }); - - buttonControlMain3.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - try { - int value = Integer.parseInt(editTextControlMain.getText().toString()); - if (value < 10) - value = 10; - else if (value > 5000) - value = 5000; - editTextControlMain.setText(String.valueOf(value)); - manualSeekBarChange = true; - seekBarControlMain.setProgress(value - 10); - manualSeekBarChange = false; - // Setting a SQUARE Wave in SQR1 by default - if (scienceLab.isConnected()) { - scienceLab.setSqr1(value, -1, false); - if (!isSet7) { - buttonControlMain3.setBackgroundColor(Color.GREEN); - isSet7 = true; - } - } - } catch (NumberFormatException e) { - editTextControlMain.setText("0"); - } - } - }); - - //Text focus listener to figure out if the value has changed. Change color of SET button - editTextControlMain.addTextChangedListener(new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { - - } - - @Override - public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { - if (isSet7) { - buttonControlMain3.setBackgroundColor(Color.parseColor("#c72c2c")); - isSet7 = false; - } - } - - @Override - public void afterTextChanged(Editable editable) { - - } - }); - - seekBarControlMain.setMax(5000); - editTextControlMain.setText("10"); - seekBarControlMain.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { - - @Override - public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { - if (!manualSeekBarChange) { - int frequency = (int) map(progress, 0, 4990, 10, 5000); - DecimalFormat df = new DecimalFormat("####"); - editTextControlMain.setText(df.format(frequency)); - } - } - - @Override - public void onStartTrackingTouch(SeekBar seekBar) { - if (isSet7) { - buttonControlMain3.setBackgroundColor(Color.parseColor("#c72c2c")); - isSet7 = false; - } - } - - @Override - public void onStopTrackingTouch(SeekBar seekBar) { - - } - }); - break; - } - - } - - - @Override - public int getItemCount() { - return mDataset.length; - } - -} diff --git a/app/src/main/java/io/pslab/adapters/MPUDataAdapter.java b/app/src/main/java/io/pslab/adapters/MPUDataAdapter.java deleted file mode 100644 index d22cfe3c5..000000000 --- a/app/src/main/java/io/pslab/adapters/MPUDataAdapter.java +++ /dev/null @@ -1,70 +0,0 @@ -package io.pslab.adapters; - -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.TextView; - -import androidx.recyclerview.widget.RecyclerView; - -import io.pslab.DataFormatter; -import io.pslab.R; -import io.pslab.models.DataMPU6050; -import io.realm.RealmResults; - -/** - * Created by viveksb007 on 13/8/17. - */ - -public class MPUDataAdapter extends RecyclerView.Adapter { - - private RealmResults results; - - public MPUDataAdapter(RealmResults results) { - this.results = results; - } - - @Override - public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { - View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.sensor_mpu6050_data_card, parent, false); - return new ViewHolder(itemView); - } - - @Override - public void onBindViewHolder(ViewHolder holder, int position) { - DataMPU6050 temp = results.get(position); - if (temp != null) { - holder.tvAx.setText(DataFormatter.formatDouble(temp.getAx(), DataFormatter.LOW_PRECISION_FORMAT)); - holder.tvAy.setText(DataFormatter.formatDouble(temp.getAy(), DataFormatter.LOW_PRECISION_FORMAT)); - holder.tvAz.setText(DataFormatter.formatDouble(temp.getAz(), DataFormatter.LOW_PRECISION_FORMAT)); - holder.tvGx.setText(DataFormatter.formatDouble(temp.getGx(), DataFormatter.LOW_PRECISION_FORMAT)); - holder.tvGy.setText(DataFormatter.formatDouble(temp.getGy(), DataFormatter.LOW_PRECISION_FORMAT)); - holder.tvGz.setText(DataFormatter.formatDouble(temp.getGz(), DataFormatter.LOW_PRECISION_FORMAT)); - holder.tvTemperature.setText(DataFormatter.formatDouble(temp.getTemperature(), DataFormatter.LOW_PRECISION_FORMAT)); - holder.tvTitle.setText("Raw Data #" + (position + 1)); - } - } - - @Override - public int getItemCount() { - return results.size(); - } - - public class ViewHolder extends RecyclerView.ViewHolder { - - private TextView tvAx, tvAy, tvAz, tvGx, tvGy, tvGz, tvTemperature, tvTitle; - - ViewHolder(View itemView) { - super(itemView); - tvAx = itemView.findViewById(R.id.tv_sensor_mpu6050_ax); - tvAy = itemView.findViewById(R.id.tv_sensor_mpu6050_ay); - tvAz = itemView.findViewById(R.id.tv_sensor_mpu6050_az); - tvTemperature = itemView.findViewById(R.id.tv_sensor_mpu6050_temp); - tvGx = itemView.findViewById(R.id.tv_sensor_mpu6050_gx); - tvGy = itemView.findViewById(R.id.tv_sensor_mpu6050_gy); - tvGz = itemView.findViewById(R.id.tv_sensor_mpu6050_gz); - tvTitle = itemView.findViewById(R.id.card_title); - } - } - -} diff --git a/app/src/main/java/io/pslab/adapters/OscilloscopeMeasurementsAdapter.java b/app/src/main/java/io/pslab/adapters/OscilloscopeMeasurementsAdapter.java deleted file mode 100644 index f79acaa46..000000000 --- a/app/src/main/java/io/pslab/adapters/OscilloscopeMeasurementsAdapter.java +++ /dev/null @@ -1,77 +0,0 @@ -package io.pslab.adapters; - -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.RecyclerView; - -import java.math.RoundingMode; -import java.text.DecimalFormat; - -import io.pslab.R; -import io.pslab.activity.OscilloscopeActivity.ChannelMeasurements; -import io.pslab.activity.OscilloscopeActivity.CHANNEL; -import io.pslab.others.OscilloscopeMeasurements; - -public class OscilloscopeMeasurementsAdapter extends RecyclerView.Adapter { - - private final String[] channels; - private final Integer[] channelColors; - - public static class ViewHolder extends RecyclerView.ViewHolder { - - private final TextView measurementsView; - - public ViewHolder(@NonNull View itemView) { - super(itemView); - this.measurementsView = itemView.findViewById(R.id.textview_measurements); - } - - public void setMeasurements(@NonNull String channelString, @NonNull Integer channelColor) { - CHANNEL channel = CHANNEL.valueOf(channelString); - double frequency = OscilloscopeMeasurements.channel.get(channel).get(ChannelMeasurements.FREQUENCY); - double amplitude = OscilloscopeMeasurements.channel.get(channel).get(ChannelMeasurements.AMPLITUDE); - double period = OscilloscopeMeasurements.channel.get(channel).get(ChannelMeasurements.PERIOD); - double positivePeak = OscilloscopeMeasurements.channel.get(channel).get(ChannelMeasurements.POSITIVE_PEAK); - double negativePeak = OscilloscopeMeasurements.channel.get(channel).get(ChannelMeasurements.NEGATIVE_PEAK); - DecimalFormat df = new DecimalFormat("#.##"); - df.setRoundingMode(RoundingMode.CEILING); - if (frequency >= 1000) { - frequency /= 1000; - String string = "Vpp: " + df.format(amplitude) + " V\nVp+: " + df.format(positivePeak) + " V Vp-: " + df.format(negativePeak) + " V\nf: " + df.format(frequency) + " kHz P: " + df.format(period) + " ms"; - measurementsView.setTextColor(channelColor); - measurementsView.setText(string); - } else { - String string = "Vpp: " + df.format(amplitude) + " V\nVp+: " + df.format(positivePeak) + " V Vp-: " + df.format(negativePeak) + " V\nf: " + df.format(frequency) + " Hz P: " + df.format(period) + " ms"; - measurementsView.setTextColor(channelColor); - measurementsView.setText(string); - } - } - } - - public OscilloscopeMeasurementsAdapter(@NonNull String[] channels, @NonNull Integer[] channelColors) { - this.channels = channels; - this.channelColors = channelColors; - } - - @NonNull - @Override - public OscilloscopeMeasurementsAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - View itemView = LayoutInflater.from(parent.getContext()) - .inflate(R.layout.measurement_item, parent, false); - return new ViewHolder(itemView); - } - - @Override - public void onBindViewHolder(@NonNull OscilloscopeMeasurementsAdapter.ViewHolder holder, int position) { - holder.setMeasurements(channels[position], channelColors[position]); - } - - @Override - public int getItemCount() { - return channels.length; - } -} diff --git a/app/src/main/java/io/pslab/adapters/SensorLoggerListAdapter.java b/app/src/main/java/io/pslab/adapters/SensorLoggerListAdapter.java deleted file mode 100644 index 2c341d8f3..000000000 --- a/app/src/main/java/io/pslab/adapters/SensorLoggerListAdapter.java +++ /dev/null @@ -1,588 +0,0 @@ -package io.pslab.adapters; - -import android.app.Activity; -import android.content.DialogInterface; -import android.content.Intent; -import android.os.Environment; -import androidx.annotation.NonNull; - -import com.google.android.material.snackbar.Snackbar; - -import androidx.appcompat.app.AlertDialog; -import androidx.cardview.widget.CardView; -import androidx.core.content.res.ResourcesCompat; -import androidx.recyclerview.widget.RecyclerView; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; - -import org.json.JSONArray; -import org.json.JSONException; -import org.json.JSONObject; - -import java.io.File; -import java.util.Date; - -import io.pslab.R; -import io.pslab.activity.AccelerometerActivity; -import io.pslab.activity.BarometerActivity; -import io.pslab.activity.CompassActivity; -import io.pslab.activity.GasSensorActivity; -import io.pslab.activity.GyroscopeActivity; -import io.pslab.activity.LogicalAnalyzerActivity; -import io.pslab.activity.LuxMeterActivity; -import io.pslab.activity.MapsActivity; -import io.pslab.activity.MultimeterActivity; -import io.pslab.activity.OscilloscopeActivity; -import io.pslab.activity.PowerSourceActivity; -import io.pslab.activity.RoboticArmActivity; -import io.pslab.activity.SoundMeterActivity; -import io.pslab.activity.ThermometerActivity; -import io.pslab.activity.WaveGeneratorActivity; -import io.pslab.models.AccelerometerData; -import io.pslab.models.BaroData; -import io.pslab.models.CompassData; -import io.pslab.models.GasSensorData; -import io.pslab.models.GyroData; -import io.pslab.models.LogicAnalyzerData; -import io.pslab.models.LuxData; -import io.pslab.models.MultimeterData; -import io.pslab.models.OscilloscopeData; -import io.pslab.models.PSLabSensor; -import io.pslab.models.PowerSourceData; -import io.pslab.models.SensorDataBlock; -import io.pslab.models.ServoData; -import io.pslab.models.SoundData; -import io.pslab.models.ThermometerData; -import io.pslab.models.WaveGeneratorData; -import io.pslab.others.CSVLogger; -import io.pslab.others.CustomSnackBar; -import io.pslab.others.LocalDataLog; -import io.realm.RealmRecyclerViewAdapter; -import io.realm.RealmResults; - -/** - * Created by Avjeet on 03-08-2018. - */ -public class SensorLoggerListAdapter extends RealmRecyclerViewAdapter { - - - private final String KEY_LOG = "has_log"; - private final String DATA_BLOCK = "data_block"; - private Activity context; - - public SensorLoggerListAdapter(RealmResults results, Activity context) { - super(results, true, true); - this.context = context; - } - - @NonNull - @Override - public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - View itemView = LayoutInflater.from(parent.getContext()).inflate( - R.layout.logger_data_item, parent, false); - return new ViewHolder(itemView); - } - - @Override - public void onBindViewHolder(@NonNull final ViewHolder holder, int position) { - final SensorDataBlock block = getItem(position); - assert block != null; - switch (block.getSensorType()) { - case PSLabSensor.LUXMETER: - holder.sensor.setText(context.getResources().getString(R.string.lux_meter)); - holder.tileIcon.setImageDrawable(ResourcesCompat.getDrawable(context.getResources(), R.drawable.tile_icon_lux_meter_log, null)); - break; - case PSLabSensor.BAROMETER: - holder.sensor.setText(context.getResources().getString(R.string.baro_meter)); - holder.tileIcon.setImageDrawable(ResourcesCompat.getDrawable(context.getResources(), R.drawable.tile_icon_barometer_log, null)); - break; - case PSLabSensor.GYROSCOPE: - holder.sensor.setText(context.getResources().getString(R.string.gyroscope)); - holder.tileIcon.setImageDrawable(ResourcesCompat.getDrawable(context.getResources(), R.drawable.gyroscope_logo, null)); - break; - case PSLabSensor.COMPASS: - holder.sensor.setText(context.getResources().getString(R.string.compass)); - holder.tileIcon.setImageDrawable(ResourcesCompat.getDrawable(context.getResources(), R.drawable.tile_icon_compass_log, null)); - break; - case PSLabSensor.ACCELEROMETER: - holder.sensor.setText(context.getResources().getString(R.string.accelerometer)); - holder.tileIcon.setImageDrawable(ResourcesCompat.getDrawable(context.getResources(), R.drawable.tile_icon_accelerometer, null)); - break; - case PSLabSensor.THERMOMETER: - holder.sensor.setText(R.string.thermometer); - holder.tileIcon.setImageDrawable(ResourcesCompat.getDrawable(context.getResources(), R.drawable.thermometer_logo, null)); - break; - case PSLabSensor.ROBOTIC_ARM: - holder.sensor.setText(R.string.robotic_arm); - holder.tileIcon.setImageDrawable(ResourcesCompat.getDrawable(context.getResources(), R.drawable.robotic_arm, null)); - break; - case PSLabSensor.WAVE_GENERATOR: - holder.sensor.setText(R.string.wave_generator); - holder.tileIcon.setImageDrawable(ResourcesCompat.getDrawable(context.getResources(), R.drawable.tile_icon_wave_generator, null)); - break; - case PSLabSensor.OSCILLOSCOPE: - holder.sensor.setText(R.string.oscilloscope); - holder.tileIcon.setImageDrawable(ResourcesCompat.getDrawable(context.getResources(), R.drawable.tile_icon_oscilloscope, null)); - break; - case PSLabSensor.POWER_SOURCE: - holder.sensor.setText(R.string.power_source); - holder.tileIcon.setImageDrawable(ResourcesCompat.getDrawable(context.getResources(), R.drawable.tile_icon_power_source, null)); - break; - case PSLabSensor.MULTIMETER: - holder.sensor.setText(R.string.multimeter); - holder.tileIcon.setImageDrawable(ResourcesCompat.getDrawable(context.getResources(), R.drawable.tile_icon_multimeter, null)); - break; - case PSLabSensor.LOGIC_ANALYZER: - holder.sensor.setText(R.string.logical_analyzer); - holder.tileIcon.setImageDrawable(ResourcesCompat.getDrawable(context.getResources(), R.drawable.tile_icon_logic_analyzer, null)); - break; - case PSLabSensor.GAS_SENSOR: - holder.sensor.setText(R.string.gas_sensor); - holder.tileIcon.setImageDrawable(ResourcesCompat.getDrawable(context.getResources(), R.drawable.tile_icon_gas, null)); - break; - case PSLabSensor.SOUND_METER: - holder.sensor.setText(R.string.sound_meter); - holder.tileIcon.setImageDrawable(ResourcesCompat.getDrawable(context.getResources(), R.drawable.tile_icon_gas, null)); - break; - default: - break; - } - holder.dateTime.setText(String.valueOf(CSVLogger.FILE_NAME_FORMAT.format(new Date(block.getBlock())))); - holder.cardView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - handleCardViewClick(block); - } - }); - holder.deleteIcon.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - handleDeleteItem(block); - } - }); - holder.mapIcon.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - populateMapData(block); - } - }); - } - - private void handleCardViewClick(SensorDataBlock block) { - if (block.getSensorType().equalsIgnoreCase(context.getResources().getString(R.string.lux_meter))) { - Intent LuxMeter = new Intent(context, LuxMeterActivity.class); - LuxMeter.putExtra(KEY_LOG, true); - LuxMeter.putExtra(DATA_BLOCK, block.getBlock()); - context.startActivity(LuxMeter); - } else if (block.getSensorType().equalsIgnoreCase(context.getResources().getString(R.string.baro_meter))) { - Intent BaroMeter = new Intent(context, BarometerActivity.class); - BaroMeter.putExtra(KEY_LOG, true); - BaroMeter.putExtra(DATA_BLOCK, block.getBlock()); - context.startActivity(BaroMeter); - } else if (block.getSensorType().equalsIgnoreCase(context.getResources().getString(R.string.gyroscope))) { - Intent Gyroscope = new Intent(context, GyroscopeActivity.class); - Gyroscope.putExtra(KEY_LOG, true); - Gyroscope.putExtra(DATA_BLOCK, block.getBlock()); - context.startActivity(Gyroscope); - } else if (block.getSensorType().equalsIgnoreCase(context.getResources().getString(R.string.compass))) { - Intent Compass = new Intent(context, CompassActivity.class); - Compass.putExtra(KEY_LOG, true); - Compass.putExtra(DATA_BLOCK, block.getBlock()); - context.startActivity(Compass); - } else if (block.getSensorType().equalsIgnoreCase(context.getResources().getString(R.string.accelerometer))) { - Intent Accelerometer = new Intent(context, AccelerometerActivity.class); - Accelerometer.putExtra(KEY_LOG, true); - Accelerometer.putExtra(DATA_BLOCK, block.getBlock()); - context.startActivity(Accelerometer); - } else if (block.getSensorType().equalsIgnoreCase(context.getResources().getString(R.string.thermometer))) { - Intent Thermometer = new Intent(context, ThermometerActivity.class); - Thermometer.putExtra(KEY_LOG, true); - Thermometer.putExtra(DATA_BLOCK, block.getBlock()); - context.startActivity(Thermometer); - } else if (block.getSensorType().equalsIgnoreCase(context.getResources().getString(R.string.robotic_arm))) { - Intent RoboticArm = new Intent(context, RoboticArmActivity.class); - RoboticArm.putExtra(KEY_LOG, true); - RoboticArm.putExtra(DATA_BLOCK, block.getBlock()); - context.startActivity(RoboticArm); - } else if (block.getSensorType().equalsIgnoreCase(context.getResources().getString(R.string.wave_generator))) { - Intent waveGenerator = new Intent(context, WaveGeneratorActivity.class); - waveGenerator.putExtra(KEY_LOG, true); - waveGenerator.putExtra(DATA_BLOCK, block.getBlock()); - context.startActivity(waveGenerator); - } else if (block.getSensorType().equalsIgnoreCase(context.getResources().getString(R.string.oscilloscope))) { - Intent oscilloscope = new Intent(context, OscilloscopeActivity.class); - oscilloscope.putExtra(KEY_LOG, true); - oscilloscope.putExtra(DATA_BLOCK, block.getBlock()); - context.startActivity(oscilloscope); - } else if (block.getSensorType().equalsIgnoreCase(context.getResources().getString(R.string.power_source))) { - Intent powerSource = new Intent(context, PowerSourceActivity.class); - powerSource.putExtra(KEY_LOG, true); - powerSource.putExtra(DATA_BLOCK, block.getBlock()); - context.startActivity(powerSource); - } else if (block.getSensorType().equalsIgnoreCase(context.getResources().getString(R.string.multimeter))) { - Intent multimeter = new Intent(context, MultimeterActivity.class); - multimeter.putExtra(KEY_LOG, true); - multimeter.putExtra(DATA_BLOCK, block.getBlock()); - context.startActivity(multimeter); - } else if (block.getSensorType().equalsIgnoreCase(context.getResources().getString(R.string.logical_analyzer))) { - Intent laIntent = new Intent(context, LogicalAnalyzerActivity.class); - laIntent.putExtra(KEY_LOG, true); - laIntent.putExtra(DATA_BLOCK, block.getBlock()); - context.startActivity(laIntent); - } else if (block.getSensorType().equalsIgnoreCase(context.getResources().getString(R.string.gas_sensor))) { - Intent gasSensorIntent = new Intent(context, GasSensorActivity.class); - gasSensorIntent.putExtra(KEY_LOG, true); - gasSensorIntent.putExtra(DATA_BLOCK, block.getBlock()); - context.startActivity(gasSensorIntent); - } else if (block.getSensorType().equalsIgnoreCase(context.getString(R.string.sound_meter))) { - Intent soundMeterIntent = new Intent(context, SoundMeterActivity.class); - soundMeterIntent.putExtra(KEY_LOG, true); - soundMeterIntent.putExtra(DATA_BLOCK, block.getBlock()); - context.startActivity(soundMeterIntent); - } - } - - private void handleDeleteItem(final SensorDataBlock block) { - new AlertDialog.Builder(context) - .setTitle(context.getString(R.string.delete)) - .setMessage(context.getString(R.string.delete_confirmation) + " " + - CSVLogger.FILE_NAME_FORMAT.format(block.getBlock()) + "?") - .setPositiveButton(context.getString(R.string.delete), new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int whichButton) { - File logDirectory = new File( - Environment.getExternalStorageDirectory().getAbsolutePath() + - File.separator + CSVLogger.CSV_DIRECTORY + - File.separator + block.getSensorType() + - File.separator + CSVLogger.FILE_NAME_FORMAT.format(block.getBlock()) + ".csv"); - CustomSnackBar.showSnackBar(context.findViewById(android.R.id.content), context.getString(R.string.log_deleted), null, null, Snackbar.LENGTH_LONG); - if (block.getSensorType().equalsIgnoreCase(PSLabSensor.LUXMETER)) { - LocalDataLog.with().clearBlockOfLuxRecords(block.getBlock()); - } else if (block.getSensorType().equalsIgnoreCase(PSLabSensor.BAROMETER)) { - LocalDataLog.with().clearBlockOfBaroRecords(block.getBlock()); - } else if (block.getSensorType().equalsIgnoreCase(PSLabSensor.GYROSCOPE)) { - LocalDataLog.with().clearBlockOfBaroRecords(block.getBlock()); - } else if (block.getSensorType().equalsIgnoreCase(PSLabSensor.COMPASS)) { - LocalDataLog.with().clearBlockOfCompassRecords(block.getBlock()); - } else if (block.getSensorType().equalsIgnoreCase(PSLabSensor.ACCELEROMETER_CONFIGURATIONS)) { - LocalDataLog.with().clearBlockOfAccelerometerRecords(block.getBlock()); - } else if (block.getSensorType().equalsIgnoreCase(PSLabSensor.ROBOTIC_ARM)) { - LocalDataLog.with().clearBlockOfServoRecords(block.getBlock()); - } else if (block.getSensorType().equalsIgnoreCase(PSLabSensor.WAVE_GENERATOR)) { - LocalDataLog.with().clearBlockOfWaveRecords(block.getBlock()); - } else if (block.getSensorType().equalsIgnoreCase(PSLabSensor.OSCILLOSCOPE)) { - LocalDataLog.with().clearBlockOfOscilloscopeRecords(block.getBlock()); - } else if (block.getSensorType().equalsIgnoreCase(PSLabSensor.POWER_SOURCE)) { - LocalDataLog.with().clearBlockOfPowerRecords(block.getBlock()); - } else if (block.getSensorType().equalsIgnoreCase(PSLabSensor.MULTIMETER)) { - LocalDataLog.with().clearBlockOfMultimeterRecords(block.getBlock()); - } else if (block.getSensorType().equalsIgnoreCase(PSLabSensor.LOGIC_ANALYZER)) { - LocalDataLog.with().clearBlockOfLARecords(block.getBlock()); - } else if (block.getSensorType().equalsIgnoreCase(PSLabSensor.GAS_SENSOR)) { - LocalDataLog.with().clearBlockOfGasSensorRecords(block.getBlock()); - } else if (block.getSensorType().equalsIgnoreCase(PSLabSensor.SOUND_METER)) { - LocalDataLog.with().clearBlockOfSoundRecords(block.getBlock()); - } - LocalDataLog.with().clearSensorBlock(block.getBlock()); - dialog.dismiss(); - if (LocalDataLog.with().getAllSensorBlocks().size() <= 0) { - context.findViewById(R.id.data_logger_blank_view).setVisibility(View.VISIBLE); - } else { - context.findViewById(R.id.data_logger_blank_view).setVisibility(View.GONE); - } - } - }) - .setNegativeButton(context.getString(R.string.cancel), new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - } - }) - .create().show(); - } - - private void populateMapData(SensorDataBlock block) { - - if (block.getSensorType().equalsIgnoreCase(PSLabSensor.LUXMETER)) { - RealmResults data = LocalDataLog.with().getBlockOfLuxRecords(block.getBlock()); - JSONArray array = new JSONArray(); - for (LuxData d : data) { - try { - JSONObject i = new JSONObject(); - i.put("date", CSVLogger.FILE_NAME_FORMAT.format(d.getTime())); - i.put("data", d.getLux()); - i.put("lon", d.getLon()); - i.put("lat", d.getLat()); - if (d.getLat() != 0.0 && d.getLon() != 0.0) array.put(i); - } catch (JSONException e) { - e.printStackTrace(); - } - } - setMapDataToIntent(array); - } else if (block.getSensorType().equalsIgnoreCase(PSLabSensor.BAROMETER)) { - RealmResults data = LocalDataLog.with().getBlockOfBaroRecords(block.getBlock()); - JSONArray array = new JSONArray(); - for (BaroData d : data) { - try { - JSONObject i = new JSONObject(); - i.put("date", CSVLogger.FILE_NAME_FORMAT.format(d.getTime())); - i.put("data", d.getBaro()); - i.put("altitude", d.getAltitude()); - i.put("lon", d.getLon()); - i.put("lat", d.getLat()); - if (d.getLat() != 0.0 && d.getLon() != 0.0) array.put(i); - } catch (JSONException e) { - e.printStackTrace(); - } - } - setMapDataToIntent(array); - } else if (block.getSensorType().equalsIgnoreCase(PSLabSensor.GYROSCOPE)) { - RealmResults data = LocalDataLog.with().getBlockOfGyroRecords(block.getBlock()); - JSONArray array = new JSONArray(); - for (GyroData d : data) { - try { - JSONObject i = new JSONObject(); - i.put("date", CSVLogger.FILE_NAME_FORMAT.format(d.getTime())); - i.put("dataX", d.getGyroX()); - i.put("dataY", d.getGyroY()); - i.put("dataZ", d.getGyroZ()); - i.put("lon", d.getLon()); - i.put("lat", d.getLat()); - if (d.getLat() != 0.0 && d.getLon() != 0.0) array.put(i); - } catch (JSONException e) { - e.printStackTrace(); - } - } - setMapDataToIntent(array); - } else if (block.getSensorType().equalsIgnoreCase(PSLabSensor.COMPASS)) { - RealmResults data = LocalDataLog.with().getBlockOfCompassRecords(block.getBlock()); - JSONArray array = new JSONArray(); - for (CompassData d : data) { - try { - JSONObject i = new JSONObject(); - i.put("date", CSVLogger.FILE_NAME_FORMAT.format(d.getTime())); - i.put("dataX", d.getBx()); - i.put("dataY", d.getBy()); - i.put("dataZ", d.getBz()); - i.put("Axis", d.getAxis()); - i.put("lon", d.getLon()); - i.put("lat", d.getLat()); - if (d.getLat() != 0.0 && d.getLon() != 0.0) array.put(i); - } catch (JSONException e) { - e.printStackTrace(); - } - } - setMapDataToIntent(array); - } else if (block.getSensorType().equalsIgnoreCase(PSLabSensor.ACCELEROMETER)) { - RealmResults data = LocalDataLog.with().getBlockOfAccelerometerRecords(block.getBlock()); - JSONArray array = new JSONArray(); - for (AccelerometerData d : data) { - try { - JSONObject i = new JSONObject(); - i.put("date", CSVLogger.FILE_NAME_FORMAT.format(d.getTime())); - i.put("dataX", d.getAccelerometerX()); - i.put("dataY", d.getAccelerometerY()); - i.put("dataZ", d.getAccelerometerZ()); - i.put("lon", d.getLon()); - i.put("lat", d.getLat()); - if (d.getLat() != 0.0 && d.getLon() != 0.0) array.put(i); - } catch (JSONException e) { - e.printStackTrace(); - } - } - setMapDataToIntent(array); - } else if (block.getSensorType().equalsIgnoreCase(PSLabSensor.THERMOMETER)) { - RealmResults data = LocalDataLog.with().getBlockOfThermometerRecords(block.getBlock()); - JSONArray array = new JSONArray(); - for (ThermometerData d : data) { - try { - JSONObject i = new JSONObject(); - i.put("date", CSVLogger.FILE_NAME_FORMAT.format(d.getTime())); - i.put("Axis", d.getTemp()); - i.put("lon", d.getLon()); - i.put("lat", d.getLat()); - if (d.getLat() != 0.0 && d.getLon() != 0.0) array.put(i); - } catch (JSONException e) { - e.printStackTrace(); - } - } - setMapDataToIntent(array); - } else if (block.getSensorType().equalsIgnoreCase(PSLabSensor.ROBOTIC_ARM)) { - RealmResults data = LocalDataLog.with().getBlockOfServoRecords(block.getBlock()); - JSONArray array = new JSONArray(); - for (ServoData d : data) { - try { - JSONObject i = new JSONObject(); - i.put("date", CSVLogger.FILE_NAME_FORMAT.format(d.getTime())); - i.put("Servo1", d.getDegree1()); - i.put("Servo2", d.getDegree2()); - i.put("Servo3", d.getDegree3()); - i.put("Servo4", d.getDegree4()); - i.put("lon", d.getLon()); - i.put("lat", d.getLat()); - if (d.getLat() != 0.0 && d.getLon() != 0.0) array.put(i); - } catch (JSONException e) { - e.printStackTrace(); - } - } - setMapDataToIntent(array); - } else if (block.getSensorType().equalsIgnoreCase(PSLabSensor.WAVE_GENERATOR)) { - RealmResults data = LocalDataLog.with().getBlockOfWaveRecords(block.getBlock()); - JSONArray array = new JSONArray(); - for (WaveGeneratorData d : data) { - try { - JSONObject i = new JSONObject(); - i.put("date", CSVLogger.FILE_NAME_FORMAT.format(d.getTime())); - i.put("Mode", d.getMode()); - i.put("Wave", d.getWave()); - i.put("Shape", d.getShape()); - i.put("Freq", d.getFreq()); - i.put("Phase", d.getPhase()); - i.put("Duty", d.getDuty()); - i.put("lon", d.getLon()); - i.put("lat", d.getLat()); - if (d.getLat() != 0.0 && d.getLon() != 0.0) array.put(i); - } catch (JSONException e) { - e.printStackTrace(); - } - } - setMapDataToIntent(array); - } else if (block.getSensorType().equalsIgnoreCase(PSLabSensor.OSCILLOSCOPE)) { - RealmResults data = LocalDataLog.with().getBlockOfOscilloscopeRecords(block.getBlock()); - JSONArray array = new JSONArray(); - for (OscilloscopeData d : data) { - try { - JSONObject i = new JSONObject(); - i.put("date", CSVLogger.FILE_NAME_FORMAT.format(d.getTime())); - i.put("channel", d.getChannel()); - i.put("xData", d.getDataX()); - i.put("yData", d.getDataY()); - i.put("timebase", d.getTimebase()); - i.put("lat", d.getLat()); - i.put("lon", d.getLon()); - if (d.getLat() != 0.0 && d.getLon() != 0.0) array.put(i); - } catch (JSONException e) { - e.printStackTrace(); - } - } - setMapDataToIntent(array); - } else if (block.getSensorType().equalsIgnoreCase(PSLabSensor.POWER_SOURCE)) { - RealmResults data = LocalDataLog.with().getBlockOfPowerRecords(block.getBlock()); - JSONArray array = new JSONArray(); - for (PowerSourceData d : data) { - try { - JSONObject i = new JSONObject(); - i.put("date", CSVLogger.FILE_NAME_FORMAT.format(d.getTime())); - i.put("PV1", d.getPv1()); - i.put("PV2", d.getPv2()); - i.put("PV3", d.getPv3()); - i.put("PCS", d.getPcs()); - i.put("lat", d.getLat()); - i.put("lon", d.getLon()); - if (d.getLat() != 0.0 && d.getLon() != 0.0) array.put(i); - } catch (JSONException e) { - e.printStackTrace(); - } - } - setMapDataToIntent(array); - } else if (block.getSensorType().equalsIgnoreCase(PSLabSensor.MULTIMETER)) { - RealmResults data = LocalDataLog.with().getBlockOfMultimeterRecords(block.getBlock()); - JSONArray array = new JSONArray(); - for (MultimeterData d : data) { - try { - JSONObject i = new JSONObject(); - i.put("date", CSVLogger.FILE_NAME_FORMAT.format(d.getTime())); - i.put("data", d.getData()); - i.put("value", d.getValue()); - i.put("lat", d.getLat()); - i.put("lon", d.getLon()); - if (d.getLat() != 0.0 && d.getLon() != 0.0) array.put(i); - } catch (JSONException e) { - e.printStackTrace(); - } - } - setMapDataToIntent(array); - } else if (block.getSensorType().equalsIgnoreCase(PSLabSensor.LOGIC_ANALYZER)) { - RealmResults data = LocalDataLog.with().getBlockOfLARecords(block.getBlock()); - JSONArray array = new JSONArray(); - for (LogicAnalyzerData d : data) { - try { - JSONObject i = new JSONObject(); - i.put("date", CSVLogger.FILE_NAME_FORMAT.format(d.getTime())); - i.put("channel", d.getChannel()); - i.put("channel_mode", d.getChannelMode()); - i.put("xaxis", d.getDataX()); - i.put("yaxis", d.getDataY()); - i.put("lat", d.getLat()); - i.put("lon", d.getLon()); - if (d.getLat() != 0.0 && d.getLon() != 0.0) array.put(i); - } catch (JSONException e) { - e.printStackTrace(); - } - } - setMapDataToIntent(array); - } else if (block.getSensorType().equalsIgnoreCase(PSLabSensor.GAS_SENSOR)) { - RealmResults data = LocalDataLog.with().getBlockOfGasSensorRecords(block.getBlock()); - JSONArray array = new JSONArray(); - for (GasSensorData d : data) { - try { - JSONObject i = new JSONObject(); - i.put("date", CSVLogger.FILE_NAME_FORMAT.format(d.getTime())); - i.put("ppmValue", d.getPpmValue()); - i.put("lon", d.getLon()); - i.put("lat", d.getLat()); - if (d.getLat() != 0.0 && d.getLon() != 0.0) array.put(i); - } catch (JSONException e) { - e.printStackTrace(); - } - } - setMapDataToIntent(array); - } else if (block.getSensorType().equalsIgnoreCase(PSLabSensor.SOUND_METER)) { - RealmResults data = LocalDataLog.with().getBlockOfSoundRecords(block.getBlock()); - JSONArray array = new JSONArray(); - for (SoundData d : data) { - try { - JSONObject i = new JSONObject(); - i.put("date", CSVLogger.FILE_NAME_FORMAT.format(d.getTime())); - i.put("dB", d.getdB()); - i.put("lon", d.getLon()); - i.put("lat", d.getLat()); - if (d.getLat() != 0.0 && d.getLon() != 0.0) array.put(i); - } catch (JSONException e) { - e.printStackTrace(); - } - } - setMapDataToIntent(array); - } - } - - private void setMapDataToIntent(JSONArray array) { - Intent map = new Intent(context, MapsActivity.class); - if (array.length() > 0) { - map.putExtra("hasMarkers", true); - map.putExtra("markers", array.toString()); - context.startActivity(map); - } else { - map.putExtra("hasMarkers", false); - CustomSnackBar.showSnackBar(context.findViewById(android.R.id.content), - context.getString(R.string.no_location_data), null, null, Snackbar.LENGTH_LONG); - } - } - - public class ViewHolder extends RecyclerView.ViewHolder { - private TextView sensor, dateTime; - private ImageView deleteIcon, mapIcon, tileIcon; - private CardView cardView; - - public ViewHolder(View itemView) { - super(itemView); - dateTime = itemView.findViewById(R.id.date_time); - sensor = itemView.findViewById(R.id.sensor_name); - deleteIcon = itemView.findViewById(R.id.delete_item); - mapIcon = itemView.findViewById(R.id.map_item); - tileIcon = itemView.findViewById(R.id.sensor_tile_icon); - cardView = itemView.findViewById(R.id.data_item_card); - } - } -} diff --git a/app/src/main/java/io/pslab/communication/AnalyticsClass.java b/app/src/main/java/io/pslab/communication/AnalyticsClass.java deleted file mode 100644 index 8a0019ed5..000000000 --- a/app/src/main/java/io/pslab/communication/AnalyticsClass.java +++ /dev/null @@ -1,602 +0,0 @@ -package io.pslab.communication; - -import android.util.Log; - -import org.apache.commons.math3.analysis.ParametricUnivariateFunction; -import org.apache.commons.math3.complex.Complex; -import org.apache.commons.math3.fitting.CurveFitter; -import org.apache.commons.math3.optim.nonlinear.vector.jacobian.LevenbergMarquardtOptimizer; -import org.apache.commons.math3.stat.descriptive.DescriptiveStatistics; -import org.apache.commons.math3.transform.DftNormalization; -import org.apache.commons.math3.transform.FastFourierTransformer; -import org.apache.commons.math3.transform.TransformType; - -import io.pslab.filters.BandstopFilter; -import io.pslab.filters.Lfilter; - -import java.util.ArrayList; -import java.util.Arrays; - -import static java.lang.Math.cos; -import static org.apache.commons.lang3.math.NumberUtils.min; -import static org.apache.commons.lang3.math.NumberUtils.max; -import static org.apache.commons.math3.util.FastMath.abs; -import static org.apache.commons.math3.util.FastMath.exp; -import static org.apache.commons.math3.util.FastMath.sin; - -/** - * Created by akarshan on 5/13/17. - *

- * Unlike python, the curve fitting and the fourier transorm methods only accepts the arrays - * of length of power of 2. - *

- * JAVA equivalent of scipy.fftpack.rfft, scipy.fftpack.rfftfreq and scipy.fftpack.fftfreq functions are'nt - * available so they are been added in this class by the name fftToRfft, rfftFrequency and fftFrequency - * respectively. - *

- * The fit functions have passed some dry tests but required to be tested with data points generated by PSLab. - *

- */ - -@SuppressWarnings("ALL") -public class AnalyticsClass { - - // todo : check the accuracy of the all the curve fitting methods with data points generated by PSLab - //-------------------------- Exponential Fit ----------------------------------------// - - private ParametricUnivariateFunction exponentialParametricUnivariateFunction = new ParametricUnivariateFunction() { - @Override - public double value(double x, double... parameters) { - double a = parameters[0]; - double b = parameters[1]; - double c = parameters[2]; - return a * exp(-x / b) + c; - } - - @Override - public double[] gradient(double x, double... parameters) { - double a = parameters[0]; - double b = parameters[1]; - double c = parameters[2]; - - return new double[]{ - exp(-x / b), - (a * exp(-x / b) * x) / (b * b), - 1 - }; //partial derivatives - } - }; - - public ArrayList fitExponential(double time[], double voltage[]) { - //length of time and voltage arrays should be in the power of 2 - double size = time.length; - double v80 = voltage[0] * 0.8; - double rc = 0; - double[] vf = new double[time.length]; - for (int k = 0; k < size - 1; k++) { - if (voltage[k] < v80) { - rc = time[k] / .223; - break; - } - } - double[] initialGuess = new double[]{voltage[0], rc, 0}; - //initialize the optimizer and curve fitter. - LevenbergMarquardtOptimizer optimizer = new LevenbergMarquardtOptimizer(); - CurveFitter fitter = new CurveFitter(optimizer); - for (int i = 0; i < time.length; i++) - fitter.addObservedPoint(time[i], voltage[i]); - double[] result = fitter.fit(exponentialParametricUnivariateFunction, initialGuess); //result -> the fitted parameters. - for (int i = 0; i < time.length; i++) - vf[i] = result[0] * exp(-time[i] / result[1]) + result[2]; - return new ArrayList(Arrays.asList(result, vf)); - } - - //-------------------------- Sine Fit ----------------------------------------// - - private ParametricUnivariateFunction sineParametricUnivariateFunction = new ParametricUnivariateFunction() { - @Override - public double value(double x, double... parameters) { - double a1 = parameters[0]; - double a2 = parameters[1]; - double a3 = parameters[2]; - double a4 = parameters[3]; - return a4 + a1 * sin(abs(a2 * (2 * Math.PI)) * x + a3); - } - - @Override - public double[] gradient(double x, double... parameters) { - double a = parameters[0]; - double b = parameters[1]; - double c = parameters[2]; - double d = parameters[3]; - return new double[]{ - Math.sin(c + 2 * Math.PI * b * x), - 2 * a * Math.PI * x * cos(c + 2 * b * Math.PI * x), - a * cos(c + 2 * b * Math.PI * x), - 1 - }; - } - }; - - public double[] sineFit(double[] xReal, double[] yReal) { - int n = xReal.length; - int index = 0; - double[] frequencyArray = new double[]{}; - double[] yReal2 = new double[yReal.length]; - double yHat[]; - double yHatSquare[]; - double max = 0.; - double returnOffset = 0; - double frequency; - double returnFrequency; - double amplitude; - double returnAmplitude; - double phase; - double returnPhase; - double[] guess; - Complex complex[]; - - double offset = ((double) max(yReal) + (double) min(yReal)) / 2; - for (int i = 0; i < yReal.length; i++) - yReal2[i] = yReal[i] - offset; - - FastFourierTransformer fastFourierTransformer = new FastFourierTransformer(DftNormalization.STANDARD); - complex = fastFourierTransformer.transform(yReal2, TransformType.FORWARD); - yHat = fftToRfft(complex); //yHat is an array of Discrete Fourier transform of a real sequence - yHatSquare = new double[yHat.length]; - for (int i = 0; i < yHat.length; i++) { - yHatSquare[i] = Math.pow(yHat[i], 2); - if (yHatSquare[i] > max) { //yHatSquare is an array square of each element of yHat - max = yHatSquare[i]; - index = i; - } - } - - frequencyArray = rfftFrequency(n, (xReal[1] - xReal[0]) / (2 * Math.PI)); - frequency = frequencyArray[index]; - frequency /= (2 * Math.PI); - - amplitude = (max(yReal) - min(yReal)) / 2.0; - - phase = 0; - - LevenbergMarquardtOptimizer optimizer = new LevenbergMarquardtOptimizer(); - CurveFitter fitter = new CurveFitter(optimizer); - for (int i = 0; i < n; i++) - fitter.addObservedPoint(xReal[i], yReal2[i]); - - guess = new double[]{amplitude, frequency, phase, 0}; - double[] result = fitter.fit(sineParametricUnivariateFunction, guess); - - amplitude = result[0]; - frequency = result[1]; - phase = result[2]; - returnOffset = result[3]; - - if (frequency < 0) - Log.v("sineFit", "negative frequency"); - - returnOffset += offset; - returnPhase = ((phase) * 180 / (3.14)); - if (amplitude < 0) - returnPhase -= 180; - if (returnPhase < 0) - returnPhase = (returnPhase + 720) % 360; - returnFrequency = 1e6 * abs(frequency); - returnAmplitude = abs(amplitude); - return new double[]{returnAmplitude, returnFrequency, returnOffset, returnPhase}; - } - - ParametricUnivariateFunction squareParametricUnivariateFunction = new ParametricUnivariateFunction() { - @Override - public double value(double x, double... parameters) { - double amp = parameters[0]; - double freq = parameters[1]; - double phase = parameters[2]; - double dc = parameters[3]; //dc - duty cycle - double offset = parameters[4]; - return offset + amp * signalSquare(2 * Math.PI * freq * (x - phase), freq, dc); - } - - @Override - public double[] gradient(double x, double... parameters) { - /*partial derivatives w.r.t all the five variables. Square functions are not differentiable - at finitely many points, still we have used it anyway since the curve fitter uses the value of - gradients. The values are true except at points where the transition from high to low or low to high - takes place.*/ - double a = parameters[0]; //unused for partial derivative - double b = parameters[1]; - double c = parameters[2]; - double d = parameters[3]; - double e = parameters[4]; //unused for partial derivative - - return new double[]{ - signalSquare(2 * Math.PI * b * (x - c), b, d), 0, 0, 0, 1 - }; - } - }; - - public double[] squareFit(double[] xReal, double[] yReal) { - int n = xReal.length; - double mx = max(yReal); - double mn = min(xReal); - double offset = (mx + mn) / 2; - double sumGreaterThanOffset = 0; - double sumLesserThanOffset = 0; - double n1 = 0; // count of numbers less than offset - double n2 = 0; // count of numbers less than offset - double[] yTmp = new double[yReal.length]; - double[] yReal2 = new double[yReal.length]; - double[] guess; - double returnOffset; - double returnFrequency; - double returnAmplitude; - double returnPhase; - double returnDC; - - for (int i = 0; i < yReal.length; i++) - yReal2[i] = yReal[i] - offset; - - for (int i = 0; i < yReal.length; i++) { - if (yReal[i] > offset) { - sumGreaterThanOffset += yReal[i]; - yTmp[i] = 2; - n1++; - } else if (yReal[i] < offset) { - sumLesserThanOffset += yReal[i]; - yTmp[i] = 0; - n2++; - } - } - - double amplitude = (sumGreaterThanOffset / n1) - (sumLesserThanOffset / n2); - boolean[] bools = new boolean[yTmp.length]; - double tmp; - for (int i = 0; i < yTmp.length - 1; i++) { - tmp = yTmp[i + 1] - yTmp[i]; - tmp = abs(tmp); - bools[i] = tmp > 1; - } - double[] edges = new double[bools.length]; - double[] levels = new double[bools.length]; - int j = 0; - for (int i = 0; i < bools.length; i++) { - if (bools[i]) { - edges[j] = xReal[i]; - levels[j] = yTmp[i]; - j++; - } - } - - double frequency = 1 / (edges[2] - edges[0]); - double phase = edges[0]; - double dc = 0.5; - - if (edges.length >= 4) { - if (levels[0] == 0) - dc = (edges[1] - edges[0]) / (edges[2] - edges[0]); - else { - dc = (edges[2] - edges[1]) / (edges[3] - edges[1]); - phase = edges[1]; - } - } - - LevenbergMarquardtOptimizer optimizer = new LevenbergMarquardtOptimizer(); - CurveFitter fitter = new CurveFitter(optimizer); - for (int i = 0; i < n; i++) - fitter.addObservedPoint(xReal[i], yReal2[i]); - - guess = new double[]{amplitude, frequency, phase, dc, 0}; - double[] result = fitter.fit(squareParametricUnivariateFunction, guess); - - amplitude = result[0]; - frequency = result[1]; - phase = result[2]; - dc = result[3]; - returnOffset = result[4]; - - if (frequency < 0) - Log.v("squareFit", "negative frequency"); - - returnOffset += offset; - returnFrequency = 1e6 * abs(frequency); - returnAmplitude = abs(amplitude); - returnPhase = phase; - returnDC = dc; - - return new double[]{returnAmplitude, returnFrequency, returnPhase, returnDC, returnOffset}; - } - - public double findSignalFrequency(double[] voltage, double samplingInterval) { - int voltageLength = voltage.length; - double[] frequency; - double[] amplitude; - int index = 0; - double max = 0; - Complex[] complex; - DescriptiveStatistics stats = new DescriptiveStatistics(); - for (int i = 0; i < voltageLength; i++) - stats.addValue(voltage[i]); - double voltageMean = stats.getMean(); - for (int i = 0; i < voltageLength; i++) - voltage[i] = voltage[i] - voltageMean; // remove DC component - frequency = Arrays.copyOfRange(fftFrequency(voltageLength, samplingInterval), 0, voltageLength / 2); // take only the +ive half of the frequncy array - FastFourierTransformer fastFourierTransformer = new FastFourierTransformer(DftNormalization.STANDARD); - complex = fastFourierTransformer.transform(voltage, TransformType.FORWARD); - amplitude = new double[complex.length / 2]; - for (int i = 0; i < complex.length / 2; i++) { // take only the +ive half of the fft result - amplitude[i] = complex[i].abs() / voltageLength; - if (amplitude[i] > max) { // search for the tallest peak, the fundamental - max = amplitude[i]; - index = i; - } - } - double noiseThreshold = 0.1; - if (max >= noiseThreshold) { - return frequency[index]; - } else { - return -1; - } - } - - public double findFrequency(double[] voltage, double samplingInterval) { - int voltageLength = voltage.length; - double[] frequency; - double[] amplitude; - int index = 0; - double max = 0; - Complex[] complex; - DescriptiveStatistics stats = new DescriptiveStatistics(); - for (int i = 0; i < voltageLength; i++) - stats.addValue(voltage[i]); - double voltageMean = stats.getMean(); - for (int i = 0; i < voltageLength; i++) - voltage[i] = voltage[i] - voltageMean; // remove DC component - frequency = Arrays.copyOfRange(fftFrequency(voltageLength, samplingInterval), 0, voltageLength / 2); // take only the +ive half of the frequncy array - FastFourierTransformer fastFourierTransformer = new FastFourierTransformer(DftNormalization.STANDARD); - complex = fastFourierTransformer.transform(voltage, TransformType.FORWARD); - amplitude = new double[complex.length / 2]; - for (int i = 0; i < complex.length / 2; i++) { // take only the +ive half of the fft result - amplitude[i] = complex[i].abs() / voltageLength; - if (amplitude[i] > max) { // search for the tallest peak, the fundamental - max = amplitude[i]; - index = i; - } - } - return frequency[index]; - } - - public ArrayList amplitudeSpectrum(double[] voltage, int samplingInterval, int nHarmonics) { - int voltageLength = voltage.length; - Complex[] complex; - double[] amplitude; - double[] newAmplitude; - int index = 0; - double max = 0; - double[] frequency = Arrays.copyOfRange(fftFrequency(voltageLength, samplingInterval), 0, voltageLength / 2); // take only the +ive half of the frequncy array - FastFourierTransformer fastFourierTransformer = new FastFourierTransformer(DftNormalization.STANDARD); - complex = fastFourierTransformer.transform(voltage, TransformType.FORWARD); - amplitude = new double[complex.length / 2]; - for (int i = 0; i < complex.length / 2; i++) { // take only the +ive half of the fft result - amplitude[i] = complex[i].abs() / voltageLength; - if (amplitude[i] > max) { // search for the tallest peak, the fundamental - max = amplitude[i]; - index = i; - } - } - if (index == 0) { // DC component is dominating - max = 0; - newAmplitude = Arrays.copyOfRange(amplitude, 4, amplitude.length); // skip frequencies close to zero - for (int i = 0; i < newAmplitude.length; i++) { - if (newAmplitude[i] > max) { - max = newAmplitude[i]; - index = i; - } - } - } - return new ArrayList(Arrays.asList( // restrict to 'nHarmonics' harmonics - Arrays.copyOfRange(frequency, index * nHarmonics, frequency.length), - Arrays.copyOfRange(amplitude, index * nHarmonics, amplitude.length) - )); - } - - //-------------------------- Damped Sine Fit ----------------------------------------// - - public ParametricUnivariateFunction dampedSineParametricUnivariateFunction = new ParametricUnivariateFunction() { - @Override - public double value(double x, double... parameters) { - double amplitude = parameters[0]; - double frequency = parameters[1]; - double phase = parameters[2]; - double offset = parameters[3]; - double damp = parameters[4]; - return offset + amplitude * exp(-damp * x) * sin(Math.abs(frequency) * x + phase); - } - - @Override - public double[] gradient(double x, double... parameters) { - double amplitude = parameters[0]; - double frequency = parameters[1]; - double phase = parameters[2]; - double offset = parameters[3]; - double damp = parameters[4]; - return new double[]{ - exp(-damp * x) * sin(x * frequency + phase), - amplitude * exp(-damp * x) * x * cos(x * frequency + phase), - amplitude * exp(-damp * x) * cos(x * frequency + phase), - -amplitude * exp(-damp * x) * x * sin(x * frequency + phase), - 1 - }; - } - }; - - - public double[] getGuessValues(double xReal[], double yReal[], String function) { - if (function.equals("sine") || function.equals("damped sine")) { - int n = xReal.length; - Complex[] complex; - double[] yReal2 = new double[yReal.length]; - double[] yHatSquare; - double[] yHat; - double[] frequencyArray; - double frequency; - double amplitude; - double phase; - double max = 0; - int index = 0; - DescriptiveStatistics stats = new DescriptiveStatistics(); - for (int i = 0; i < yReal.length; i++) - stats.addValue(yReal[i]); - double offset = stats.getMean(); - for (int i = 0; i < yReal.length; i++) - yReal2[i] = yReal[i] - offset; - FastFourierTransformer fastFourierTransformer = new FastFourierTransformer(DftNormalization.STANDARD); - complex = fastFourierTransformer.transform(yReal, TransformType.FORWARD); - yHat = fftToRfft(complex); - yHatSquare = new double[yHat.length]; - for (int i = 0; i < yHat.length; i++) { - yHatSquare[i] = Math.pow(yHat[i], 2); - if (yHatSquare[i] > max) { //yHatSquare is an array square of each element of yHat - max = yHatSquare[i]; - index = i; - } - } - frequencyArray = rfftFrequency(n, (xReal[1] - xReal[0]) / 2); - frequency = frequencyArray[index]; - amplitude = (max(yReal) - min(yReal)) / 2.0; - phase = 0; - if (function.equals("sine")) - return new double[]{amplitude, frequency, phase, offset}; - if (function.equals("damped sine")) - return new double[]{amplitude, frequency, phase, offset, 0}; - } - return null; - } - - public double[] arbitFit(double[] xReal, double[] yReal, ParametricUnivariateFunction function, double[] guessValues) { - int n = xReal.length; - LevenbergMarquardtOptimizer optimizer = new LevenbergMarquardtOptimizer(); - CurveFitter fitter = new CurveFitter(optimizer); - for (int i = 0; i < n; i++) - fitter.addObservedPoint(xReal[i], yReal[i]); - double[] result = fitter.fit(function, guessValues); - return result; - } - - ArrayList butterNotch(double lowCut, double highCut, double fs, int order) { - double nyq = 0.5 * fs; - double low = lowCut / nyq; - double high = highCut / nyq; - BandstopFilter bandstopFilter = new BandstopFilter(order, new double[]{low, high}); - return bandstopFilter.abGetter(); - } - - double[] butterNotchFilter(double[] data, double lowCut, double highCut, double fs, int order) { - ArrayList arrayList = butterNotch(lowCut, highCut, fs, order); - double[] b = arrayList.get(0); - double[] a = arrayList.get(1); - Lfilter lfilter = new Lfilter(); - return lfilter.filter(b, a, data); - } - - public ArrayList fft(double[] signal, double samplingInterval) { - /* - Returns positive half of the Fourier transform of the signal. - Sampling interval 'samplingInterval', in milliseconds - */ - int ns = signal.length; - Complex[] complex; - double[] terms; - double[] frequencyArray; - double[] x; - double[] y; - if (ns % 2 == 1) { - ns = ns - 1; - signal = Arrays.copyOfRange(signal, 0, ns); - } - FastFourierTransformer fastFourierTransformer = new FastFourierTransformer(DftNormalization.STANDARD); - complex = fastFourierTransformer.transform(signal, TransformType.FORWARD); - terms = new double[complex.length]; - for (int i = 0; i < complex.length; i++) - terms[i] = complex[i].abs() / ns; - frequencyArray = fftFrequency(ns, samplingInterval); - x = Arrays.copyOfRange(frequencyArray, 0, ns / 2); - y = Arrays.copyOfRange(terms, 0, ns / 2); - return new ArrayList(Arrays.asList(x, y)); - } - - public double[] rfftFrequency(int n, double space) { - /* - The returned array contains the frequency bins in - cycles/unit (with zero at the start) given a window length `n` and a - sample spacing `space` - */ - double[] returnArray = new double[n + 1]; - for (int i = 0; i < n + 1; i++) { - returnArray[i] = Math.floor(i / 2) / (n * space); - } - return Arrays.copyOfRange(returnArray, 1, returnArray.length); - } - - public double[] fftFrequency(int n, double space) { - /* - Return the Discrete Fourier Transform sample frequencies. - The returned array contains the frequency bin centers in cycles - per unit of the sample spacing (with zero at the start). For instance, if - the sample spacing is in seconds, then the frequency unit is cycles/second. - Given a window length `n` and a sample spacing `spacing`. - */ - double value = 1.0 / (n * space); - int N = Math.floorDiv(n - 1, 2) + 1; - double[] results = new double[n]; - for (int i = 0; i < N; i++) { - results[i] = i; - results[i] = results[i] * value; - } - int j = N; - for (int i = -Math.floorDiv(n, 2); i < 0; i++) { - - results[j] = i; - results[j] = results[j] * value; - j++; - } - return results; - } - - public double[] fftToRfft(Complex[] complex) { - //The returned array contains Discrete Fourier transform of a real sequence. - double[] real = new double[complex.length]; - double[] imaginary = new double[complex.length]; - double[] result = new double[complex.length]; - int j = 0; - int k = 0; - int l = 0; - for (int i = 0; i < complex.length / 2 + 1; i++) { - real[i] = complex[i].getReal(); - imaginary[i] = complex[i].getImaginary(); - } - - for (int i = 0; i < complex.length / 2 + 1; i++) { - if (real[j] == 0.0 && imaginary[k] == 0) { - result[l++] = 0.0; - j++; - k++; - } else if (real[j] != 0 && imaginary[k] == 0) { - result[l++] = real[j++]; - k++; - } else { - result[l++] = real[j++]; - result[l++] = imaginary[k++]; - } - } - return result; - } - - public double signalSquare(double xAxisValue, double freq, double dc) { - //This method determines whether at a given x value, the value of y is in the upper half or lower half - if (xAxisValue % (2 * Math.PI * freq) <= dc) - return 1; - else - return -1; - } -} \ No newline at end of file diff --git a/app/src/main/java/io/pslab/communication/CommandsProto.java b/app/src/main/java/io/pslab/communication/CommandsProto.java deleted file mode 100644 index 6ee80f60d..000000000 --- a/app/src/main/java/io/pslab/communication/CommandsProto.java +++ /dev/null @@ -1,285 +0,0 @@ -package io.pslab.communication; - -import android.util.Log; - -public class CommandsProto { - - private static String TAG = "CommandsProto"; - - public int ACKNOWLEDGE = 254; - public int MAX_SAMPLES = 10000; - public int DATA_SPLITTING = 60; - - public int ADC = 2; - public int CAPTURE_ONE = 1; - public int CAPTURE_TWO = 2; - public int CAPTURE_DMASPEED = 3; - public int CAPTURE_FOUR = 4; - public int CONFIGURE_TRIGGER = 5; - public int GET_CAPTURE_STATUS = 6; - public int GET_CAPTURE_CHANNEL = 7; - public int SET_PGA_GAIN = 8; - public int GET_VOLTAGE = 9; - public int GET_VOLTAGE_SUMMED = 10; - // public int START_ADC_STREAMING = 11; - public int SELECT_PGA_CHANNEL = 12; - public int CAPTURE_12BIT = 13; - // public int CAPTURE_MULTIPLE = 14; - public int SET_HI_CAPTURE = 15; - public int SET_LO_CAPTURE = 16; - - public int MULTIPOINT_CAPACITANCE = 20; - public int SET_CAP = 21; - public int PULSE_TRAIN = 22; - - public int SPI_HEADER = 3; - public int START_SPI = 1; - public int SEND_SPI8 = 2; - public int SEND_SPI16 = 3; - public int STOP_SPI = 4; - public int SET_SPI_PARAMETERS = 5; - public int SEND_SPI8_BURST = 6; - public int SEND_SPI16_BURST = 7; - - public int I2C_HEADER = 4; - public int I2C_START = 1; - public int I2C_SEND = 2; - public int I2C_STOP = 3; - public int I2C_RESTART = 4; - public int I2C_READ_END = 5; - public int I2C_READ_MORE = 6; - public int I2C_WAIT = 7; - public int I2C_SEND_BURST = 8; - public int I2C_CONFIG = 9; - public int I2C_STATUS = 10; - public int I2C_READ_BULK = 11; - public int I2C_WRITE_BULK = 12; - public int I2C_ENABLE_SMBUS = 13; - public int I2C_INIT = 14; - public int I2C_PULLDOWN_SCL = 15; - public int I2C_DISABLE_SMBUS = 16; - - - public int UART_2 = 5; - public int SEND_BYTE = 1; - public int SEND_INT = 2; - public int SEND_ADDRESS = 3; - public int SET_BAUD = 4; - public int SET_MODE = 5; - public int READ_BYTE = 6; - public int READ_INT = 7; - public int READ_UART2_STATUS = 8; - - - public int DAC = 6; - public int SET_DAC = 1; - public int SET_CALIBRATED_DAC = 2; - public int SET_POWER = 3; - - - public int WAVEGEN = 7; - public int SET_WG = 1; - public int SET_SQR1 = 3; - public int SET_SQR2 = 4; - public int SET_SQRS = 5; - public int TUNE_SINE_OSCILLATOR = 6; - public int SQR4 = 7; - public int MAP_REFERENCE = 8; - public int SET_BOTH_WG = 9; - public int SET_WAVEFORM_TYPE = 10; - public int SELECT_FREQ_REGISTER = 11; - public int DELAY_GENERATOR = 12; - public int SET_SINE1 = 13; - public int SET_SINE2 = 14; - - public int LOAD_WAVEFORM1 = 15; - public int LOAD_WAVEFORM2 = 16; - public int SQR1_PATTERN = 17; - - - public int DOUT = 8; - public int SET_STATE = 1; - - - public int DIN = 9; - public int GET_STATE = 1; - public int GET_STATES = 2; - - - public int LA1 = 0; - public int LA2 = 1; - public int LA3 = 2; - public int LA4 = 3; - public int LMETER = 4; - - - public int TIMING = 10; - public int GET_TIMING = 1; - public int GET_PULSE_TIME = 2; - public int GET_DUTY_CYCLE = 3; - public int START_ONE_CHAN_LA = 4; - public int START_TWO_CHAN_LA = 5; - public int START_FOUR_CHAN_LA = 6; - public int FETCH_DMA_DATA = 7; - public int FETCH_INT_DMA_DATA = 8; - public int FETCH_LONG_DMA_DATA = 9; - public int GET_LA_PROGRESS = 10; - public int GET_INITIAL_DIGITAL_STATES = 11; - - public int TIMING_MEASUREMENTS = 12; - public int INTERVAL_MEASUREMENTS = 13; - public int CONFIGURE_COMPARATOR = 14; - public int START_ALTERNATE_ONE_CHAN_LA = 15; - public int START_THREE_CHAN_LA = 16; - public int STOP_LA = 17; - - - public int COMMON = 11; - - public int GET_CTMU_VOLTAGE = 1; - public int GET_CAPACITANCE = 2; - public int GET_FREQUENCY = 3; - public int GET_INDUCTANCE = 4; - - public int GET_VERSION = 5; - public int GET_FW_VERSION = 6; - public int DEBUG_IS_ENABLED = 7; - - public int RETRIEVE_BUFFER = 8; - public int GET_HIGH_FREQUENCY = 9; - public int CLEAR_BUFFER = 10; - public int SET_RGB1 = 11; - public int READ_PROGRAM_ADDRESS = 12; - public int WRITE_PROGRAM_ADDRESS = 13; - public int READ_DATA_ADDRESS = 14; - public int WRITE_DATA_ADDRESS = 15; - - public int GET_CAP_RANGE = 16; - public int SET_RGB2 = 17; - public int READ_LOG = 18; - public int RESTORE_STANDALONE = 19; - public int GET_ALTERNATE_HIGH_FREQUENCY = 20; - public int SET_RGB_COMMON = 21; - public int SET_RGB3 = 22; - - public int START_CTMU = 23; - public int STOP_CTMU = 24; - - public int START_COUNTING = 25; - public int FETCH_COUNT = 26; - public int FILL_BUFFER = 27; - - - public int SETBAUD = 12; - public int BAUD9600 = 1; - public int BAUD14400 = 2; - public int BAUD19200 = 3; - public int BAUD28800 = 4; - public int BAUD38400 = 5; - public int BAUD57600 = 6; - public int BAUD115200 = 7; - public int BAUD230400 = 8; - public int BAUD1000000 = 9; - - - public int NRFL01 = 13; - public int NRF_SETUP = 1; - public int NRF_RXMODE = 2; - public int NRF_TXMODE = 3; - public int NRF_POWER_DOWN = 4; - public int NRF_RXCHAR = 5; - public int NRF_TXCHAR = 6; - public int NRF_HASDATA = 7; - public int NRF_FLUSH = 8; - public int NRF_WRITEREG = 9; - public int NRF_READREG = 10; - public int NRF_GETSTATUS = 11; - public int NRF_WRITECOMMAND = 12; - public int NRF_WRITEPAYLOAD = 13; - public int NRF_READPAYLOAD = 14; - public int NRF_WRITEADDRESS = 15; - public int NRF_TRANSACTION = 16; - public int NRF_START_TOKEN_MANAGER = 17; - public int NRF_STOP_TOKEN_MANAGER = 18; - public int NRF_TOTAL_TOKENS = 19; - public int NRF_REPORTS = 20; - public int NRF_WRITE_REPORT = 21; - public int NRF_DELETE_REPORT_ROW = 22; - - public int NRF_WRITEADDRESSES = 23; - - - public int NONSTANDARD_IO = 14; - // public int HX711_HEADER = 1; - public int HCSR04_HEADER = 2; - // public int AM2302_HEADER = 3; - // public int TCD1304_HEADER = 4; - // public int STEPPER_MOTOR = 5; - - - public int PASSTHROUGHS = 15; - public int PASS_UART = 1; - - // public int STOP_STREAMING = 253; - - public int EVERY_SIXTEENTH_RISING_EDGE = 0b101; - public int EVERY_FOURTH_RISING_EDGE = 0b100; - public int EVERY_RISING_EDGE = 0b011; - public int EVERY_FALLING_EDGE = 0b010; - public int EVERY_EDGE = 0b001; - public int DISABLED = 0b000; - - public int CSA1 = 1; - public int CSA2 = 2; - public int CSA3 = 3; - public int CSA4 = 4; - public int CSA5 = 5; - public int CS1 = 6; - public int CS2 = 7; - - public int TEN_BIT = 10; - public int TWELVE_BIT = 12; - - public byte[] pack(int value) { - int intValue = value; - byte[] bytes = new byte[4]; - int length = bytes.length; - for (int i = 0; i < length; i++) { - bytes[length - i - 1] = (byte) (intValue & 0xFF); - intValue >>= 8; - } - return bytes; - } - - public String applySIPrefix(double value, String unit, int precision) { - boolean negative = false; - if (value < 0) { - negative = true; - value *= -1; - } else if (value == 0) - return "0 " + unit; - int exponent = (int) Math.log10(value); - if (exponent > 0) { - exponent = (exponent / 3) * 3; - } else { - exponent = ((-1 * exponent + 3) / 3) * (-3); - } - value *= (Math.pow(10, -exponent)); - if (value >= 1000.0) { - value /= 1000.0; - exponent += 3; - } - if (negative) value *= -1; - String PREFIXES = "yzafpnum KMGTPEZY"; - int prefixLevel = (PREFIXES.length() - 1) / 2; - int siLevel = exponent / 3; - if (Math.abs(siLevel) > prefixLevel) { - Log.e(TAG, "Value Error : Exponent out range of available prefixes."); - return ""; - } else { - String format = "%." + precision + "f %s%s"; - return String.format(format, precision, value, PREFIXES.charAt(siLevel + prefixLevel), unit); - } - } - -} diff --git a/app/src/main/java/io/pslab/communication/CommunicationHandler.java b/app/src/main/java/io/pslab/communication/CommunicationHandler.java deleted file mode 100644 index 14a1ad618..000000000 --- a/app/src/main/java/io/pslab/communication/CommunicationHandler.java +++ /dev/null @@ -1,152 +0,0 @@ -package io.pslab.communication; - -import android.hardware.usb.UsbDevice; -import android.hardware.usb.UsbDeviceConnection; -import android.hardware.usb.UsbManager; -import android.util.Log; - -import com.hoho.android.usbserial.driver.CdcAcmSerialDriver; -import com.hoho.android.usbserial.driver.Cp21xxSerialDriver; -import com.hoho.android.usbserial.driver.ProbeTable; -import com.hoho.android.usbserial.driver.UsbSerialDriver; -import com.hoho.android.usbserial.driver.UsbSerialPort; -import com.hoho.android.usbserial.driver.UsbSerialProber; - -import java.io.IOException; -import java.util.Arrays; -import java.util.List; - -public class CommunicationHandler { - private final String TAG = this.getClass().getSimpleName(); - private static final int PSLAB_VENDOR_ID_V5 = 1240; - private static final int PSLAB_PRODUCT_ID_V5 = 223; - private static final int PSLAB_VENDOR_ID_V6 = 0x10C4; - private static final int PSLAB_PRODUCT_ID_V6 = 0xEA60; - public static int PSLAB_VERSION; - private boolean connected = false, device_found = false; - private UsbManager mUsbManager; - private UsbDeviceConnection mConnection; - private UsbSerialDriver driver; - private UsbSerialPort port; - public UsbDevice mUsbDevice; - List drivers; - - public static final int DEFAULT_READ_BUFFER_SIZE = 32 * 1024; - public static final int DEFAULT_WRITE_BUFFER_SIZE = 32 * 1024; - - private byte[] mReadBuffer; - private byte[] mWriteBuffer; - - public CommunicationHandler(UsbManager usbManager) { - this.mUsbManager = usbManager; - mUsbDevice = null; - ProbeTable customTable = new ProbeTable(); - customTable.addProduct(PSLAB_VENDOR_ID_V5, PSLAB_PRODUCT_ID_V5, CdcAcmSerialDriver.class); - customTable.addProduct(PSLAB_VENDOR_ID_V6, PSLAB_PRODUCT_ID_V6, Cp21xxSerialDriver.class); - - UsbSerialProber prober = new UsbSerialProber(customTable); - drivers = prober.findAllDrivers(usbManager); - - if (drivers.isEmpty()) { - Log.d(TAG, "No drivers found"); - } else { - Log.d(TAG, "Found PSLab device"); - device_found = true; - driver = drivers.get(0); - mUsbDevice = driver.getDevice(); - } - mReadBuffer = new byte[DEFAULT_READ_BUFFER_SIZE]; - mWriteBuffer = new byte[DEFAULT_WRITE_BUFFER_SIZE]; - } - - public void open(int baudRate) throws IOException { - if (!device_found) { - throw new IOException("Device not Connected"); - } - mConnection = mUsbManager.openDevice(mUsbDevice); - if (mConnection == null) { - throw new IOException("Could not open device."); - } - if (mUsbDevice.getProductId() == PSLAB_PRODUCT_ID_V6 && mUsbDevice.getVendorId() == PSLAB_VENDOR_ID_V6) { - PSLAB_VERSION = 6; - } - else { - PSLAB_VERSION = 5; - } - connected = true; - port = driver.getPorts().get(0); - port.open(mConnection); - port.setParameters(baudRate, 8, UsbSerialPort.STOPBITS_1, UsbSerialPort.PARITY_NONE); - clear(); - } - - public boolean isDeviceFound() { - return device_found; - } - - public boolean isConnected() { - return connected; - } - - public void close() throws IOException { - if (mConnection == null) { - return; - } - port.close(); - connected = false; - } - - public int read(byte[] dest, int bytesToBeRead, int timeoutMillis) throws IOException { - if (PSLAB_VERSION == 5) { - return readCdcAcm(dest, bytesToBeRead, timeoutMillis); - } - int numBytesRead = 0; - int readNow; - Log.v(TAG, "TO read : " + bytesToBeRead); - int bytesToBeReadTemp = bytesToBeRead; - while (numBytesRead < bytesToBeRead) { - readNow = port.read(mReadBuffer, bytesToBeReadTemp, timeoutMillis); - if (readNow == 0) { - Log.e(TAG, Arrays.toString(Thread.currentThread().getStackTrace())); - Log.e(TAG, "Read Error: " + bytesToBeReadTemp); - return numBytesRead; - } else { - System.arraycopy(mReadBuffer, 0, dest, numBytesRead, readNow); - numBytesRead += readNow; - bytesToBeReadTemp -= readNow; - } - } - Log.v("Bytes Read", "" + numBytesRead); - return numBytesRead; - } - - public int readCdcAcm(byte[] dest, int bytesToBeRead, int timeoutMillis) throws IOException { - int numBytesRead = 0; - int readNow; - Log.v(TAG, "TO read : " + bytesToBeRead); - int bytesToBeReadTemp = bytesToBeRead; - while (numBytesRead < bytesToBeRead) { - readNow = mConnection.bulkTransfer(mUsbDevice.getInterface(1).getEndpoint(1), mReadBuffer, bytesToBeReadTemp, timeoutMillis); - if (readNow < 0) { - Log.e(TAG, "Read Error: " + bytesToBeReadTemp); - return numBytesRead; - } else { - System.arraycopy(mReadBuffer, 0, dest, numBytesRead, readNow); - numBytesRead += readNow; - bytesToBeReadTemp -= readNow; - } - } - Log.v("Bytes Read", "" + numBytesRead); - return numBytesRead; - } - - public void write(byte[] src, int timeoutMillis) throws IOException { - int writeLength; - writeLength = src.length; - port.write(src, writeLength, timeoutMillis); - } - - private void clear() throws IOException { - port.read(mReadBuffer, 100, 50); - } -} diff --git a/app/src/main/java/io/pslab/communication/HttpAsyncTask.java b/app/src/main/java/io/pslab/communication/HttpAsyncTask.java deleted file mode 100644 index 4aae41545..000000000 --- a/app/src/main/java/io/pslab/communication/HttpAsyncTask.java +++ /dev/null @@ -1,43 +0,0 @@ -package io.pslab.communication; - -import android.os.AsyncTask; - -import org.json.JSONException; -import org.json.JSONObject; - -import java.io.IOException; - -import io.pslab.interfaces.HttpCallback; - -public class HttpAsyncTask extends AsyncTask { - - private HttpHandler mHttpHandler; - private HttpCallback mHttpCallback; - - public HttpAsyncTask(String baseIP, HttpCallback httpCallback) { - mHttpHandler = new HttpHandler(baseIP); - mHttpCallback = httpCallback; - } - - @Override - protected Void doInBackground(byte[]... data) { - int res = 0; - try { - if (data.length != 0) { - res = mHttpHandler.write(data[0]); - - } else { - res = mHttpHandler.read(); - } - } catch (IOException | JSONException e) { - mHttpCallback.error(e); - e.printStackTrace(); - } - if (res == 1) { - mHttpCallback.success(mHttpHandler.getReceivedData()); - } else { - mHttpCallback.error(new Exception()); - } - return null; - } -} diff --git a/app/src/main/java/io/pslab/communication/HttpHandler.java b/app/src/main/java/io/pslab/communication/HttpHandler.java deleted file mode 100644 index a2f7bed38..000000000 --- a/app/src/main/java/io/pslab/communication/HttpHandler.java +++ /dev/null @@ -1,87 +0,0 @@ -package io.pslab.communication; - -import android.util.Log; - -import org.json.JSONArray; -import org.json.JSONException; -import org.json.JSONObject; - -import java.io.IOException; -import java.net.URL; - -import okhttp3.MediaType; -import okhttp3.OkHttpClient; -import okhttp3.Request; -import okhttp3.RequestBody; -import okhttp3.Response; - -public class HttpHandler { - - private final String TAG = this.getClass().getSimpleName(); - private String baseIP; - private String sendDataEndPoint = "send"; - private String getDataEndPoint = "get"; - private String dataKeyString = "data"; - private OkHttpClient client; - private JSONObject receivedData; - - public HttpHandler(String baseIP) { - this.baseIP = baseIP; - this.client = new OkHttpClient(); - } - - /** - * Method to send data to ESP - * - * @param data data to be sent in byte array - * @return 1 if response code is "200" 0 otherwise; - */ - public int write(byte[] data) throws IOException, JSONException { - int result = 1; - URL baseURL = new URL("http://" + baseIP + "/" + sendDataEndPoint); - int written = 0; - JSONArray responseArray = new JSONArray(); - while (written < data.length) { - JSONObject jsonObject = new JSONObject(); - jsonObject.put(dataKeyString, data[written]); - RequestBody body = RequestBody.create(jsonObject.toString(), MediaType.get("application/json; charset=utf-8")); - Request request = new Request.Builder() - .url(baseURL) - .post(body) - .build(); - Response response = client.newCall(request).execute(); - responseArray.put(new JSONObject(response.body().string())); - if (response.code() != 200) { - Log.e(TAG, "Error writing byte:" + written); - return 0; - } - written++; - } - receivedData = new JSONObject(responseArray.toString()); - return result; - } - - /** - * Method to get data from ESP - * @return 1 if data was received 0 otherwise - */ - public int read() throws IOException, JSONException { - int result = 1; - URL baseURL = new URL("http://" + baseIP + "/" + getDataEndPoint); - Request request = new Request.Builder() - .url(baseURL) - .build(); - Response response = client.newCall(request).execute(); - if (response.code() != 200) { - Log.e(TAG, "Error reading data"); - return 0; - } else { - receivedData = new JSONObject(response.body().string()); - } - return result; - } - - public JSONObject getReceivedData() { - return receivedData; - } -} diff --git a/app/src/main/java/io/pslab/communication/PacketHandler.java b/app/src/main/java/io/pslab/communication/PacketHandler.java deleted file mode 100644 index 709b26659..000000000 --- a/app/src/main/java/io/pslab/communication/PacketHandler.java +++ /dev/null @@ -1,295 +0,0 @@ -package io.pslab.communication; - -import android.util.Log; - -import org.json.JSONException; -import org.json.JSONObject; - -import java.io.BufferedReader; -import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.io.InputStreamReader; -import java.nio.ByteBuffer; -import java.nio.ByteOrder; -import java.nio.charset.StandardCharsets; -import java.util.Arrays; - -import io.pslab.interfaces.HttpCallback; -import io.pslab.others.ScienceLabCommon; - -/** - * Created by viveksb007 on 28/3/17. - */ - -public class PacketHandler { - - private static final String TAG = "PacketHandler"; - private final int BUFSIZE = 10000; - private byte[] buffer = new byte[BUFSIZE]; - private boolean loadBurst, connected; - private int inputQueueSize = 0, BAUD = 1000000; - private CommunicationHandler mCommunicationHandler = null; - public static String version = ""; - private CommandsProto mCommandsProto; - private int timeout = 500, VERSION_STRING_LENGTH = 8, FW_VERSION_LENGTH = 3; - public static int PSLAB_FW_VERSION = 0; - ByteBuffer burstBuffer = ByteBuffer.allocate(2000); - private HttpAsyncTask httpAsyncTask; - - public PacketHandler(int timeout, CommunicationHandler communicationHandler) { - this.loadBurst = false; - this.connected = false; - this.timeout = timeout; - this.mCommandsProto = new CommandsProto(); - this.mCommunicationHandler = communicationHandler; - connected = (mCommunicationHandler.isConnected() || ScienceLabCommon.isWifiConnected()); - } - - public boolean isConnected() { - connected = (mCommunicationHandler.isConnected() || ScienceLabCommon.isWifiConnected()); - return connected; - } - - public String getVersion() { - try { - sendByte(mCommandsProto.COMMON); - sendByte(mCommandsProto.GET_VERSION); - // Read "\n" - commonRead(VERSION_STRING_LENGTH + 1); - // Only use first line, just like in the Python implementation. - version = new BufferedReader( - new InputStreamReader( - new ByteArrayInputStream(buffer, 0, VERSION_STRING_LENGTH), - StandardCharsets.UTF_8)) - .readLine(); - } catch (IOException e) { - Log.e("Error in Communication", e.toString()); - } - return version; - } - - public int getFirmwareVersion() { - try { - sendByte(mCommandsProto.COMMON); - sendByte(mCommandsProto.GET_FW_VERSION); - int numByteRead = commonRead(FW_VERSION_LENGTH); - if (numByteRead == 1) { - return 2; - } else { - return buffer[0]; - } - } catch (IOException e) { - Log.e("Error in Communication", e.toString()); - } - return 0; - } - - public String readLine() { - String line = ""; - try { - commonRead(CommunicationHandler.DEFAULT_READ_BUFFER_SIZE); - line = new BufferedReader( - new InputStreamReader( - new ByteArrayInputStream(buffer, 0, CommunicationHandler.DEFAULT_READ_BUFFER_SIZE), - StandardCharsets.UTF_8)) - .readLine(); - return line; - } catch (IOException e) { - Log.e("Error in Communication", e.toString()); - } - return line; - } - - public void sendByte(int val) throws IOException { - if (!connected) { - throw new IOException("Device not connected"); - } - if (!loadBurst) { - try { - commonWrite(new byte[]{(byte) (val & 0xff)}); - } catch (IOException | NullPointerException e) { - Log.e("Error in sending byte", e.toString()); - e.printStackTrace(); - } - } else { - burstBuffer.put((byte) (val & 0xff)); - } - } - - public void sendInt(int val) throws IOException { - if (!connected) { - throw new IOException("Device not connected"); - } - if (!loadBurst) { - try { - commonWrite(new byte[]{(byte) (val & 0xff), (byte) ((val >> 8) & 0xff)}); - } catch (IOException e) { - Log.e("Error in sending int", e.toString()); - e.printStackTrace(); - } - } else { - burstBuffer.put(new byte[]{(byte) (val & 0xff), (byte) ((val >> 8) & 0xff)}); - } - } - - public int getAcknowledgement() { - /* - fetches the response byte - 1 SUCCESS - 2 ARGUMENT_ERROR - 3 FAILED - used as a handshake - */ - if (loadBurst) { - inputQueueSize++; - return 1; - } else { - try { - commonRead(1); - return buffer[0]; - } catch (IOException | NullPointerException e) { - e.printStackTrace(); - return 3; - } - } - } - - public byte getByte() { - try { - int numByteRead = commonRead(1); - if (numByteRead == 1) { - return buffer[0]; - } else { - Log.e(TAG, "Error in reading byte"); - } - } catch (IOException e) { - e.printStackTrace(); - } - return -1; - } - - int getVoltageSummation() { - try { - // Note : bytesToBeRead has to be +1 than the requirement - int numByteRead = commonRead(3); - if (numByteRead == 3) { - return (buffer[0] & 0xff) | ((buffer[1] << 8) & 0xff00); - } else { - Log.e(TAG, "Error in reading byte"); - } - } catch (IOException e) { - e.printStackTrace(); - } - return -1; - } - - public int getInt() { - try { - int numByteRead = commonRead(2); - if (numByteRead == 2) { - // LSB is read first - return (buffer[0] & 0xff) | ((buffer[1] << 8) & 0xff00); - } else { - Log.e(TAG, "Error in reading byte"); - } - } catch (IOException e) { - e.printStackTrace(); - } - return -1; - } - - public long getLong() { - try { - int numByteRead = commonRead(4); - if (numByteRead == 4) { - // C++ has long of 4-bytes but in Java int has 4-bytes - // refer "https://stackoverflow.com/questions/7619058/convert-a-byte-array-to-integer-in-java-and-vice-versa" for Endian - return ByteBuffer.wrap(Arrays.copyOfRange(buffer, 0, 4)).order(ByteOrder.LITTLE_ENDIAN).getInt(); - } else { - Log.e(TAG, "Error in reading byte"); - } - } catch (IOException e) { - e.printStackTrace(); - } - return -1; - } - - public boolean waitForData() { - return false; - } - - public int read(byte[] dest, int bytesToRead) throws IOException { - int numBytesRead = commonRead(bytesToRead); - for (int i = 0; i < bytesToRead; i++) { - dest[i] = buffer[i]; - } - if (numBytesRead == bytesToRead) { - return numBytesRead; - } else { - Log.e(TAG, "Error in packetHandler Reading"); - } - return -1; - } - - public byte[] sendBurst() { - try { - commonWrite(burstBuffer.array()); - burstBuffer.clear(); - loadBurst = false; - int bytesRead = commonRead(inputQueueSize); - inputQueueSize = 0; - return Arrays.copyOfRange(buffer, 0, bytesRead); - } catch (IOException e) { - e.printStackTrace(); - } - return new byte[]{-1}; - } - - public int commonRead(int bytesToRead) throws IOException { - final int[] bytesRead = {0}; - if (mCommunicationHandler.isConnected()) { - bytesRead[0] = mCommunicationHandler.read(buffer, bytesToRead, timeout); - } else if (ScienceLabCommon.isWifiConnected()) { - httpAsyncTask = new HttpAsyncTask(ScienceLabCommon.getEspIP(), new HttpCallback() { - @Override - public void success(JSONObject jsonObject) { - try { - //Server will send byte array - buffer = (byte[]) jsonObject.get("data"); - bytesRead[0] = buffer.length; - } catch (JSONException e) { - e.printStackTrace(); - } - } - - @Override - public void error(Exception e) { - Log.e(TAG, "Error reading data over ESP"); - } - }); - httpAsyncTask.execute(new byte[]{}); - } - return bytesRead[0]; - } - - public void commonWrite(byte[] data) throws IOException { - if (mCommunicationHandler.isConnected()) { - mCommunicationHandler.write(data, timeout); - } else if (ScienceLabCommon.isWifiConnected()) { - httpAsyncTask = new HttpAsyncTask(ScienceLabCommon.getEspIP(), new HttpCallback() { - @Override - public void success(JSONObject jsonObject) { - Log.v(TAG, "write response:" + jsonObject.toString()); - } - - @Override - public void error(Exception e) { - Log.e(TAG, "Error writing data over ESP"); - } - }); - - httpAsyncTask.execute(data); - } - - } -} diff --git a/app/src/main/java/io/pslab/communication/ScienceLab.java b/app/src/main/java/io/pslab/communication/ScienceLab.java deleted file mode 100644 index 7b8430d1c..000000000 --- a/app/src/main/java/io/pslab/communication/ScienceLab.java +++ /dev/null @@ -1,2932 +0,0 @@ -package io.pslab.communication; - -import static java.lang.Math.pow; -import static io.pslab.others.MathUtils.linSpace; - -import android.os.Build; -import android.os.Handler; -import android.os.Looper; -import android.util.Log; - - -import org.apache.commons.lang3.ArrayUtils; -import org.apache.commons.math3.analysis.polynomials.PolynomialFunction; - -import java.io.IOException; -import java.nio.ByteBuffer; -import java.nio.ByteOrder; -import java.time.Duration; -import java.time.Instant; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Locale; -import java.util.Map; -import java.util.Objects; - -import io.pslab.activity.MainActivity; -import io.pslab.communication.analogChannel.AnalogAquisitionChannel; -import io.pslab.communication.analogChannel.AnalogConstants; -import io.pslab.communication.analogChannel.AnalogInputSource; -import io.pslab.communication.digitalChannel.DigitalChannel; -import io.pslab.communication.peripherals.DACChannel; -import io.pslab.communication.peripherals.I2C; -import io.pslab.fragment.HomeFragment; -import io.pslab.others.InitializationVariable; - -/** - * Created by viveksb007 on 28/3/17. - */ - -public class ScienceLab { - - private static final String TAG = "ScienceLab"; - public static Thread initialisationThread; - public int DDS_CLOCK, MAX_SAMPLES, samples, triggerLevel, triggerChannel, errorCount, - channelsInBuffer, digitalChannelsInBuffer, dataSplitting; - public double sin1Frequency, sin2Frequency; - double[] currents, gainValues, buffer; - int[] currentScalars; - double SOCKET_CAPACITANCE, resistanceScaling, timebase; - private static final double CAPACITOR_DISCHARGE_VOLTAGE = 0.01 * 3.3; - private static final int CTMU_CHANNEL = 0b11110; - public boolean streaming; - String[] allAnalogChannels, allDigitalChannels; - HashMap analogInputSources = new HashMap<>(); - HashMap squareWaveFrequency = new HashMap<>(); - HashMap gains = new HashMap<>(); - HashMap waveType = new HashMap<>(); - ArrayList aChannels = new ArrayList<>(); - ArrayList dChannels = new ArrayList<>(); - public Map dacChannels = new LinkedHashMap<>(); - private Map values = new LinkedHashMap<>(); - - private CommunicationHandler mCommunicationHandler; - private PacketHandler mPacketHandler; - private CommandsProto mCommandsProto; - private AnalogConstants mAnalogConstants; - private int LAChannelFrequency; - public I2C i2c; - - /** - * Constructor - * - * @param communicationHandler - */ - public ScienceLab(CommunicationHandler communicationHandler) { - mCommandsProto = new CommandsProto(); - mAnalogConstants = new AnalogConstants(); - mCommunicationHandler = communicationHandler; - if (isDeviceFound() && MainActivity.hasPermission) { - try { - mCommunicationHandler.open(1000000); - //Thread.sleep(200); - mPacketHandler = new PacketHandler(50, mCommunicationHandler); - } catch (IOException | NullPointerException e) { - e.printStackTrace(); - } - } - if (isConnected()) { - initializeVariables(); - new Handler().postDelayed(new Runnable() { - @Override - public void run() { - initialisationThread = new Thread(new Runnable() { - - @Override - public void run() { - try { - runInitSequence(); - } catch (IOException e) { - e.printStackTrace(); - } - new Handler(Looper.getMainLooper()).post(new Runnable() { - @Override - public void run() { - if (HomeFragment.booleanVariable == null) { - HomeFragment.booleanVariable = new InitializationVariable(); - } - HomeFragment.booleanVariable.setVariable(true); - } - }); - } - }); - initialisationThread.start(); - - } - }, 1000); - } - } - - private void initializeVariables() { - DDS_CLOCK = 0; - timebase = 40; - MAX_SAMPLES = mCommandsProto.MAX_SAMPLES; - samples = MAX_SAMPLES; - triggerChannel = 0; - triggerLevel = 550; - errorCount = 0; - channelsInBuffer = 0; - digitalChannelsInBuffer = 0; - currents = new double[]{0.55e-3, 0.55e-6, 0.55e-5, 0.55e-4}; - currentScalars = new int[]{1, 2, 3, 0}; - dataSplitting = mCommandsProto.DATA_SPLITTING; - allAnalogChannels = mAnalogConstants.allAnalogChannels; - LAChannelFrequency = 0; - for (String aChannel : allAnalogChannels) { - analogInputSources.put(aChannel, new AnalogInputSource(aChannel)); - } - sin1Frequency = 0; - sin2Frequency = 0; - squareWaveFrequency.put("SQR1", 0.0); - squareWaveFrequency.put("SQR2", 0.0); - squareWaveFrequency.put("SQR3", 0.0); - squareWaveFrequency.put("SQR4", 0.0); - if (CommunicationHandler.PSLAB_VERSION == 6) { - dacChannels.put("PCS", new DACChannel("PCS", new double[]{0, 3.3}, 0, 0)); - dacChannels.put("PV3", new DACChannel("PV3", new double[]{0, 3.3}, 1, 1)); - dacChannels.put("PV2", new DACChannel("PV2", new double[]{-3.3, 3.3}, 2, 0)); - dacChannels.put("PV1", new DACChannel("PV1", new double[]{-5., 5.}, 3, 1)); - } else { - dacChannels.put("PCS", new DACChannel("PCS", new double[]{0, 3.3}, 0, 0)); - dacChannels.put("PV3", new DACChannel("PV3", new double[]{0, 3.3}, 1, 1)); - dacChannels.put("PV2", new DACChannel("PV2", new double[]{-3.3, 3.3}, 2, 2)); - dacChannels.put("PV1", new DACChannel("PV1", new double[]{-5., 5.}, 3, 3)); - } - values.put("PV1", 0.); - values.put("PV2", 0.); - values.put("PV3", 0.); - values.put("PCS", 0.); - } - - private void runInitSequence() throws IOException { - fetchFirmwareVersion(); - ArrayList aboutArray = new ArrayList<>(); - if (!isConnected()) { - Log.e(TAG, "Check hardware connections. Not connected"); - } - streaming = false; - for (String aChannel : mAnalogConstants.biPolars) { - aChannels.add(new AnalogAquisitionChannel(aChannel)); - } - gainValues = mAnalogConstants.gains; - this.buffer = new double[10000]; - Arrays.fill(this.buffer, 0); - SOCKET_CAPACITANCE = 46e-12; - resistanceScaling = 1; - allDigitalChannels = DigitalChannel.digitalChannelNames; - gains.put("CH1", 0); - gains.put("CH2", 0); - for (int i = 0; i < 4; i++) { - dChannels.add(new DigitalChannel(i)); - } - i2c = new I2C(mPacketHandler); - if (isConnected()) { - for (String temp : new String[]{"CH1", "CH2"}) { - this.setGain(temp, 0, true); - } - for (String temp : new String[]{"SI1", "SI2"}) { - loadEquation(temp, "sine"); - } - } - this.clearBuffer(0, samples); - } - - /** - * @return Resistance of connected resistor between RES an GND pins - */ - public Double getResistance() { - double volt = this.getAverageVoltage("RES", null); - if (volt > 3.295) return null; - double current = (3.3 - volt) / 5.1e3; - return (volt / current) * this.resistanceScaling; - } - - public String getVersion() throws IOException { - if (isConnected()) { - return mPacketHandler.getVersion(); - } else { - return "Not Connected"; - } - } - - public void fetchFirmwareVersion() { - if (isConnected()) { - PacketHandler.PSLAB_FW_VERSION = mPacketHandler.getFirmwareVersion(); - if (PacketHandler.PSLAB_FW_VERSION == 2) { - MainActivity.getInstance().runOnUiThread(new Runnable() { - @Override - public void run() { - MainActivity.getInstance().showFirmwareDialog(); - } - }); - } - } - } - - public void close() { - try { - mCommunicationHandler.close(); - } catch (IOException e) { - e.printStackTrace(); - } - } - - private void captureFullSpeedHrInitialize(String channel, int samples, double timeGap, List args) { - timeGap = (int) (timeGap * 8) / 8; - if (timeGap < 0.5) timeGap = (int) (0.5 * 8) / 8; - if (samples > this.MAX_SAMPLES) { - Log.v(TAG, "Sample limit exceeded. 10,000 max"); - samples = this.MAX_SAMPLES; - } - this.timebase = (int) (timeGap * 8) / 8; - this.samples = samples; - int CHOSA = this.analogInputSources.get(channel).CHOSA; - - try { - mPacketHandler.sendByte(mCommandsProto.ADC); - if (args.contains("SET_LOW")) - mPacketHandler.sendByte(mCommandsProto.SET_LO_CAPTURE); - else if (args.contains("SET_HIGH")) - mPacketHandler.sendByte(mCommandsProto.SET_HI_CAPTURE); - else if (args.contains("READ_CAP")) { - mPacketHandler.sendByte(mCommandsProto.MULTIPOINT_CAPACITANCE); - } else - mPacketHandler.sendByte(mCommandsProto.CAPTURE_DMASPEED); - mPacketHandler.sendByte(CHOSA | 0x80); - mPacketHandler.sendInt(samples); - mPacketHandler.sendInt((int) timeGap * 8); - mPacketHandler.getAcknowledgement(); - } catch (IOException e) { - e.printStackTrace(); - } - } - - /** - * @param channel Channel name 'CH1' / 'CH2' ... 'RES' - * @param samples Number of samples to fetch. Maximum 10000/(total specified channels) - * @param timeGap Timegap between samples in microseconds. - * @param args timestamp array ,voltage_value array - * @return Timestamp array ,voltage_value array - */ - public Map captureFullSpeedHr(String channel, int samples, double timeGap, List args) { - this.captureFullSpeedHrInitialize(channel, samples, timeGap, args); - try { - Thread.sleep((long) (1e-6 * this.samples * this.timebase + 0.1)); - } catch (InterruptedException e) { - e.printStackTrace(); - } - Map axisData = retrieveBufferData(channel, this.samples, this.timebase); - if (axisData == null) { - Log.v(TAG, "Retrieved Buffer Data as null"); - return null; - } - Map retData = new HashMap<>(); - retData.put("x", axisData.get("x")); - retData.put("y", this.analogInputSources.get(channel).cal12(axisData.get("y"))); - return retData; - } - - private Map retrieveBufferData(String channel, int samples, double timeGap) { - ArrayList listData = new ArrayList<>(); - try { - for (int i = 0; i < samples / this.dataSplitting; i++) { - mPacketHandler.sendByte(mCommandsProto.ADC); - mPacketHandler.sendByte(mCommandsProto.GET_CAPTURE_CHANNEL); - mPacketHandler.sendByte(0); - mPacketHandler.sendInt(this.dataSplitting); - mPacketHandler.sendInt(i * this.dataSplitting); - byte[] data = new byte[this.dataSplitting * 2 + 1]; - mPacketHandler.read(data, this.dataSplitting * 2 + 1); - for (int j = 0; j < data.length - 1; j++) - listData.add((int) data[j] & 0xff); - } - - if ((samples % this.dataSplitting) != 0) { - mPacketHandler.sendByte(mCommandsProto.ADC); - mPacketHandler.sendByte(mCommandsProto.GET_CAPTURE_CHANNEL); - mPacketHandler.sendByte(0); - mPacketHandler.sendInt(samples * this.dataSplitting); - mPacketHandler.sendInt(samples - samples % this.dataSplitting); - byte[] data = new byte[2 * (samples % this.dataSplitting)]; - mPacketHandler.read(data, 2 * (samples % this.dataSplitting)); - for (int j = 0; j < data.length - 1; j++) - listData.add((int) data[j] & 0xff); - } - - for (int i = 0; i < samples; i++) { - this.buffer[i] = (listData.get(i * 2) | (listData.get(i * 2 + 1) << 8)); - } - - double[] timeAxis = linSpace(0, timeGap * (samples - 1), samples); - Map retData = new HashMap<>(); - retData.put("x", timeAxis); - retData.put("y", Arrays.copyOfRange(buffer, 0, samples)); - return retData; - } catch (IOException e) { - e.printStackTrace(); - } - return null; - } - - /** - * Instruct the ADC to start sampling. use fetchTrace to retrieve the data - * - * @param number Channels to acquire. 1/2/4 - * @param samples Total points to store per channel. Maximum 3200 total - * @param timeGap Timegap between two successive samples (in uSec) - * @param channelOneInput Map channel 1 to 'CH1' - * @param trigger Whether or not to trigger the oscilloscope based on the voltage level set - * @param CH123SA - */ - public void captureTraces(int number, int samples, double timeGap, String channelOneInput, Boolean trigger, Integer CH123SA) { - if (CH123SA == null) CH123SA = 0; - if (channelOneInput == null) channelOneInput = "CH1"; - this.timebase = timeGap; - this.timebase = (int) (this.timebase * 8) / 8; - if (!this.analogInputSources.containsKey(channelOneInput)) { - Log.e(TAG, "Invalid input channel"); - return; - } - int CHOSA = this.analogInputSources.get(channelOneInput).CHOSA; - this.aChannels.get(0).setParams(channelOneInput, samples, 0, this.timebase, 10, this.analogInputSources.get(channelOneInput), null); - try { - mPacketHandler.sendByte(mCommandsProto.ADC); - if (number == 1) { - if (timeGap < 0.5) - this.timebase = (int) (0.5 * 8) / 8; - if (samples > this.MAX_SAMPLES) - samples = this.MAX_SAMPLES; - if (trigger) { - if (timeGap < 0.75) - this.timebase = (int) (0.75 * 8) / 8; - mPacketHandler.sendByte(mCommandsProto.CAPTURE_ONE); - mPacketHandler.sendByte(CHOSA | 0x80); - } else if (timeGap > 1) { - this.aChannels.get(0).setParams(channelOneInput, samples, 0, this.timebase, 12, this.analogInputSources.get(channelOneInput), null); - mPacketHandler.sendByte(mCommandsProto.CAPTURE_DMASPEED); - mPacketHandler.sendByte(CHOSA | 0x80); - } else { - mPacketHandler.sendByte(mCommandsProto.CAPTURE_DMASPEED); - mPacketHandler.sendByte(CHOSA); - } - } else if (number == 2) { - if (timeGap < 0.875) - this.timebase = (int) (0.875 * 8) / 8; - if (samples > this.MAX_SAMPLES / 2) - samples = this.MAX_SAMPLES / 2; - this.aChannels.get(1).setParams("CH2", samples, samples, this.timebase, 10, this.analogInputSources.get("CH2"), null); - mPacketHandler.sendByte(mCommandsProto.CAPTURE_TWO); - mPacketHandler.sendByte(CHOSA | (0x80 * (trigger ? 1 : 0))); - } else { - if (timeGap < 1.75) - this.timebase = (int) (1.75 * 8) / 8; - if (samples > this.MAX_SAMPLES / 4) - samples = this.MAX_SAMPLES / 4; - int i = 1; - for (String temp : new String[]{"CH2", "CH3", "MIC"}) { - this.aChannels.get(i).setParams(temp, samples, i * samples, this.timebase, 10, this.analogInputSources.get(temp), null); - i++; - } - mPacketHandler.sendByte(mCommandsProto.CAPTURE_FOUR); - mPacketHandler.sendByte(CHOSA | (CH123SA << 4) | (0x80 * (trigger ? 1 : 0))); - } - this.samples = samples; - mPacketHandler.sendInt(samples); - mPacketHandler.sendInt((int) this.timebase * 8); - mPacketHandler.getAcknowledgement(); - this.channelsInBuffer = number; - } catch (IOException e) { - e.printStackTrace(); - } - - } - - /** - * Fetches a channel(1-4) captured by :func:captureTraces called prior to this, and returns xAxis,yAxis - * - * @param channelNumber Any of the maximum of four channels that the oscilloscope captured. 1/2/3/4 - * @return time array,voltage array - */ - public HashMap fetchTrace(int channelNumber) { - this.fetchData(channelNumber); - HashMap retData = new HashMap<>(); - retData.put("x", this.aChannels.get(channelNumber - 1).getXAxis()); - retData.put("y", this.aChannels.get(channelNumber - 1).getYAxis()); - return retData; - } - - /** - * Returns the number of samples acquired by the capture routines, and the conversion_done status - * - * @return conversion done(bool) ,samples acquired (number) - */ - public int[] oscilloscopeProgress() { - /* - * returns the number of samples acquired by the capture routines, and the conversion_done status - * - * return structure int[]{conversionDone, samples} - */ - - int conversionDone = 0; - int samples = 0; - try { - mPacketHandler.sendByte(mCommandsProto.ADC); - mPacketHandler.sendByte(mCommandsProto.GET_CAPTURE_STATUS); - conversionDone = (int) mPacketHandler.getByte() & 0xff; - samples = mPacketHandler.getInt(); - mPacketHandler.getAcknowledgement(); - } catch (IOException e) { - e.printStackTrace(); - } - return new int[]{conversionDone, samples}; - } - - private boolean fetchData(int channelNumber) { - int samples = this.aChannels.get(channelNumber - 1).length; - if (channelNumber > this.channelsInBuffer) { - Log.v(TAG, "Channel Unavailable"); - return false; - } - Log.v("Samples", "" + samples); - Log.v("Data Splitting", "" + this.dataSplitting); - ArrayList listData = new ArrayList<>(); - try { - for (int i = 0; i < samples / this.dataSplitting; i++) { - mPacketHandler.sendByte(mCommandsProto.COMMON); - mPacketHandler.sendByte(mCommandsProto.RETRIEVE_BUFFER); - mPacketHandler.sendInt(this.aChannels.get(channelNumber - 1).bufferIndex + (i * this.dataSplitting)); - mPacketHandler.sendInt(this.dataSplitting); - byte[] data = new byte[this.dataSplitting * 2 + 1]; - mPacketHandler.read(data, this.dataSplitting * 2 + 1); - for (int j = 0; j < data.length - 1; j++) - listData.add((int) data[j] & 0xff); - } - - if ((samples % this.dataSplitting) != 0) { - mPacketHandler.sendByte(mCommandsProto.COMMON); - mPacketHandler.sendByte(mCommandsProto.RETRIEVE_BUFFER); - mPacketHandler.sendInt(this.aChannels.get(channelNumber - 1).bufferIndex + samples - samples % this.dataSplitting); - mPacketHandler.sendInt(samples % this.dataSplitting); - byte[] data = new byte[2 * (samples % this.dataSplitting) + 1]; - mPacketHandler.read(data, 2 * (samples % this.dataSplitting) + 1); - for (int j = 0; j < data.length - 1; j++) - listData.add((int) data[j] & 0xff); - } - - } catch (IOException e) { - e.printStackTrace(); - return false; - } - - for (int i = 0; i < listData.size() / 2; i++) { - this.buffer[i] = (listData.get(i * 2)) | (listData.get(i * 2 + 1) << 8); - while (this.buffer[i] > 1023) this.buffer[i] -= 1023; - } - - Log.v("RAW DATA:", Arrays.toString(Arrays.copyOfRange(buffer, 0, samples))); - - this.aChannels.get(channelNumber - 1).yAxis = this.aChannels.get(channelNumber - 1).fixValue(Arrays.copyOfRange(this.buffer, 0, samples)); - return true; - } - - /** - * Configure trigger parameters for 10-bit capture commands - * The capture routines will wait till a rising edge of the input signal crosses the specified level. - * The trigger will timeout within 8mS, and capture routines will start regardless. - * These settings will not be used if the trigger option in the capture routines are set to False - * - * @param channel Channel 0,1,2,3. Corresponding to the channels being recorded by the capture routine(not the analog inputs) - * @param channelName Name of the channel. 'CH1','CH2','CH3','MIC','V+' - * @param voltage The voltage level that should trigger the capture sequence(in Volts) - * @param resolution - * @param prescalar - */ - public void configureTrigger(int channel, String channelName, double voltage, Integer resolution, Integer prescalar) { - if (resolution == null) resolution = 10; - if (prescalar == null) prescalar = 0; - try { - mPacketHandler.sendByte(mCommandsProto.ADC); - mPacketHandler.sendByte(mCommandsProto.CONFIGURE_TRIGGER); - mPacketHandler.sendByte((prescalar << 4) | (1 << channel)); - double level; - if (resolution == 12) { - level = this.analogInputSources.get(channelName).voltToCode12.value(voltage); - if (level < 0) level = 0; - else if (level > 4095) level = 4095; - } else { - level = this.analogInputSources.get(channelName).voltToCode10.value(voltage); - if (level < 0) level = 0; - else if (level > 1023) level = 1023; - } - if (level > pow(2, resolution - 1)) - level = pow(2, resolution - 1); - else if (level < 0) - level = 0; - mPacketHandler.sendInt((int) level); - mPacketHandler.getAcknowledgement(); - } catch (IOException e) { - e.printStackTrace(); - } - } - - /** - * Set the gain of the selected PGA - * - * @param channel 'CH1','CH2' - * @param gain (0-8) -> (1x,2x,4x,5x,8x,10x,16x,32x,1/11x) - * @param force If True, the amplifier gain will be set even if it was previously set to the same value. - * @return - */ - public double setGain(String channel, int gain, Boolean force) { - if (force == null) force = false; - if (gain < 0 || gain > 8) { - Log.v(TAG, "Invalid gain parameter. 0-7 only."); - return 0; - } - if (this.analogInputSources.get(channel).gainPGA == -1) { - Log.v(TAG, "No amplifier exists on this channel : " + channel); - return 0; - } - boolean refresh = false; - if (this.gains.get(channel) != gain) { - this.gains.put(channel, gain); - refresh = true; - } - if (refresh || force) { - analogInputSources.get(channel).setGain(gain); // giving index of gainValues - if (gain > 7) gain = 0; - try { - mPacketHandler.sendByte(mCommandsProto.ADC); - mPacketHandler.sendByte(mCommandsProto.SET_PGA_GAIN); - mPacketHandler.sendByte(analogInputSources.get(channel).gainPGA); - mPacketHandler.sendByte(gain); - mPacketHandler.getAcknowledgement(); - return this.gainValues[gain]; - } catch (IOException e) { - e.printStackTrace(); - } - } - return 0; - } - - /** - * set the gain of the selected PGA - * - * @param channel 'CH1','CH2' - * @param voltageRange Choose from [16,8,4,3,2,1.5,1,.5,160] - * @return - */ - public Double selectRange(String channel, double voltageRange) { - double[] ranges = new double[]{16, 8, 4, 3, 2, 1.5, 1, .5, 160}; - if (Arrays.asList(ArrayUtils.toObject(ranges)).contains(voltageRange)) { - return this.setGain(channel, Arrays.asList(ArrayUtils.toObject(ranges)).indexOf(voltageRange), null); - } else - Log.e(TAG, "Not a valid Range"); - return null; - } - - private int calcCHOSA(String channelName) { - channelName = channelName.toUpperCase(); - AnalogInputSource source = analogInputSources.get(channelName); - boolean found = false; - for (String temp : allAnalogChannels) { - if (temp.equals(channelName)) { - found = true; - break; - } - } - if (!found) { - Log.e(TAG, "Not a valid channel name. selecting CH1"); - return calcCHOSA("CH1"); - } - - return source.CHOSA; - } - - public double getVoltage(String channelName, Integer sample) { - this.voltmeterAutoRange(channelName); - double Voltage = this.getAverageVoltage(channelName, sample); - if (channelName.equals("CH2") || channelName.equals("CH1")) { - return 2 * Voltage; - } else { - return Voltage; - } - } - - private void voltmeterAutoRange(String channelName) { - if (this.analogInputSources.get(channelName).gainPGA != 0) { - this.setGain(channelName, 0, true); - } - } - - /** - * Return the voltage on the selected channel - * - * @param channelName : 'CH1','CH2','CH3','MIC','IN1','RES','V+' - * @param sample Samples to average - * @return Voltage on the selected channel - */ - private double getAverageVoltage(String channelName, Integer sample) { - if (sample == null) sample = 1; - PolynomialFunction poly; - double sum = 0; - poly = analogInputSources.get(channelName).calPoly12; - ArrayList vals = new ArrayList<>(); - for (int i = 0; i < sample; i++) { - vals.add(getRawAverageVoltage(channelName)); - } - for (int j = 0; j < vals.size(); j++) { - sum = sum + poly.value(vals.get(j)); - } - return sum / 2 * vals.size(); - } - - private double getRawAverageVoltage(String channelName) { - try { - int chosa = this.calcCHOSA(channelName); - mPacketHandler.sendByte(mCommandsProto.ADC); - mPacketHandler.sendByte(mCommandsProto.GET_VOLTAGE_SUMMED); - mPacketHandler.sendByte(chosa); - int vSum = mPacketHandler.getVoltageSummation(); - return vSum / 16.0; - } catch (IOException | NullPointerException e) { - e.printStackTrace(); - Log.e(TAG, "Error in getRawAverageVoltage"); - } - return 0; - } - - /** - * Fetches a section of the ADC hardware buffer - * - * @param startingPosition Starting index - * @param totalPoints Total points to fetch - */ - private void fetchBuffer(int startingPosition, int totalPoints) { - try { - mPacketHandler.sendByte(mCommandsProto.COMMON); - mPacketHandler.sendByte(mCommandsProto.RETRIEVE_BUFFER); - mPacketHandler.sendInt(startingPosition); - mPacketHandler.sendInt(totalPoints); - for (int i = 0; i < totalPoints; i++) { - byte[] data = new byte[2]; - mPacketHandler.read(data, 2); - this.buffer[i] = (data[0] & 0xff) | ((data[1] << 8) & 0xff00); - } - mPacketHandler.getAcknowledgement(); - } catch (IOException e) { - e.printStackTrace(); - Log.e(TAG, "Error in fetching buffer"); - } - } - - /** - * Clears a section of the ADC hardware buffer - * - * @param startingPosition Starting index - * @param totalPoints Total points to fetch - */ - private void clearBuffer(int startingPosition, int totalPoints) { - try { - mPacketHandler.sendByte(mCommandsProto.COMMON); - mPacketHandler.sendByte(mCommandsProto.CLEAR_BUFFER); - mPacketHandler.sendInt(startingPosition); - mPacketHandler.sendInt(totalPoints); - mPacketHandler.getAcknowledgement(); - } catch (IOException e) { - e.printStackTrace(); - Log.e(TAG, "Error in clearing buffer"); - } - } - - /** - * Fill a section of the ADC hardware buffer with data - * - * @param startingPosition Starting index - * @param pointArray Total points to fetch - */ - private void fillBuffer(int startingPosition, int[] pointArray) { - try { - mPacketHandler.sendByte(mCommandsProto.COMMON); - mPacketHandler.sendByte(mCommandsProto.FILL_BUFFER); - mPacketHandler.sendInt(startingPosition); - mPacketHandler.sendInt(pointArray.length); - for (int aPointArray : pointArray) { - mPacketHandler.sendInt(aPointArray); - } - mPacketHandler.getAcknowledgement(); - } catch (IOException e) { - e.printStackTrace(); - Log.e(TAG, "Error in filling Buffer"); - } - - } - - public void setDataSplitting(int dataSplitting) { - this.dataSplitting = dataSplitting; - } - - /** - * Checks if PSLab device is found - * - * @return true is device found; false otherwise - */ - public boolean isDeviceFound() { - return mCommunicationHandler.isDeviceFound(); - } - - /** - * Checks if PSLab device is connected - * - * @return true is device is connected; false otherwise - */ - public boolean isConnected() { - return mCommunicationHandler.isConnected(); - } - - /* DIGITAL SECTION */ - - public Integer calculateDigitalChannel(String name) { - if (Arrays.asList(DigitalChannel.digitalChannelNames).contains(name)) - return Arrays.asList(DigitalChannel.digitalChannelNames).indexOf(name); - else { - Log.v(TAG, "Invalid channel " + name + " , selecting LA1 instead "); - return null; - } - } - - private Double getHighFrequencyBackup(String pin) { - try { - mPacketHandler.sendByte(mCommandsProto.COMMON); - mPacketHandler.sendByte(mCommandsProto.GET_HIGH_FREQUENCY); - mPacketHandler.sendByte(this.calculateDigitalChannel(pin)); - int scale = mPacketHandler.getByte(); - long value = mPacketHandler.getLong(); - mPacketHandler.getAcknowledgement(); - return scale * value / 1.0e-1; - } catch (IOException e) { - e.printStackTrace(); - } - return null; - } - - /** - * Retrieves the frequency of the signal connected to LA1. For frequencies > 1MHz - * Also good for lower frequencies, but avoid using it since the oscilloscope cannot be used simultaneously due to hardware limitations. - * The input frequency is fed to a 32 bit counter for a period of 100mS. - * The value of the counter at the end of 100mS is used to calculate the frequency. - * - * @param pin The input pin to measure frequency from : ['LA1','LA2','LA3','LA4','RES','EXT','FRQ'] - * @return frequency - */ - public Double getHighFrequency(String pin) { - /* - Retrieves the frequency of the signal connected to LA1. for frequencies > 1MHz - also good for lower frequencies, but avoid using it since - the oscilloscope cannot be used simultaneously due to hardware limitations. - The input frequency is fed to a 32 bit counter for a period of 100mS. - The value of the counter at the end of 100mS is used to calculate the frequency. - */ - try { - mPacketHandler.sendByte(mCommandsProto.COMMON); - mPacketHandler.sendByte(mCommandsProto.GET_ALTERNATE_HIGH_FREQUENCY); - mPacketHandler.sendByte(this.calculateDigitalChannel(pin)); - int scale = mPacketHandler.getByte(); - long value = mPacketHandler.getLong(); - mPacketHandler.getAcknowledgement(); - return scale * value / 1.0e-1; - } catch (IOException e) { - e.printStackTrace(); - } - return null; - } - - /** - * Frequency measurement on IDx. - * Measures time taken for 16 rising edges of input signal. - * Returns the frequency in Hertz - * - * @param channel The input to measure frequency from. ['LA1','LA2','LA3','LA4','RES','EXT','FRQ'] - * @return frequency - */ - public Double getFrequency(String channel) { - /* - Frequency measurement on IDx. - Measures time taken for 16 rising edges of input signal. - returns the frequency in Hertz - */ - if (channel == null) channel = "LA1"; - LinkedHashMap data; - try { - startOneChannelLA(channel, 1, channel, 3); - Thread.sleep(250); - data = getLAInitialStates(); - Thread.sleep(250); - } catch (InterruptedException e) { - throw new RuntimeException(e); - } - return fetchLAChannelFrequency(calculateDigitalChannel(channel), data); - } - - /** - * Stores a list of rising edges that occurred within the timeout period. - * - * @param channel The input to measure time between two rising edges.['LA1','LA2','LA3','LA4','RES','EXT','FRQ'] - * @param skipCycle Number of points to skip. eg. Pendulums pass through light barriers twice every cycle. SO 1 must be skipped - * @param timeout Number of seconds to wait for datapoints. (Maximum 60 seconds) - * @return - */ - public Double r2rTime(String channel, Integer skipCycle, Integer timeout) { - /* - Return a list of rising edges that occured within the timeout period. - */ - if (skipCycle == null) skipCycle = 0; - if (timeout == null) timeout = 5; - if (timeout > 60) timeout = 60; - this.startOneChannelLA(channel, 3, null, 0); - long startTime = System.currentTimeMillis(); - while (System.currentTimeMillis() - startTime < timeout) { - LinkedHashMap initialStates = this.getLAInitialStates(); - if (initialStates.get("A") == this.MAX_SAMPLES / 4) - initialStates.put("A", 0); - if (initialStates.get("A") >= skipCycle + 2) { - long[] data = this.fetchLongDataFromLA(initialStates.get("A"), 1); - LinkedHashMap tempMap = new LinkedHashMap<>(); - tempMap.put("LA1", initialStates.get("LA1")); - tempMap.put("LA2", initialStates.get("LA2")); - tempMap.put("LA3", initialStates.get("LA3")); - tempMap.put("LA4", initialStates.get("LA4")); - tempMap.put("RES", initialStates.get("RES")); - double[] doubleData = new double[data.length]; - for (int i = 0; i < data.length; i++) { - doubleData[i] = data[i]; - } - this.dChannels.get(0).loadData(tempMap, doubleData); - return 1e-6 * (this.dChannels.get(0).timestamps[skipCycle + 1] - this.dChannels.get(0).timestamps[0]); - } - try { - Thread.sleep(100); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - return null; - } - - /** - * Stores a list of falling edges that occured within the timeout period. - * - * @param channel The input to measure time between two falling edges.['LA1','LA2','LA3','LA4','RES','EXT','FRQ'] - * @param skipCycle Number of points to skip. eg. Pendulums pass through light barriers twice every cycle. SO 1 must be skipped - * @param timeout Number of seconds to wait for datapoints. (Maximum 60 seconds) - * @return - */ - public Double f2fTime(String channel, Integer skipCycle, Integer timeout) { - /* - Return a list of falling edges that occured within the timeout period. - */ - if (skipCycle == null) skipCycle = 0; - if (timeout == null) timeout = 5; - if (timeout > 60) timeout = 60; - this.startOneChannelLA(channel, 2, null, 0); - long startTime = System.currentTimeMillis(); - while (System.currentTimeMillis() - startTime < timeout) { - LinkedHashMap initialStates = this.getLAInitialStates(); - if (initialStates.get("A") == this.MAX_SAMPLES / 4) - initialStates.put("A", 0); - if (initialStates.get("A") >= skipCycle + 2) { - long[] data = this.fetchLongDataFromLA(initialStates.get("A"), 1); - LinkedHashMap tempMap = new LinkedHashMap<>(); - tempMap.put("LA1", initialStates.get("LA1")); - tempMap.put("LA2", initialStates.get("LA2")); - tempMap.put("LA3", initialStates.get("LA3")); - tempMap.put("LA4", initialStates.get("LA4")); - tempMap.put("RES", initialStates.get("RES")); - double[] doubleData = new double[data.length]; - for (int i = 0; i < data.length; i++) { - doubleData[i] = data[i]; - } - this.dChannels.get(0).loadData(tempMap, doubleData); - return 1e-6 * (this.dChannels.get(0).timestamps[skipCycle + 1] - this.dChannels.get(0).timestamps[0]); - } - try { - Thread.sleep(100); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - return null; - } - - /** - * Measures time intervals between two logic level changes on any two digital inputs(both can be the same) and returns the calculated time. - * For example, one can measure the time interval between the occurrence of a rising edge on LA1, and a falling edge on LA3. - * If the returned time is negative, it simply means that the event corresponding to channel2 occurred first. - * - * @param channel1 The input pin to measure first logic level change - * @param channel2 The input pin to measure second logic level change -['LA1','LA2','LA3','LA4','RES','EXT','FRQ'] - * @param edge1 The type of level change to detect in order to start the timer - ['rising', 'falling', 'four rising edges'] - * @param edge2 The type of level change to detect in order to stop the timer - ['rising', 'falling', 'four rising edges'] - * @param timeout Use the timeout option if you're unsure of the input signal time period. Returns -1 if timed out - * @return time - */ - public Double measureInterval(String channel1, String channel2, String edge1, String edge2, Float timeout) { - /* - Measures time intervals between two logic level changes on any two digital inputs(both can be the same) - For example, one can measure the time interval between the occurence of a rising edge on LA1, and a falling edge on LA3. - If the returned time is negative, it simply means that the event corresponding to channel2 occurred first. - Returns the calculated time - */ - - if (timeout == null) timeout = 0.1f; - try { - mPacketHandler.sendByte(mCommandsProto.TIMING); - mPacketHandler.sendByte(mCommandsProto.INTERVAL_MEASUREMENTS); - int timeoutMSB = ((int) (timeout * 64e6)) >> 16; - mPacketHandler.sendInt(timeoutMSB); - mPacketHandler.sendByte(this.calculateDigitalChannel(channel1) | (this.calculateDigitalChannel(channel2) << 4)); - int params = 0; - if ("rising".equals(edge1)) - params |= 3; - else if ("falling".equals(edge1)) - params |= 2; - else - params |= 4; - - if ("rising".equals(edge2)) - params |= 3 << 3; - else if ("falling".equals(edge2)) - params |= 2 << 3; - else - params |= 4 << 3; - - mPacketHandler.sendByte(params); - long A = mPacketHandler.getLong(); - long B = mPacketHandler.getLong(); - int tmt = mPacketHandler.getInt(); - mPacketHandler.getAcknowledgement(); - if (tmt > timeoutMSB || B == 0) return null; - - return (B - A + 20) / 64e6; - } catch (IOException e) { - e.printStackTrace(); - } - return null; - } - - /** - * Duty cycle measurement on channel. Returns wavelength(seconds), and length of first half of pulse(high time) - * Low time = (wavelength - high time) - * - * @param channel The input pin to measure wavelength and high time.['LA1','LA2','LA3','LA4','RES','EXT','FRQ'] - * @param timeout Use the timeout option if you're unsure of the input signal time period. Returns 0 if timed out - * @return Wavelength, Duty cycle - */ - public double[] dutyCycle(String channel, Double timeout) { - /* - duty cycle measurement on channel - returns wavelength(seconds), and length of first half of pulse(high time) - low time = (wavelength - high time) - */ - if (channel == null) channel = "LA1"; - if (timeout == null) timeout = 1.; - Map data = this.measureMultipleDigitalEdges(channel, channel, "rising", "falling", 2, 2, timeout, null, true); - double[] retData = new double[2]; - if (data != null) { - double[] x = data.get("CHANNEL1"); - double[] y = data.get("CHANNEL2"); - if (x != null && y != null) { // Both timers registered something. did not timeout - if (y[0] > 0) { - retData[0] = y[0]; - retData[1] = x[1]; - } else { - if (y[1] > x[1]) { - retData[0] = -1; - retData[1] = -1; - return retData; - } - retData[0] = y[1]; - retData[1] = x[1]; - } - double[] params = new double[2]; - params[0] = retData[1]; - params[1] = retData[0] / retData[1]; - if (params[1] > 0.5) { - Log.v(TAG, Arrays.toString(x) + "\n" + Arrays.toString(y) + "\n" + Arrays.toString(retData)); - } - return params; - } - } - retData[0] = -1; - retData[1] = -1; - return retData; - } - - /** - * Duty cycle measurement on channel. Returns wavelength(seconds), and length of first half of pulse(high time) - * Low time = (wavelength - high time) - * - * @param channel The input pin to measure wavelength and high time.['LA1','LA2','LA3','LA4','RES','EXT','FRQ'] - * @param pulseType Type of pulse to detect. May be 'HIGH' or 'LOW' - * @param timeout Use the timeout option if you're unsure of the input signal time period. Returns 0 if timed out - * @return Pulse width - */ - public Double pulseTime(String channel, String pulseType, Double timeout) { - if (channel == null) channel = "LA1"; - if (pulseType == null) pulseType = "LOW"; - if (timeout == null) timeout = 0.1; - - Map data = this.measureMultipleDigitalEdges(channel, channel, "rising", "falling", 2, 2, timeout, null, true); - if (data != null) { - double[] x = data.get("CHANNEL1"); - double[] y = data.get("CHANNEL2"); - if (x != null && y != null) { // Both timers registered something. did not timeout - if (y[0] > 0) { - if ("HIGH".equals(pulseType)) - return y[0]; - else if ("LOW".equals(pulseType)) { - return x[1] - y[0]; - } - } else { - if ("HIGH".equals(pulseType)) - return y[1]; - else if ("LOW".equals(pulseType)) { - return Math.abs(y[0]); - } - } - } - } - return null; - } - - /** - * Measures a set of timestamped logic level changes(Type can be selected) from two different digital inputs. - * - * @param channel1 The input pin to measure first logic level change - * @param channel2 The input pin to measure second logic level change -['LA1','LA2','LA3','LA4','RES','EXT','FRQ'] - * @param edgeType1 The type of level change that should be recorded - ['rising', 'falling', 'four rising edges(default)'] - * @param edgeType2 The type of level change that should be recorded - ['rising', 'falling', 'four rising edges(default)'] - * @param points1 Number of data points to obtain for input 1 (Max 4) - * @param points2 Number of data points to obtain for input 2 (Max 4) - * @param timeout Use the timeout option if you're unsure of the input signal time period. returns -1 if timed out - * @param SQR1 Set the state of SQR1 output(LOW or HIGH) and then start the timer. eg. SQR1 = 'LOW' - * @param zero subtract the timestamp of the first point from all the others before returning. Default: True - * @return time - */ - private Map measureMultipleDigitalEdges(String channel1, String channel2, String edgeType1, String edgeType2, int points1, int points2, Double timeout, String SQR1, Boolean zero) { - - if (timeout == null) timeout = 0.1; - try { - mPacketHandler.sendByte(mCommandsProto.TIMING); - mPacketHandler.sendByte(mCommandsProto.TIMING_MEASUREMENTS); - int timeoutMSB = ((int) (timeout * 64e6)) >> 16; - mPacketHandler.sendInt(timeoutMSB); - mPacketHandler.sendByte(this.calculateDigitalChannel(channel1) | (this.calculateDigitalChannel(channel2) << 4)); - int params = 0; - if ("rising".equals(edgeType1)) - params |= 3; - else if ("falling".equals(edgeType1)) - params |= 2; - else - params |= 4; - - if ("rising".equals(edgeType2)) - params |= 3 << 3; - else if ("falling".equals(edgeType2)) - params |= 2 << 3; - else - params |= 4 << 3; - if (SQR1 != null) { - params |= (1 << 6); - if ("HIGH".equals(SQR1)) - params |= (1 << 7); - } - mPacketHandler.sendByte(params); - if (points1 > 4) points1 = 4; - if (points2 > 4) points2 = 4; - mPacketHandler.sendByte(points1 | (points2 << 4)); - - //mPacketHandler.waitForData(timeout); todo : complete waitForData in PacketHandler.java - long[] A = new long[points1]; - long[] B = new long[points2]; - for (int i = 0; i < points1; i++) - A[i] = mPacketHandler.getLong(); - for (int i = 0; i < points2; i++) - B[i] = mPacketHandler.getLong(); - int tmt = mPacketHandler.getInt(); - mPacketHandler.getAcknowledgement(); - Map retData = new HashMap<>(); - if (tmt > timeoutMSB) { - retData.put("CHANNEL1", null); - retData.put("CHANNEL2", null); - return retData; - } - if (zero == null) zero = true; - double[] A1 = new double[A.length]; - double[] B1 = new double[B.length]; - if (zero) { - for (int i = 0; i < A.length; i++) { - A[i] -= A[0]; - A1[i] = A[i] / 64e6; - } - for (int i = 0; i < B.length; i++) { - B[i] -= B[0]; - B1[i] = B[i] / 64e6; - } - } else { - for (int i = 0; i < A.length; i++) { - A1[i] = A[i] / 64e6; - } - for (int i = 0; i < B.length; i++) { - B1[i] = B[i] / 64e6; - } - } - retData.put("CHANNEL1", A1); - retData.put("CHANNEL2", B1); - return retData; - } catch (IOException e) { - e.printStackTrace(); - } - return null; - } - - /** - * Log timestamps of rising/falling edges on one digital input - * - * @param waitingTime Total time to allow the logic analyzer to collect data. This is implemented using a simple sleep routine, so if large delays will be involved, refer to startOneChannelLA() to start the acquisition, and fetchLAChannels() to retrieve data from the hardware after adequate time. The retrieved data is stored in the array self.dchans[0].timestamps. - * @param aquireChannel LA1',...,'LA4' - * @param triggerChannel LA1',...,'LA4' - * @param aquireMode EVERY_SIXTEENTH_RISING_EDGE = 5 - * EVERY_FOURTH_RISING_EDGE = 4 - * EVERY_RISING_EDGE = 3 - * EVERY_FALLING_EDGE = 2 - * EVERY_EDGE = 1 - * DISABLED = 0 - * default = 3 - * @param triggerMode same as aquireMode. default_value : 3 - * @return - */ - public double[] captureEdgesOne(Integer waitingTime, String aquireChannel, String triggerChannel, Integer aquireMode, Integer triggerMode) { - /* - Log timestamps of rising/falling edges on one digital input - */ - if (waitingTime == null) waitingTime = 1; - if (aquireChannel == null) aquireChannel = "LA1"; - if (triggerChannel == null) triggerChannel = aquireChannel; - if (aquireMode == null) aquireMode = 3; - if (triggerMode == null) triggerMode = 3; - this.startOneChannelLA(aquireChannel, aquireMode, triggerChannel, triggerMode); - try { - Thread.sleep(waitingTime * 1000); - } catch (InterruptedException e) { - e.printStackTrace(); - } - LinkedHashMap data = this.getLAInitialStates(); - long[] temp = this.fetchLongDataFromLA(data.get("A"), 1); - double[] retData = new double[temp.length]; - for (int i = 0; i < temp.length; i++) { - retData[i] = temp[i] / 64e6; - } - return retData; - } - - /** - * Start logging timestamps of rising/falling edges on LA1 - * - * @param trigger Bool . Enable edge trigger on LA1. use keyword argument edge = 'rising' or 'falling' - * @param channel ['LA1','LA2','LA3','LA4','RES','EXT','FRQ'] - * @param maximumTime Total time to sample. If total time exceeds 67 seconds, a prescaler will be used in the reference clock. - * @param triggerChannels array of digital input names that can trigger the acquisition. Eg, trigger = ['LA1','LA2','LA3'] will triggger when a logic change specified by the keyword argument 'edge' occurs on either or the three specified trigger inputs. - * @param edge 'rising' or 'falling' . trigger edge type for trigger_channels. - */ - public void startOneChannelLABackup(Integer trigger, String channel, Integer maximumTime, ArrayList triggerChannels, String edge) { - /* - start logging timestamps of rising/falling edges on LA1 - */ - try { - this.clearBuffer(0, this.MAX_SAMPLES / 2); - mPacketHandler.sendByte(mCommandsProto.TIMING); - mPacketHandler.sendByte(mCommandsProto.START_ONE_CHAN_LA); - mPacketHandler.sendInt(this.MAX_SAMPLES / 4); - if (triggerChannels != null & (trigger & 1) != 0) { - if (triggerChannels.contains("LA1")) trigger |= (1 << 4); - if (triggerChannels.contains("LA2")) trigger |= (1 << 5); - if (triggerChannels.contains("LA3")) trigger |= (1 << 6); - } else { - trigger |= 1 << (this.calculateDigitalChannel(channel) + 4); - } - if ("rising".equals(edge)) trigger |= 2; - trigger |= (this.calculateDigitalChannel(channel) << 2); - - mPacketHandler.sendByte(trigger); - mPacketHandler.getAcknowledgement(); - this.digitalChannelsInBuffer = 1; - for (DigitalChannel dChan : this.dChannels) { - dChan.prescalar = 0; - dChan.dataType = "long"; - dChan.length = this.MAX_SAMPLES / 4; - dChan.maxTime = (int) (maximumTime * 1e6); - dChan.mode = DigitalChannel.EVERY_EDGE; - } - } catch (IOException e) { - e.printStackTrace(); - } - } - - /** - * Start logging timestamps of rising/falling edges on LA1. - * - * @param channel ['LA1','LA2','LA3','LA4','RES','EXT','FRQ'] - * @param channelMode acquisition mode default value: 1(EVERY_EDGE) - * - EVERY_SIXTEENTH_RISING_EDGE = 5 - * - EVERY_FOURTH_RISING_EDGE = 4 - * - EVERY_RISING_EDGE = 3 - * - EVERY_FALLING_EDGE = 2 - * - EVERY_EDGE = 1 - * - DISABLED = 0 - * @param triggerChannel ['LA1','LA2','LA3','LA4','RES','EXT','FRQ'] - * @param triggerMode 1=Falling edge, 0=Rising Edge, -1=Disable Trigger - */ - public void startOneChannelLA(String channel, Integer channelMode, String triggerChannel, Integer triggerMode) { - if (channel == null) channel = "LA1"; - if (channelMode == null) channelMode = 1; - if (triggerChannel == null) triggerChannel = "LA1"; - if (triggerMode == null) triggerMode = 3; - try { - this.clearBuffer(0, this.MAX_SAMPLES); - mPacketHandler.sendByte(mCommandsProto.TIMING); - mPacketHandler.sendByte(mCommandsProto.START_ALTERNATE_ONE_CHAN_LA); - mPacketHandler.sendInt(this.MAX_SAMPLES / 4); - int aqChannel = this.calculateDigitalChannel(channel); - int aqMode = channelMode; - int trChannel = this.calculateDigitalChannel(triggerChannel); - int trMode = triggerMode; - mPacketHandler.sendByte((aqChannel << 4) | aqMode); - mPacketHandler.sendByte((trChannel << 4) | trMode); - mPacketHandler.getAcknowledgement(); - this.digitalChannelsInBuffer = 1; - this.dChannels.get(aqChannel).prescalar = 0; - this.dChannels.get(aqChannel).dataType = "long"; - this.dChannels.get(aqChannel).length = this.MAX_SAMPLES / 4; - this.dChannels.get(aqChannel).maxTime = (int) (67 * 1e6); - this.dChannels.get(aqChannel).mode = channelMode; - this.dChannels.get(aqChannel).channelName = channel; - if (trMode == 3 || trMode == 4 || trMode == 5) - this.dChannels.get(aqChannel).initialStateOverride = 2; - else if (trMode == 2) - this.dChannels.get(0).initialStateOverride = 1; - - } catch (IOException e) { - e.printStackTrace(); - } - } - - /** - * Start logging timestamps of rising/falling edges on LA1,LA2 - * - * @param channels Channels to acquire data from . default ['LA1','LA2'] - * @param modes modes for each channel. Array . default value: [1,1] - * - EVERY_SIXTEENTH_RISING_EDGE = 5 - * - EVERY_FOURTH_RISING_EDGE = 4 - * - EVERY_RISING_EDGE = 3 - * - EVERY_FALLING_EDGE = 2 - * - EVERY_EDGE = 1 - * - DISABLED = 0 - * @param maximumTime Total time to sample. If total time exceeds 67 seconds, a prescaler will be used in the reference clock - * @param trigger Bool . Enable rising edge trigger on LA1 - * @param edge 'rising' or 'falling' . trigger edge type for trigger_channels. - * @param triggerChannel channel to trigger on . Any digital input. default CH1 - */ - public void startTwoChannelLA(ArrayList channels, ArrayList modes, Integer maximumTime, Integer trigger, String edge, String triggerChannel) { - if (maximumTime == null) maximumTime = 67; - if (trigger == null) trigger = 0; - if (edge == null) edge = "rising"; - if (channels == null) { - channels = new ArrayList<>(); - channels.add("LA1"); - channels.add("LA2"); - } - if (modes == null) { - modes = new ArrayList<>(); - modes.add(1); - modes.add(1); - } - int[] chans = new int[]{this.calculateDigitalChannel(channels.get(0)), this.calculateDigitalChannel(channels.get(1))}; - if (triggerChannel == null) triggerChannel = channels.get(0); - if (trigger != 0) { - trigger = 1; - if ("falling".equals(edge)) trigger |= 2; - trigger |= (this.calculateDigitalChannel(triggerChannel) << 4); - } - try { - this.clearBuffer(0, this.MAX_SAMPLES); - mPacketHandler.sendByte(mCommandsProto.TIMING); - mPacketHandler.sendByte(mCommandsProto.START_TWO_CHAN_LA); - mPacketHandler.sendInt(this.MAX_SAMPLES / 4); - mPacketHandler.sendByte(trigger); - mPacketHandler.sendByte((modes.get(1) << 4) | modes.get(0)); - mPacketHandler.sendByte((chans[1] << 4) | chans[0]); - mPacketHandler.getAcknowledgement(); - for (int i = 0; i < 2; i++) { - DigitalChannel temp = this.dChannels.get(i); - temp.prescalar = 0; - temp.length = this.MAX_SAMPLES / 4; - temp.dataType = "long"; - temp.maxTime = (int) (maximumTime * 1e6); - temp.mode = modes.get(i); - temp.channelNumber = chans[i]; - temp.channelName = channels.get(i); - } - this.digitalChannelsInBuffer = 2; - } catch (IOException e) { - e.printStackTrace(); - } - } - - /** - * Start logging timestamps of rising/falling edges on LA1,LA2,LA3 - * - * @param modes modes for each channel. Array. default value: [1,1,1] - * - EVERY_SIXTEENTH_RISING_EDGE = 5 - * - EVERY_FOURTH_RISING_EDGE = 4 - * - EVERY_RISING_EDGE = 3 - * - EVERY_FALLING_EDGE = 2 - * - EVERY_EDGE = 1 - * - DISABLED = 0 - * @param triggerChannel ['LA1','LA2','LA3','LA4','RES','EXT','FRQ'] - * @param triggerMode same as modes(previously documented keyword argument) - * default_value : 3 - */ - public void startThreeChannelLA(ArrayList modes, String triggerChannel, Integer triggerMode) { - if (modes == null) { - modes = new ArrayList<>(); - modes.add(1); - modes.add(1); - modes.add(1); - } - if (triggerChannel == null) { - triggerChannel = "LA1"; - } - if (triggerMode == null) { - triggerMode = 3; - } - try { - this.clearBuffer(0, this.MAX_SAMPLES); - mPacketHandler.sendByte(mCommandsProto.TIMING); - mPacketHandler.sendByte(mCommandsProto.START_THREE_CHAN_LA); - mPacketHandler.sendInt(this.MAX_SAMPLES / 4); - int trChan = this.calculateDigitalChannel(triggerChannel); - int trMode = triggerMode; - - mPacketHandler.sendInt(modes.get(0) | (modes.get(1) << 4) | (modes.get(2) << 8)); - mPacketHandler.sendByte((trChan << 4) | trMode); - mPacketHandler.getAcknowledgement(); - this.digitalChannelsInBuffer = 3; - - for (int i = 0; i < 3; i++) { - DigitalChannel temp = this.dChannels.get(i); - temp.prescalar = 0; - temp.length = this.MAX_SAMPLES / 4; - temp.dataType = "int"; - temp.maxTime = (int) (1e3); - temp.mode = modes.get(i); - temp.channelName = DigitalChannel.digitalChannelNames[i]; - if (trMode == 3 || trMode == 4 || trMode == 5) { - temp.initialStateOverride = 2; - } else if (trMode == 2) { - temp.initialStateOverride = 1; - } - } - - } catch (IOException e) { - e.printStackTrace(); - } - } - - /** - * Four channel Logic Analyzer. - * Start logging timestamps from a 64MHz counter to record level changes on LA1,LA2,LA3,LA4. - * triggerChannel[0] -> LA1 - * triggerChannel[1] -> LA2 - * triggerChannel[2] -> LA3 - * - * @param trigger Bool. Enable rising edge trigger on LA1. - * @param maximumTime Maximum delay expected between two logic level changes. - * If total time exceeds 1 mS, a prescaler will be used in the reference clock. - * However, this only refers to the maximum time between two successive level changes. If a delay larger - * than .26 S occurs, it will be truncated by modulo .26 S. - * If you need to record large intervals, try single channel/two channel modes which use 32 bit counters - * capable of time interval up to 67 seconds. - * @param modes modes for each channel. List with four elements\n - * default values: [1,1,1,1] - * - EVERY_SIXTEENTH_RISING_EDGE = 5 - * - EVERY_FOURTH_RISING_EDGE = 4 - * - EVERY_RISING_EDGE = 3 - * - EVERY_FALLING_EDGE = 2 - * - EVERY_EDGE = 1 - * - DISABLED = 0 - * @param edge 'rising' or 'falling'. Trigger edge type for trigger_channels. - * @param triggerChannel ['LA1','LA2','LA3','LA4','RES','EXT','FRQ'] - */ - public void startFourChannelLA(Integer trigger, Double maximumTime, ArrayList modes, String edge, ArrayList triggerChannel) { - if (trigger == null) trigger = 1; - if (maximumTime == null) maximumTime = 0.001; - if (modes == null) { - modes = new ArrayList<>(); - modes.add(1); - modes.add(1); - modes.add(1); - } - if (edge == null) edge = "0"; - this.clearBuffer(0, this.MAX_SAMPLES); - int prescale = 0; - try { - mPacketHandler.sendByte(mCommandsProto.TIMING); - mPacketHandler.sendByte(mCommandsProto.START_FOUR_CHAN_LA); - mPacketHandler.sendInt(this.MAX_SAMPLES / 4); - mPacketHandler.sendInt(modes.get(0) | (modes.get(1) << 4) | (modes.get(2) << 8) | (modes.get(3) << 12)); - mPacketHandler.sendByte(prescale); - int triggerOptions = 0; - if (triggerChannel.get(0)) triggerOptions |= 4; - if (triggerChannel.get(1)) triggerOptions |= 8; - if (triggerChannel.get(2)) triggerOptions |= 16; - if (triggerOptions == 0) - triggerOptions |= 4; // Select one trigger channel(LA1) if none selected - if ("rising".equals(edge)) triggerOptions |= 2; - trigger |= triggerOptions; - mPacketHandler.sendByte(trigger); - mPacketHandler.getAcknowledgement(); - this.digitalChannelsInBuffer = 4; - int i = 0; - for (DigitalChannel dChan : this.dChannels) { - dChan.prescalar = prescale; - dChan.dataType = "int"; - dChan.length = this.MAX_SAMPLES / 4; - dChan.maxTime = (int) (maximumTime * 1e6); - dChan.mode = modes.get(i); - dChan.channelName = DigitalChannel.digitalChannelNames[i]; - i++; - } - } catch (IOException e) { - e.printStackTrace(); - } - } - - /** - * Fetches the initial states of digital inputs that were recorded right before the Logic analyzer was started, - * and the total points each channel recorded. - * - * @return CH1 progress,CH2 progress,CH3 progress,CH4 progress,[LA1,LA2,LA3,LA4]. eg. [1,0,1,1] - */ - public LinkedHashMap getLAInitialStates() { - try { - mPacketHandler.sendByte(mCommandsProto.TIMING); - mPacketHandler.sendByte(mCommandsProto.GET_INITIAL_DIGITAL_STATES); - byte[] initialStatesBytes = new byte[13]; - mPacketHandler.read(initialStatesBytes, 13); - int initial = (initialStatesBytes[0] & 0xff) | ((initialStatesBytes[1] << 8) & 0xff00); - int A = (((initialStatesBytes[2] & 0xff) | ((initialStatesBytes[3] << 8) & 0xff00)) - initial) / 2; - int B = (((initialStatesBytes[4] & 0xff) | ((initialStatesBytes[5] << 8) & 0xff00)) - initial) / 2 - MAX_SAMPLES / 4; - int C = (((initialStatesBytes[6] & 0xff) | ((initialStatesBytes[7] << 8) & 0xff00)) - initial) / 2 - 2 * MAX_SAMPLES / 4; - int D = (((initialStatesBytes[8] & 0xff) | ((initialStatesBytes[9] << 8) & 0xff00)) - initial) / 2 - 3 * MAX_SAMPLES / 4; - int s = initialStatesBytes[10]; - int sError = initialStatesBytes[11]; - //mPacketHandler.getAcknowledgement(); - - if (A == 0) A = this.MAX_SAMPLES / 4; - if (B == 0) B = this.MAX_SAMPLES / 4; - if (C == 0) C = this.MAX_SAMPLES / 4; - if (D == 0) D = this.MAX_SAMPLES / 4; - - if (A < 0) A = 0; - if (B < 0) B = 0; - if (C < 0) C = 0; - if (D < 0) D = 0; - - LinkedHashMap retData = new LinkedHashMap<>(); - retData.put("A", A); - retData.put("B", B); - retData.put("C", C); - retData.put("D", D); - - // putting 1 -> true & 0 -> false - if ((s & 1) != 0) - retData.put("LA1", 1); - else - retData.put("LA1", 0); - - if ((s & 2) != 0) - retData.put("LA2", 1); - else - retData.put("LA2", 0); - - if ((s & 4) != 0) - retData.put("LA3", 1); - else - retData.put("LA3", 0); - - if ((s & 8) != 0) - retData.put("LA4", 1); - else - retData.put("LA4", 0); - - if ((s & 16) != 0) - retData.put("RES", 1); - else - retData.put("RES", 0); - - return retData; - } catch (IOException e) { - e.printStackTrace(); - } - return null; - } - - /** - * Stop any running logic analyzer function. - */ - public void stopLA() { - try { - mPacketHandler.sendByte(mCommandsProto.TIMING); - mPacketHandler.sendByte(mCommandsProto.STOP_LA); - mPacketHandler.getAcknowledgement(); - } catch (IOException e) { - e.printStackTrace(); - } - } - - /** - * Fetches the data stored by DMA. integer address increments - * - * @param bytes number of readings(integer) to fetch - * @param channel channel number (1-4) - * @return array of integer data fetched from Logic Analyser. - */ - public int[] fetchIntDataFromLA(Integer bytes, Integer channel) { - if (channel == null) channel = 1; - try { - ArrayList l = new ArrayList<>(); - for (int i = 0; i < bytes / this.dataSplitting; i++) { - mPacketHandler.sendByte(mCommandsProto.COMMON); - mPacketHandler.sendByte(mCommandsProto.RETRIEVE_BUFFER); - mPacketHandler.sendInt(2500 * (channel - 1) + (i * this.dataSplitting)); - mPacketHandler.sendInt(this.dataSplitting); - byte[] data = new byte[this.dataSplitting * 2 + 1]; - mPacketHandler.read(data, this.dataSplitting * 2 + 1); - for (int j = 0; j < data.length - 1; j++) - l.add((int) data[j] & 0xff); - } - - if ((bytes % this.dataSplitting) != 0) { - mPacketHandler.sendByte(mCommandsProto.COMMON); - mPacketHandler.sendByte(mCommandsProto.RETRIEVE_BUFFER); - mPacketHandler.sendInt(bytes - bytes % this.dataSplitting); - mPacketHandler.sendInt(bytes % this.dataSplitting); - byte[] data = new byte[2 * (bytes % this.dataSplitting) + 1]; - mPacketHandler.read(data, 2 * (bytes % this.dataSplitting) + 1); - for (int j = 0; j < data.length - 1; j++) - l.add((int) data[j] & 0xff); - } - if (!l.isEmpty()) { - StringBuilder stringBuilder = new StringBuilder(); - int[] timeStamps = new int[(int) bytes + 1]; - for (int i = 0; i < (int) (bytes); i++) { - int t = (l.get(i * 2) | (l.get(i * 2 + 1) << 8)); - timeStamps[i + 1] = t; - stringBuilder.append(String.valueOf(t)); - stringBuilder.append(" "); - } - Log.v("Fetched points : ", stringBuilder.toString()); - //mPacketHandler.getAcknowledgement(); - Arrays.sort(timeStamps); - timeStamps[0] = 1; - return timeStamps; - } else { - Log.e("Error : ", "Obtained bytes = 0"); - int[] temp = new int[2501]; - Arrays.fill(temp, 0); - return temp; - } - } catch (IOException e) { - e.printStackTrace(); - } - return null; - } - - /** - * Fetches the data stored by DMA. long address increments. - * - * @param bytes number of readings(long integers) to fetch - * @param channel channel number (1-2) - * @return array of long integers data fetched from Logic Analyser. - */ - public long[] fetchLongDataFromLA(Integer bytes, Integer channel) { - if (channel == null) channel = 1; - try { - mPacketHandler.sendByte(mCommandsProto.TIMING); - mPacketHandler.sendByte(mCommandsProto.FETCH_LONG_DMA_DATA); - mPacketHandler.sendInt(bytes); - mPacketHandler.sendByte(channel - 1); - byte[] readData = new byte[bytes * 4]; - mPacketHandler.read(readData, bytes * 4); - mPacketHandler.getAcknowledgement(); - long[] data = new long[bytes]; - for (int i = 0; i < bytes; i++) { - data[i] = ByteBuffer.wrap(Arrays.copyOfRange(readData, 4 * i, 4 * i + 4)).order(ByteOrder.LITTLE_ENDIAN).getLong(); - } - // Trimming array data - int markerA = 0; - for (int i = 0; i < data.length; i++) { - if (data[i] != 0) { - markerA = i; - break; - } - } - int markerB = 0; - for (int i = data.length - 1; i >= 0; i--) { - if (data[i] != 0) { - markerB = i; - break; - } - } - return Arrays.copyOfRange(data, markerA, markerB + 1); - } catch (IOException e) { - e.printStackTrace(); - } - return null; - } - - /** - * Reads and stores the channels in this.dChannels. - * - * @return true if LA channels fetched successfully. - */ - public boolean fetchLAChannels() { - LinkedHashMap data = this.getLAInitialStates(); - for (int i = 0; i < 4; i++) { - if (this.dChannels.get(i).channelNumber < this.digitalChannelsInBuffer) { - this.fetchLAChannel(i, data); - } - } - return true; - } - - /** - * @param channelNumber Channel number being used e.g. CH1, CH2, CH3, CH4. - * @param initialStates State of the digital inputs. returns dictionary with keys 'LA1','LA2','LA3','LA4','RES' - * @return true if data fetched/loaded successfully. - */ - public boolean fetchLAChannel(Integer channelNumber, LinkedHashMap initialStates) { - DigitalChannel dChan = this.dChannels.get(channelNumber); - - LinkedHashMap tempMap = new LinkedHashMap<>(); - tempMap.put("LA1", initialStates.get("LA1")); - tempMap.put("LA2", initialStates.get("LA2")); - tempMap.put("LA3", initialStates.get("LA3")); - tempMap.put("LA4", initialStates.get("LA4")); - tempMap.put("RES", initialStates.get("RES")); - - // Used LinkedHashMap above (initialStates) in which iteration is done sequentially as were inserted - int i = 0; - for (Map.Entry entry : initialStates.entrySet()) { - if (dChan.channelNumber == i) { - i = entry.getValue(); - break; - } - i++; - } - - int[] temp = this.fetchIntDataFromLA(i, dChan.channelNumber + 1); - double[] data = new double[temp.length - 1]; - if (temp[0] == 1) { - for (int j = 1; j < temp.length; j++) { - data[j - 1] = temp[j]; - } - } else { - Log.e("Error : ", "Can't load data"); - return false; - } - dChan.loadData(tempMap, data); - - dChan.generateAxes(); - return true; - } - - public double fetchLAChannelFrequency(Integer channelNumber, LinkedHashMap initialStates) { - DigitalChannel dChan = this.dChannels.get(channelNumber); - - LinkedHashMap tempMap = new LinkedHashMap<>(); - tempMap.put("LA1", initialStates.get("LA1")); - tempMap.put("LA2", initialStates.get("LA2")); - tempMap.put("LA3", initialStates.get("LA3")); - tempMap.put("LA4", initialStates.get("LA4")); - tempMap.put("RES", initialStates.get("RES")); - - // Used LinkedHashMap above (initialStates) in which iteration is done sequentially as were inserted - int i = 0; - for (Map.Entry entry : initialStates.entrySet()) { - if (dChan.channelNumber == i) { - i = entry.getValue(); - break; - } - i++; - } - - int[] temp = this.fetchIntDataFromLA(i, dChan.channelNumber + 1); - double[] data = new double[temp.length - 1]; - if (temp[0] == 1) { - for (int j = 1; j < temp.length; j++) { - data[j - 1] = temp[j]; - } - } else { - Log.e("Error : ", "Can't load data"); - return -1; - } - dChan.loadData(tempMap, data); - - dChan.generateAxes(); - int count = 0; - double[] yAxis = dChan.getYAxis(); - for (int j = 1; j < yAxis.length; j++) { - if (yAxis[i] != yAxis[i - 1]) { - count++; - } - } - if (count == this.MAX_SAMPLES / 2 - 2) { - LAChannelFrequency = 0; - } else if (count != 0 && count != this.MAX_SAMPLES / 2 - 2 && LAChannelFrequency != count) { - LAChannelFrequency = count; - } - return LAChannelFrequency; - } - - public DigitalChannel getDigitalChannel(int i) { - return dChannels.get(i); - } - - /** - * Gets the state of the digital inputs. - * - * @return dictionary with keys 'LA1','LA2','LA3','LA4'. - */ - public Map getStates() { - try { - mPacketHandler.sendByte(mCommandsProto.DIN); - mPacketHandler.sendByte(mCommandsProto.GET_STATES); - byte state = mPacketHandler.getByte(); - mPacketHandler.getAcknowledgement(); - Map states = new LinkedHashMap<>(); - states.put("LA1", ((state & 1) != 0)); - states.put("LA2", ((state & 2) != 0)); - states.put("LA3", ((state & 4) != 0)); - states.put("LA4", ((state & 8) != 0)); - return states; - } catch (IOException e) { - e.printStackTrace(); - } - return null; - } - - /** - * Fetch the state of given input ID. - * - * @param inputID the input channel - * 'LA1' -> state of LA1 - * 'LA4' -> state of LA4 - * @return the logic level on the specified input (LA1,LA2,LA3, or LA4) - */ - public Boolean getState(String inputID) { - return this.getStates().get(inputID); - } - - /** - * set the logic level on digital outputs SQR1,SQR2,SQR3,SQR4. - * - * @param args SQR1,SQR2,SQR3,SQR4 - * states(0 or 1) - */ - public void setState(Map args) { - int data = 0; - if (args.containsKey("SQR1")) { - data |= (0x10 | args.get("SQR1")); - } - if (args.containsKey("SQR2")) { - data |= (0x20 | (args.get("SQR2") << 1)); - } - if (args.containsKey("SQR3")) { - data |= (0x40 | (args.get("SQR3") << 2)); - } - if (args.containsKey("SQR4")) { - data |= (0x80 | (args.get("SQR4") << 3)); - } - try { - mPacketHandler.sendByte(mCommandsProto.DOUT); - mPacketHandler.sendByte(mCommandsProto.SET_STATE); - mPacketHandler.sendByte(data); - mPacketHandler.getAcknowledgement(); - } catch (IOException e) { - e.printStackTrace(); - } - - } - - /** - * Count pulses on a digital input. Retrieve total pulses using readPulseCount. - * - * @param channel The input pin to measure rising edges on : ['LA1','LA2','LA3','LA4','RES','EXT','FRQ'] - */ - public void countPulses(String channel) { - if (channel == null) channel = "RES"; - try { - mPacketHandler.sendByte(mCommandsProto.COMMON); - mPacketHandler.sendByte(mCommandsProto.START_COUNTING); - mPacketHandler.sendByte(this.calculateDigitalChannel(channel)); - mPacketHandler.getAcknowledgement(); - } catch (IOException e) { - e.printStackTrace(); - } - } - - /** - * Read pulses counted using a digital input. Call countPulses before using this. - * - * @return number of pulse. - */ - public int readPulseCount() { - try { - mPacketHandler.sendByte(mCommandsProto.COMMON); - mPacketHandler.sendByte(mCommandsProto.FETCH_COUNT); - int count = mPacketHandler.getVoltageSummation(); - return 10 * count; - } catch (IOException e) { - e.printStackTrace(); - } - return -1; - } - - public void setCapacitorState(int state, int t) { - try { - mPacketHandler.sendByte(mCommandsProto.ADC); - mPacketHandler.sendByte(mCommandsProto.SET_CAP); - mPacketHandler.sendByte(state); - mPacketHandler.sendInt(t); - mPacketHandler.getAcknowledgement(); - } catch (IOException e) { - e.printStackTrace(); - } - } - - public double[] captureCapacitance(int samples, int timeGap) { - AnalyticsClass analyticsClass = new AnalyticsClass(); - this.setCapacitorState(1, 50000); - Map data = this.captureFullSpeedHr("CAP", samples, timeGap, Arrays.asList("READ_CAP")); - double[] x = data.get("x"); - double[] y = data.get("y"); - for (int i = 0; i < x.length; i++) { - x[i] = x[i] * 1e-6; - } - ArrayList fitres = analyticsClass.fitExponential(x, y); - if (fitres != null) { - // Not return extra data as in python-communication library. Not required at this point. - return fitres.get(0); - } - return null; - } - - public Double capacitanceViaRCDischarge() { - double cap = getCapacitorRange()[1]; - double time = 2 * cap * 20e3 * 1e6; // uSec - int samples = 500; - if (time > 5000 && time < 10e6) { - if (time > 50e3) samples = 250; - double RC = this.captureCapacitance(samples, (int) (time / samples))[1]; - return RC / 10e3; - } else { - Log.v(TAG, "cap out of range " + time + cap); - return null; - } - } - - /** - * Charges a capacitor connected to IN1 via a 20K resistor from a 3.3V source for a fixed interval. - * - * @param cTime range of time - * @return the capacitance calculated using the formula Vc = Vs(1-exp(-t/RC)) - */ - public double[] getCapacitorRange(int cTime) { - // returns values as a double array arr[0] = v, arr[1] = c - this.dischargeCap(30000, 1000); - try { - mPacketHandler.sendByte(mCommandsProto.COMMON); - mPacketHandler.sendByte(mCommandsProto.GET_CAP_RANGE); - mPacketHandler.sendInt(cTime); - int vSum = mPacketHandler.getVoltageSummation(); - double v = vSum * 3.3 / 16 / 4095; - double c = -cTime * 1e-6 / 1e4 / Math.log(1 - v / 3.3); - return new double[]{v, c}; - } catch (IOException e) { - e.printStackTrace(); - } - return null; - } - - /** - * Charges a capacitor connected to IN1 via a 20K resistor from a 3.3V source for a fixed interval - * - * @return the capacitance calculated using the formula Vc = Vs(1-exp(-t/RC)) - */ - public double[] getCapacitorRange() { - double[] range = new double[]{1.5, 50e-12}; - for (int i = 0; i < 4; i++) { - range = getCapacitorRange(50 * (int) (pow(10, i))); - if (range[0] > 1.5) { - if (i == 0 && range[0] > 3.28) { - range[1] = 50e-12; - } - break; - } - } - return range; - } - - public void dischargeCap(int dischargeTime, double timeout) { - Instant startTime = null; - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - startTime = Instant.now(); - } - double voltage = getVoltage("CAP", 1); - double previousVoltage = voltage; - - while (voltage > CAPACITOR_DISCHARGE_VOLTAGE) { - setCapacitorState(0, dischargeTime); - voltage = getVoltage("CAP", 1); - - if (Math.abs(previousVoltage - voltage) < CAPACITOR_DISCHARGE_VOLTAGE) { - break; - } - - previousVoltage = voltage; - - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - if (Duration.between(startTime, Instant.now()).toMillis() > timeout) { - break; - } - } - } - } - - /** - * Measures capacitance of component connected between CAP and ground - * - * @return Capacitance (F) - */ - public Double getCapacitance() { - double[] GOOD_VOLTS = new double[]{2.5, 3.3}; - int CT = 10; - int CR = 1; - int iterations = 0; - long startTime = System.currentTimeMillis() / 1000; - while (System.currentTimeMillis() / 1000 - startTime < 5) { - if (CT > 65000) { - Log.v(TAG, "CT too high"); - CT = (int) (CT / pow(10, 4 - CR)); - CR = 0; - } - double[] temp = getCapacitance(CR, 0, CT); - double V = temp[0]; - double C = temp[1]; - if (CT > 30000 && V < 0.1) { - Log.v(TAG, "Capacitance too high for this method"); - return null; - } else if (V > GOOD_VOLTS[0] && V < GOOD_VOLTS[1]) - return C; - else if (V < GOOD_VOLTS[0] && V > 0.01 && CT < 40000) { - if (GOOD_VOLTS[0] / V > 1.1 && iterations < 10) { - CT = (int) (CT * GOOD_VOLTS[0] / V); - iterations += 1; - Log.v(TAG, "Increased CT " + CT); - } else if (iterations == 10) - return null; - else return C; - } else if (V <= 0.1 && CR <= 3) - if (CR == 3) { - CR = 0; - } else { - CR += 1; - } - else if (CR == 0) { - Log.v(TAG, "Capacitance too high!"); - return capacitanceViaRCDischarge(); - } - } - return null; - } - - public double[] getCapacitance(int currentRange, double trim, int chargeTime) { // time in uSec - this.dischargeCap(30000, 1000); - try { - mPacketHandler.sendByte(mCommandsProto.COMMON); - mPacketHandler.sendByte(mCommandsProto.GET_CAPACITANCE); - mPacketHandler.sendByte(currentRange); - if (trim < 0) - mPacketHandler.sendByte((int) (31 - Math.abs(trim) / 2) | 32); - else - mPacketHandler.sendByte((int) trim / 2); - mPacketHandler.sendInt(chargeTime); - Thread.sleep((long) (chargeTime * 1e-6 + .02)); - int VCode; - int i = 0; - do VCode = mPacketHandler.getVoltageSummation(); - while (VCode == -1 & i++ < 10); - double v = 3.3 * VCode / 4095; - double chargeCurrent = this.currents[currentRange] * (100 + trim) / 100.0; - double c = 0; - if (v != 0) { - c = (chargeCurrent * chargeTime * 1e-6 / v - this.SOCKET_CAPACITANCE); - } - return new double[]{v, c}; - } catch (IOException | InterruptedException e) { - e.printStackTrace(); - } - return null; - } - - /** - * Temperature of the MCU in degrees Celsius. - * - * @return temperature : double - */ - public double getTemperature() { - // TODO: Get rid of magic numbers - int cs = 3; - double V = getCTMUVoltage(CTMU_CHANNEL, cs, 0); - if (cs == 1) { - return (646 - V * 1000) / 1.92; // current source = 1 - } else if (cs == 2) { - return (701.5 - V * 1000) / 1.74; // current source = 2 - } else { - return (760 - V * 1000) / 1.56; // current source = 3 - } - } - - /** - * Control the Charge Time Measurement Unit (CTMU). - *

get_ctmu_voltage(5,2) will activate a constant current source of 5.5uA on CAP and then measure the voltage at the output.

- *

If a diode is used to connect CAP to ground, the forward voltage drop of the diode will be returned, e.g. 0.6 V for a 4148 diode.

- *

If a resistor is connected, Ohm's law will be followed within reasonable limits.

- * - * @param channel int - *

Pin number on which to generate a current and measure output - * voltage. Refer to the PIC24EP64GP204 datasheet for channel

- * numbering. - * @param cRange {0, 1, 2, 3} - *

0 -> 550 uA - * 1 -> 550 nA - * 2 -> 5.5 uA - * 3 -> 55 uA

- * @param tgen int, optional - *

Use Time Delay mode instead of Measurement mode. The default value - * is True.

- * @return voltage : double - */ - public double getCTMUVoltage(int channel, int cRange, int tgen) { - try { - mPacketHandler.sendByte(mCommandsProto.COMMON); - mPacketHandler.sendByte(mCommandsProto.GET_CTMU_VOLTAGE); - mPacketHandler.sendByte((channel) | (cRange << 5) | (tgen << 7)); - double raw_voltage = (double) mPacketHandler.getInt() / 16; // 16*voltage across the current source - mPacketHandler.getAcknowledgement(); - double max_voltage = 3.3; - double resolution = 12; - return (max_voltage * raw_voltage / (pow(2, resolution) - 1)); - } catch (IOException e) { - e.printStackTrace(); - } - return -1; - } - - public double getCTMUVoltage(int channel, int cRange) { - return getCTMUVoltage(channel, cRange, 1); - } - - public void startCTMU(int cRange, int trim, int tgen) { - try { - mPacketHandler.sendByte(mCommandsProto.COMMON); - mPacketHandler.sendByte(mCommandsProto.START_CTMU); - mPacketHandler.sendByte(cRange | (tgen << 7)); - mPacketHandler.sendByte(trim); - mPacketHandler.getAcknowledgement(); - } catch (IOException e) { - e.printStackTrace(); - } - } - - public void startCTMU(int cRange, int trim) { - startCTMU(cRange, trim, 1); - } - - public void stopCTMU() { - try { - mPacketHandler.sendByte(mCommandsProto.COMMON); - mPacketHandler.sendByte(mCommandsProto.STOP_CTMU); - mPacketHandler.getAcknowledgement(); - } catch (IOException e) { - e.printStackTrace(); - } - } - - public void resetDevice() { - /* - Reset the device. Standalone mode will be enabled if an OLED is connected to the I2C port. - */ - try { - mPacketHandler.sendByte(mCommandsProto.COMMON); - mPacketHandler.sendByte(mCommandsProto.RESTORE_STANDALONE); - } catch (IOException e) { - e.printStackTrace(); - } - } - - /** - * Reboot and stay in bootloader mode. - * - * @throws IOException - * @throws InterruptedException - */ - public void enterBootloader() throws IOException, InterruptedException { - mCommunicationHandler.close(); - mCommunicationHandler.open(460800); - mPacketHandler = new PacketHandler(50, mCommunicationHandler); - // The PSLab's RGB LED flashes some colors on boot. - int bootLightShowTime = 600; - // Wait before sending magic number to make sure UART is initialized. - Thread.sleep(bootLightShowTime / 2); - // PIC24 UART RX buffer is four bytes deep; no need to time it perfectly. - mPacketHandler.commonWrite(mCommandsProto.pack(0xDECAFBAD)); - // Wait until lightshow is done to prevent accidentally overwriting magic number. - Thread.sleep(bootLightShowTime); - } - - /** - * Set shade of a WS2812 RGB LED. - * - * @param colors ArrayList - *

List of three values between 0-255, where each value is the - * intensity of red, green and blue, respectively. When daisy - * chaining several LEDs, colors should be a list of three-value - * lists.

- * @param output {"RGB", "PGC", "SQ1"}, optional - *

Pin on which to output the pulse train setting the LED color. The - * default value, "RGB", sets the color of the built-in WS2812B - * (PSLav v6 only).

- * @param order String, optional - *

Color order of the connected LED as a three-letter string. The - * built-in LED has order "GRB", which is the default.

- */ - public void RGBLED(ArrayList> colors, String output, String order) { - HashMap pins = new HashMap<>(); - int pin; - if (CommunicationHandler.PSLAB_VERSION == 6) { - pins.put("ONBOARD", 0); - pins.put("SQR1", 1); - pins.put("SQR2", 2); - pins.put("SQR3", 3); - pins.put("SQR4", 4); - } else { - pins.put("RGB", mCommandsProto.SET_RGB1); - pins.put("PGC", mCommandsProto.SET_RGB2); - pins.put("SQ1", mCommandsProto.SET_RGB3); - } - - if (!pins.containsKey(output)) { - String outputPins = String.join(", ", pins.keySet()); - throw new IllegalArgumentException("Invalid output: " + output + ". output must be one of : " + outputPins); - } - pin = Objects.requireNonNull(pins.get(output)); - - for (ArrayList color : colors) { - if (color.size() != 3) { - throw new IllegalArgumentException("Invalid colo; each color list must have three values."); - } - } - - order = order.toUpperCase(Locale.ROOT); - char[] orderChars = order.toCharArray(); - Arrays.sort(orderChars); - if (!Arrays.equals(orderChars, new char[]{'B', 'G', 'R'})) { - throw new IllegalArgumentException("Invalid order: " + order + ". order must contain 'R', 'G', and 'B'."); - } - - try { - mPacketHandler.sendByte(mCommandsProto.COMMON); - - if (CommunicationHandler.PSLAB_VERSION == 6) { - mPacketHandler.sendByte(mCommandsProto.SET_RGB_COMMON); - } else { - mPacketHandler.sendByte(pin); - } - - mPacketHandler.sendByte(colors.size() * 3); - - for (ArrayList color : colors) { - mPacketHandler.sendByte(color.get(order.indexOf('R'))); - mPacketHandler.sendByte(color.get(order.indexOf('G'))); - mPacketHandler.sendByte(color.get(order.indexOf('B'))); - } - - if (CommunicationHandler.PSLAB_VERSION == 6) { - mPacketHandler.sendByte(pin); - } - - mPacketHandler.getAcknowledgement(); - } catch (IOException e) { - e.printStackTrace(); - } - } - - public void RGBLED(ArrayList colors, String output) { - RGBLED(new ArrayList<>(Collections.singletonList(colors)), output, "GRB"); - } - - /* WAVEGEN SECTION */ - - public void setWave(String channel, double frequency) { - if ("SI1".equals(channel)) - this.setSI1(frequency, null); - else if ("SI2".equals(channel)) - this.setSI2(frequency, null); - } - - public double setSine1(double frequency) { - return this.setSI1(frequency, "sine"); - } - - public double setSine2(double frequency) { - return this.setSI2(frequency, "sine"); - } - - public double setSI1(double frequency, String waveType) { - int HIGHRES, tableSize; - if (frequency < 0.1) { - Log.v(TAG, "frequency too low"); - return -1; - } else if (frequency < 1100) { - HIGHRES = 1; - tableSize = 512; - } else { - HIGHRES = 0; - tableSize = 32; - } - if (waveType != null) { - if ("sine".equals(waveType) | "tria".equals(waveType)) { - if (!(this.waveType.get("SI1").equals(waveType))) { - this.loadEquation("SI1", waveType); - } - } else { - Log.v(TAG, "Not a valid waveform. try sine or tria"); - } - } - int[] p = new int[]{1, 8, 64, 256}; - int prescalar = 0, wavelength = 0; - while (prescalar <= 3) { - wavelength = (int) (64e6 / frequency / p[prescalar] / tableSize); - frequency = 64e6 / wavelength / p[prescalar] / tableSize; - if (wavelength < 65525) break; - prescalar++; - } - if (prescalar == 4) { - Log.v(TAG, "Out of range"); - return -1; - } - try { - mPacketHandler.sendByte(mCommandsProto.WAVEGEN); - mPacketHandler.sendByte(mCommandsProto.SET_SINE1); - mPacketHandler.sendByte(HIGHRES | (prescalar << 1)); - mPacketHandler.sendInt(wavelength - 1); - mPacketHandler.getAcknowledgement(); - this.sin1Frequency = frequency; - return this.sin1Frequency; - } catch (IOException e) { - e.printStackTrace(); - } - return -1; - } - - public double setSI2(double frequency, String waveType) { - int HIGHRES; - int tableSize; - if (frequency < 0.1) { - Log.v(TAG, "frequency too low"); - return -1; - } else if (frequency < 1100) { - HIGHRES = 1; - tableSize = 512; - } else { - HIGHRES = 0; - tableSize = 32; - } - if (waveType != null) { - if ("sine".equals(waveType) | "tria".equals(waveType)) { - if (!(this.waveType.get("SI2").equals(waveType))) { - this.loadEquation("SI2", waveType); - } - } else { - Log.v(TAG, "Not a valid waveform. try sine or tria"); - } - } - int[] p = new int[]{1, 8, 64, 256}; - int prescalar = 0, wavelength = 0; - while (prescalar <= 3) { - wavelength = (int) (64e6 / frequency / p[prescalar] / tableSize); - frequency = 64e6 / wavelength / p[prescalar] / tableSize; - if (wavelength < 65525) break; - prescalar++; - } - if (prescalar == 4) { - Log.v(TAG, "Out of range"); - return -1; - } - try { - mPacketHandler.sendByte(mCommandsProto.WAVEGEN); - mPacketHandler.sendByte(mCommandsProto.SET_SINE2); - mPacketHandler.sendByte(HIGHRES | (prescalar << 1)); - mPacketHandler.sendInt(wavelength - 1); - mPacketHandler.getAcknowledgement(); - this.sin2Frequency = frequency; - return this.sin2Frequency; - } catch (IOException e) { - e.printStackTrace(); - } - return -1; - } - - public double readBackWaveform(String channel) { - if ("SI1".equals(channel)) - return this.sin1Frequency; - else if ("SI2".equals(channel)) - return this.sin2Frequency; - else if ("SQR".startsWith(channel)) - return this.squareWaveFrequency.get(channel); - return -1; - } - - public double setWaves(double frequency, double phase, double frequency2) { - // used frequency as double ( python code demanded ), maybe its taken in KHz or something ( Clarify ) - int HIGHRES, tableSize, HIGHRES2, tableSize2, wavelength = 0, wavelength2 = 0; - if (frequency2 == -1) frequency2 = frequency; - if (frequency < 0.1) { - Log.v(TAG, "frequency 1 too low"); - return -1; - } else if (frequency < 1100) { - HIGHRES = 1; - tableSize = 512; - } else { - HIGHRES = 0; - tableSize = 32; - } - if (frequency2 < 0.1) { - Log.v(TAG, "frequency 2 too low"); - return -1; - } else if (frequency2 < 1100) { - HIGHRES2 = 1; - tableSize2 = 512; - } else { - HIGHRES2 = 0; - tableSize2 = 32; - } - if (frequency < 1 || frequency2 < 1) - Log.v(TAG, "extremely low frequencies will have reduced amplitudes due to AC coupling restrictions"); - - int[] p = new int[]{1, 8, 64, 256}; - int prescalar = 0; - double retFrequency = 0; - while (prescalar <= 3) { - wavelength = (int) (64e6 / frequency / p[prescalar] / tableSize); - retFrequency = 64e6 / wavelength / p[prescalar] / tableSize; - if (wavelength < 65525) break; - prescalar++; - } - if (prescalar == 4) { - Log.v(TAG, "#1 out of range"); - return -1; - } - int prescalar2 = 0; - double retFrequency2 = 0; - while (prescalar2 <= 3) { - wavelength2 = (int) (64e6 / frequency2 / p[prescalar2] / tableSize2); - retFrequency2 = 64e6 / wavelength2 / p[prescalar2] / tableSize2; - if (wavelength2 < 65525) break; - prescalar2++; - } - if (prescalar2 == 4) { - Log.v(TAG, "#2 out of range"); - return -1; - } - - int phaseCoarse = (int) (tableSize2 * (phase) / 360.); - int phaseFine = (int) (wavelength2 * (phase - (phaseCoarse) * 360. / tableSize2) / (360. / tableSize2)); - try { - mPacketHandler.sendByte(mCommandsProto.WAVEGEN); - mPacketHandler.sendByte(mCommandsProto.SET_BOTH_WG); - mPacketHandler.sendInt(wavelength - 1); - mPacketHandler.sendInt(wavelength2 - 1); - mPacketHandler.sendInt(phaseCoarse); - mPacketHandler.sendInt(phaseFine); - mPacketHandler.sendByte((prescalar2 << 4) | (prescalar << 2) | (HIGHRES2 << 1) | (HIGHRES)); - mPacketHandler.getAcknowledgement(); - this.sin1Frequency = retFrequency; - this.sin2Frequency = retFrequency2; - return retFrequency; - } catch (IOException e) { - e.printStackTrace(); - } - return -1; - } - - public void loadEquation(String channel, String function) { - double[] span = new double[2]; - if ("sine".equals(function)) { - span[0] = 0; - span[1] = 2 * Math.PI; - waveType.put(channel, "sine"); - } else if ("tria".equals(function)) { - span[0] = 0; - span[1] = 4; - waveType.put(channel, "tria"); - } else { - waveType.put(channel, "arbit"); - } - double factor = (span[1] - span[0]) / 512; - ArrayList x = new ArrayList<>(); - ArrayList y = new ArrayList<>(); - // for now using switch, proper way is to create an interface and pass it to loadEquation and call interface methods for calculation - for (int i = 0; i < 512; i++) { - x.add(span[0] + i * factor); - switch (function) { - case "sine": - y.add(Math.sin(x.get(i))); - break; - case "tria": - y.add(Math.abs(x.get(i) % 4 - 2)); - break; - } - } - loadTable(channel, y, waveType.get(channel), -1); - } - - private void loadTable(String channel, ArrayList y, String mode, double amp) { - waveType.put(channel, mode); - ArrayList channels = new ArrayList<>(); - ArrayList points = y; - channels.add("SI1"); - channels.add("SI2"); - int num; - if (channels.contains(channel)) { - num = channels.indexOf(channel) + 1; - } else { - Log.e(TAG, "Channel does not exist. Try SI1 or SI2"); - return; - } - - if (amp == -1) amp = 0.95; - double LARGE_MAX = 511 * amp, SMALL_MAX = 63 * amp; - double min = Collections.min(y); - for (int i = 0; i < y.size(); i++) { - y.set(i, y.get(i) - min); - } - double max = Collections.max(y); - ArrayList yMod1 = new ArrayList<>(); - for (int i = 0; i < y.size(); i++) { - double temp = 1 - (y.get(i) / max); - yMod1.add((int) Math.round(LARGE_MAX - LARGE_MAX * temp)); - } - y = new ArrayList(); - - - for (int i = 0; i < points.size(); i += 16) { - y.add(points.get(i)); - } - min = Collections.min(y); - for (int i = 0; i < y.size(); i++) { - y.set(i, y.get(i) - min); - } - max = Collections.max(y); - ArrayList yMod2 = new ArrayList<>(); - for (int i = 0; i < y.size(); i++) { - double temp = 1 - (y.get(i) / max); - yMod2.add((int) Math.round(SMALL_MAX - SMALL_MAX * temp)); - } - - try { - mPacketHandler.sendByte(mCommandsProto.WAVEGEN); - switch (num) { - case 1: - mPacketHandler.sendByte(mCommandsProto.LOAD_WAVEFORM1); - break; - case 2: - mPacketHandler.sendByte(mCommandsProto.LOAD_WAVEFORM2); - break; - } - for (int a : yMod1) - mPacketHandler.sendInt(a); - - for (int a : yMod2) - mPacketHandler.sendByte(a); - - // sleep for 0.01 - mPacketHandler.getAcknowledgement(); - } catch (IOException e) { - e.printStackTrace(); - } - } - - - public double setSqr1(double frequency, double dutyCycle, boolean onlyPrepare) { - if (dutyCycle == -1) dutyCycle = 50; - if (frequency == 0 || dutyCycle == 0) return -1; - if (frequency > 10e6) { - Log.v(TAG, "Frequency is greater than 10MHz. Please use map_reference_clock for 16 & 32MHz outputs"); - return 0; - } - int[] p = new int[]{1, 8, 64, 256}; - int prescalar = 0; - int wavelength = 0; - while (prescalar <= 3) { - wavelength = (int) (64e6 / frequency / p[prescalar]); - if (wavelength < 65525) break; - prescalar++; - } - if (prescalar == 4 || wavelength == 0) { - Log.v(TAG, "Out of Range"); - return -1; - } - int highTime = (int) (wavelength * dutyCycle / 100); - if (onlyPrepare) { - Map args = new LinkedHashMap<>(); - args.put("SQR1", 0); - this.setState(args); - } - try { - mPacketHandler.sendByte(mCommandsProto.WAVEGEN); - mPacketHandler.sendByte(mCommandsProto.SET_SQR1); - mPacketHandler.sendInt(Math.round(wavelength)); - mPacketHandler.sendInt(Math.round(highTime)); - if (onlyPrepare) prescalar |= 0x4; - mPacketHandler.sendByte(prescalar); - mPacketHandler.getAcknowledgement(); - } catch (IOException e) { - e.printStackTrace(); - } - this.squareWaveFrequency.put("SQR1", 64e6 / wavelength / p[prescalar & 0x3]); - return this.squareWaveFrequency.get("SQR1"); - } - - public double setSqr2(double frequency, double dutyCycle) { - int[] p = new int[]{1, 8, 64, 256}; - int prescalar = 0; - int wavelength = 0; - while (prescalar <= 3) { - wavelength = (int) (64e6 / frequency / p[prescalar]); - if (wavelength < 65525) break; - prescalar++; - } - if (prescalar == 4 || wavelength == 0) { - Log.v(TAG, "Out of Range"); - return -1; - } - int highTime = (int) (wavelength * dutyCycle / 100); - try { - mPacketHandler.sendByte(mCommandsProto.WAVEGEN); - mPacketHandler.sendByte(mCommandsProto.SET_SQR2); - mPacketHandler.sendInt(Math.round(wavelength)); - mPacketHandler.sendInt(Math.round(highTime)); - mPacketHandler.sendByte(prescalar); - mPacketHandler.getAcknowledgement(); - } catch (IOException e) { - e.printStackTrace(); - } - this.squareWaveFrequency.put("SQR2", 64e6 / wavelength / p[prescalar & 0x3]); - return this.squareWaveFrequency.get("SQR2"); - } - - public void setSqrs(int wavelength, int phase, int highTime1, int highTime2, int prescalar) { - if (prescalar == -1) prescalar = 1; - try { - mPacketHandler.sendByte(mCommandsProto.WAVEGEN); - mPacketHandler.sendByte(mCommandsProto.SET_SQRS); - mPacketHandler.sendInt(wavelength); - mPacketHandler.sendInt(phase); - mPacketHandler.sendInt(highTime1); - mPacketHandler.sendInt(highTime2); - mPacketHandler.sendByte(prescalar); - mPacketHandler.getAcknowledgement(); - } catch (IOException e) { - e.printStackTrace(); - } - } - - public double sqrPWM(double frequency, double h0, double p1, double h1, double p2, double h2, double p3, double h3, boolean pulse) { - if (frequency == 0) return -1; - if (h0 == 0) { - h0 = 0.1; - } - if (h1 == 0) { - h1 = 0.1; - } - if (h2 == 0) { - h2 = 0.1; - } - if (h3 == 0) { - h3 = 0.1; - } - if (frequency > 10e6) { - Log.v(TAG, "Frequency is greater than 10MHz. Please use map_reference_clock for 16 & 32MHz outputs"); - return -1; - } - int[] p = new int[]{1, 8, 64, 256}; - int prescalar = 0, wavelength = 0; - while (prescalar <= 3) { - wavelength = (int) (64e6 / frequency / p[prescalar]); - if (wavelength < 65525) break; - prescalar++; - } - if (prescalar == 4 || wavelength == 0) { - Log.v(TAG, "Out of Range"); - return -1; - } - if (!pulse) prescalar |= (1 << 5); - int a1 = (int) (p1 % 1 * wavelength), b1 = (int) ((h1 + p1) % 1 * wavelength); - int a2 = (int) (p2 % 1 * wavelength), b2 = (int) ((h2 + p2) % 1 * wavelength); - int a3 = (int) (p3 % 1 * wavelength), b3 = (int) ((h3 + p3) % 1 * wavelength); - try { - mPacketHandler.sendByte(mCommandsProto.WAVEGEN); - mPacketHandler.sendByte(mCommandsProto.SQR4); - mPacketHandler.sendInt(wavelength - 1); - mPacketHandler.sendInt((int) (wavelength * h0) - 1); - mPacketHandler.sendInt(Math.max(0, a1 - 1)); - mPacketHandler.sendInt(Math.max(1, b1 - 1)); - mPacketHandler.sendInt(Math.max(0, a2 - 1)); - mPacketHandler.sendInt(Math.max(1, b2 - 1)); - mPacketHandler.sendInt(Math.max(0, a3 - 1)); - mPacketHandler.sendInt(Math.max(1, b3 - 1)); - mPacketHandler.sendByte(prescalar); - mPacketHandler.getAcknowledgement(); - } catch (IOException e) { - e.printStackTrace(); - } - for (String channel : new String[]{"SQR1", "SQR2", "SQR3", "SQR4"}) { - this.squareWaveFrequency.put(channel, 64e6 / wavelength / p[prescalar & 0x3]); - } - return (int) (64e6 / wavelength / p[prescalar & 0x3]); - } - - public void mapReferenceClock(ArrayList args, int scalar) { - try { - mPacketHandler.sendByte(mCommandsProto.WAVEGEN); - mPacketHandler.sendByte(mCommandsProto.MAP_REFERENCE); - int channel = 0; - if (args.contains("SQR1")) channel |= 1; - if (args.contains("SQR2")) channel |= 2; - if (args.contains("SQR3")) channel |= 4; - if (args.contains("SQR4")) channel |= 8; - if (args.contains("WAVEGEN")) channel |= 16; - mPacketHandler.sendByte(channel); - mPacketHandler.sendByte(scalar); - if (args.contains("WAVEGEN")) { - this.DDS_CLOCK = (int) 128e6 / (1 << scalar); - } - mPacketHandler.getAcknowledgement(); - } catch (IOException e) { - e.printStackTrace(); - } - } - - /* ANALOG OUTPUTS */ - - public void setVoltage(String channel, float voltage) { - DACChannel dacChannel = dacChannels.get(channel); - int v = (int) (Math.round(dacChannel.VToCode.value(voltage))); - try { - mPacketHandler.sendByte(mCommandsProto.DAC); - mPacketHandler.sendByte(mCommandsProto.SET_POWER); - mPacketHandler.sendByte(dacChannel.channelCode); - mPacketHandler.sendInt(v); - mPacketHandler.getAcknowledgement(); - } catch (IOException e) { - e.printStackTrace(); - } - values.put(channel, (double) voltage); - } - - private void setCurrent(float current) { - DACChannel dacChannel = dacChannels.get("PCS"); - int v = 3300 - (int) (Math.round(dacChannel.VToCode.value(current))); - try { - mPacketHandler.sendByte(mCommandsProto.DAC); - mPacketHandler.sendByte(mCommandsProto.SET_POWER); - mPacketHandler.sendByte(dacChannel.channelCode); - mPacketHandler.sendInt(v); - mPacketHandler.getAcknowledgement(); - } catch (IOException e) { - e.printStackTrace(); - } - values.put("PCS", (double) current); - } - - private double getVoltage(String channel) { - return this.values.get(channel); - } - - public void setPV1(float value) { - this.setVoltage("PV1", value); - } - - public void setPV2(float value) { - this.setVoltage("PV2", value); - } - - public void setPV3(float value) { - this.setVoltage("PV3", value); - } - - public void setPCS(float value) { - this.setCurrent(value); - } - - public double getPV1() { - return this.getVoltage("PV1"); - } - - public double getPV2() { - return this.getVoltage("PV2"); - } - - public double getPV3() { - return this.getVoltage("PV3"); - } - - public double getPCS() { - return this.getVoltage("PCS"); - } - - /* READ PROGRAM AND DATA ADDRESSES */ - - public long deviceID() { - long a = readProgramAddress(0x800FF8); - long b = readProgramAddress(0x800FFA); - long c = readProgramAddress(0x800FFC); - long d = readProgramAddress(0x800FFE); - long value = d | (c << 16) | (b << 32) | (a << 48); - Log.v(TAG, "device ID : " + value); - return value; - } - - /** - * Return the value stored at the specified address in program memory. - * - * @param address int - *

Address to read from. Refer to PIC24EP64GP204 programming manual.

- * @return data : int

16-bit wide value read from program memory.

- */ - public int readProgramAddress(int address) { - try { - mPacketHandler.sendByte(mCommandsProto.COMMON); - mPacketHandler.sendByte(mCommandsProto.READ_PROGRAM_ADDRESS); - mPacketHandler.sendInt(address & 0xffff); - mPacketHandler.sendInt((address >> 16) & 0xffff); - int data = mPacketHandler.getInt(); - mPacketHandler.getAcknowledgement(); - return data; - } catch (IOException e) { - e.printStackTrace(); - } - return -1; - } - - /** - * Return the value stored at the specified address in RAM. - * - * @param address int - *

Address to read from. Refer to PIC24EP64GP204 programming manual.

- * @return data : int

16-bit wide value read from RAM.

- */ - public int readDataAddress(int address) { - try { - mPacketHandler.sendByte(mCommandsProto.COMMON); - mPacketHandler.sendByte(mCommandsProto.READ_DATA_ADDRESS); - mPacketHandler.sendInt(address & 0xffff); - int data = mPacketHandler.getInt(); - mPacketHandler.getAcknowledgement(); - return data; - } catch (IOException e) { - e.printStackTrace(); - } - return -1; - } - - /** - * Write a value to the specified address in RAM. - * - * @param address int - *

Address to write to. Refer to PIC24EP64GP204 programming manual.

- * @param value int - *

Value to write to RAM.

- */ - public void writeDataAddress(int address, int value) { - try { - mPacketHandler.sendByte(mCommandsProto.COMMON); - mPacketHandler.sendByte(mCommandsProto.WRITE_DATA_ADDRESS); - mPacketHandler.sendInt(address & 0xffff); - mPacketHandler.sendInt(value); - mPacketHandler.getAcknowledgement(); - } catch (IOException e) { - e.printStackTrace(); - } - } - - /** - * Relay all data received by the device to TXD/RXD. - *

- * If a period > 0.5 seconds elapses between two transmit/receive events, - * the device resets and resumes normal mode. This timeout feature has - * been implemented in lieu of a hard reset option. - *

- *

- * Can be used to load programs into secondary microcontrollers with - * bootloaders such as ATMEGA OR ESP8266. - *

- * - * @param baudrate int - *

Baudrate of the UART bus.

- * @param persist bool, optional - *

If set to True, the device will stay in passthrough mode until the - * next power cycle. Otherwise(default scenario), the device will - * return to normal operation if no data is sent/received for a period - * greater than one second at a time.

- */ - public void enableUARTPassThrough(int baudrate, boolean persist) { - try { - mPacketHandler.sendByte(mCommandsProto.PASSTHROUGHS); - mPacketHandler.sendByte(mCommandsProto.PASS_UART); - if (persist) - mPacketHandler.sendByte(1); - else - mPacketHandler.sendByte(0); - mPacketHandler.sendInt((int) Math.round(((64e6 / baudrate) / 4) - 1)); - Log.v(TAG, "BRG2VAL: " + Math.round(((64e6 / baudrate) / 4) - 1)); - // sleep for 0.1 sec - byte[] junk = new byte[100]; - mPacketHandler.read(junk, 100); - // Log junk to see :D - } catch (IOException e) { - e.printStackTrace(); - } - } - - /* MOTOR SIGNALLING */ - - public void servo4(double angle1, double angle2, double angle3, double angle4) { - int params = (1 << 5) | 2; - try { - mPacketHandler.sendByte(mCommandsProto.WAVEGEN); - mPacketHandler.sendByte(mCommandsProto.SQR4); - mPacketHandler.sendInt(10000); - mPacketHandler.sendInt(750 + (int) (angle1 * 1900 / 180)); - mPacketHandler.sendInt(0); - mPacketHandler.sendInt(750 + (int) (angle2 * 1900 / 180)); - mPacketHandler.sendInt(0); - mPacketHandler.sendInt(750 + (int) (angle3 * 1900 / 180)); - mPacketHandler.sendInt(0); - mPacketHandler.sendInt(750 + (int) (angle4 * 1900 / 180)); - mPacketHandler.sendByte(params); - mPacketHandler.getAcknowledgement(); - } catch (IOException e) { - e.printStackTrace(); - } - } - - /** - * Read hardware debug log. - * - * @return log : String

Bytes read from the hardware debug log.

- */ - public String readLog() { - String log = ""; - try { - mPacketHandler.sendByte(mCommandsProto.COMMON); - mPacketHandler.sendByte(mCommandsProto.READ_LOG); - } catch (IOException e) { - e.printStackTrace(); - } - return mPacketHandler.readLine(); - } - - public void disconnect() throws IOException { - mCommunicationHandler.close(); - PacketHandler.version = ""; - } -} \ No newline at end of file diff --git a/app/src/main/java/io/pslab/communication/SensorList.java b/app/src/main/java/io/pslab/communication/SensorList.java deleted file mode 100644 index 2ff102ba5..000000000 --- a/app/src/main/java/io/pslab/communication/SensorList.java +++ /dev/null @@ -1,54 +0,0 @@ -package io.pslab.communication; - -import java.util.HashMap; -import java.util.Map; - -/** - * Created by viveksb007 on 30/3/17. - */ - -public class SensorList { - - public Map sensorList = new HashMap<>(); - - public SensorList() { - sensorList.put(0x00, new String[]{"Could be MLX90614. Try 0x5A"}); - sensorList.put(0x13, new String[]{"VCNL4000"}); - sensorList.put(0x3c, new String[]{"OLED SSD1306"}); - sensorList.put(0x3d, new String[]{"OLED SSD1306"}); - sensorList.put(0x48, new String[]{"PN532 RFID"}); - sensorList.put(0x29, new String[]{"TSL2561"}); - sensorList.put(0x39, new String[]{"TSL2561"}); - sensorList.put(0x49, new String[]{"TSL2561"}); - sensorList.put(0x1D, new String[]{"ADXL345", "MMA7455L", "LSM9DSO"}); - sensorList.put(0x53, new String[]{"ADXL345"}); - sensorList.put(0x5A, new String[]{"MLX90614 PIR temperature"}); - sensorList.put(0x1E, new String[]{"HMC5883L magnetometer", "LSM303 magnetometer"}); - sensorList.put(0x77, new String[]{"BMP180/GY-68 altimeter", "MS5607", "MS5611"}); - sensorList.put(0x68, new String[]{"MPU-6050/GY-521 accel+gyro+temp", "ITG3200", "DS1307", "DS3231"}); - sensorList.put(0x69, new String[]{"ITG3200"}); - sensorList.put(0x76, new String[]{"MS5607", "MS5611"}); - sensorList.put(0x6B, new String[]{"LSM9DSO gyro"}); - sensorList.put(0x19, new String[]{"LSM303 accel"}); - sensorList.put(0x20, new String[]{"MCP23008", "MCP23017"}); - sensorList.put(0x21, new String[]{"MCP23008", "MCP23017"}); - sensorList.put(0x22, new String[]{"MCP23008", "MCP23017"}); - sensorList.put(0x23, new String[]{"BH1750", "MCP23008", "MCP23017"}); - sensorList.put(0x24, new String[]{"MCP23008", "MCP23017"}); - sensorList.put(0x25, new String[]{"MCP23008", "MCP23017"}); - sensorList.put(0x26, new String[]{"MCP23008", "MCP23017"}); - sensorList.put(0x27, new String[]{"MCP23008", "MCP23017"}); - sensorList.put(0x40, new String[]{"SHT21(Temp/RH)"}); - sensorList.put(0x60, new String[]{"MCP4725A0 4 chan DAC (onBoard)"}); - sensorList.put(0x61, new String[]{"MCP4725A0 4 chan DAC"}); - sensorList.put(0x62, new String[]{"MCP4725A1 4 chan DAC"}); - sensorList.put(0x63, new String[]{"MCP4725A1 4 chan DAC", "Si4713"}); - sensorList.put(0x64, new String[]{"MCP4725A2 4 chan DAC"}); - sensorList.put(0x65, new String[]{"MCP4725A2 4 chan DAC"}); - sensorList.put(0x66, new String[]{"MCP4725A3 4 chan DAC"}); - sensorList.put(0x67, new String[]{"MCP4725A3 4 chan DAC"}); - sensorList.put(0x11, new String[]{"Si4713"}); - sensorList.put(0x38, new String[]{"FT6206 touch controller"}); - sensorList.put(0x41, new String[]{"STMPE610"}); - } -} diff --git a/app/src/main/java/io/pslab/communication/analogChannel/AnalogAquisitionChannel.java b/app/src/main/java/io/pslab/communication/analogChannel/AnalogAquisitionChannel.java deleted file mode 100644 index 735766477..000000000 --- a/app/src/main/java/io/pslab/communication/analogChannel/AnalogAquisitionChannel.java +++ /dev/null @@ -1,79 +0,0 @@ -package io.pslab.communication.analogChannel; - -import java.util.Arrays; - -/** - * Created by viveksb007 on 24/3/17. - */ - -public class AnalogAquisitionChannel { - - private int resolution; - private AnalogInputSource analogInputSource; - private double gain; - private String channel; - public int bufferIndex; - private double calibration_ref196; - public int length; - private double timebase; - private double[] xAxis = new double[10000]; - public double[] yAxis = new double[10000]; - - public AnalogAquisitionChannel(String channel) { - gain = 0; - this.channel = channel; - calibration_ref196 = 1.; - resolution = 10; - length = 100; - timebase = 1.; - bufferIndex = 0; - Arrays.fill(xAxis, 0); - Arrays.fill(yAxis, 0); - analogInputSource = new AnalogInputSource("CH1"); - } - - public double[] fixValue(double[] val) { - double[] calcData = new double[val.length]; - if (resolution == 12) - for (int i = 0; i < val.length; i++) - calcData[i] = calibration_ref196 * (analogInputSource.calPoly12.value(val[i])); - else - for (int i = 0; i < val.length; i++) - calcData[i] = calibration_ref196 * (analogInputSource.calPoly10.value(val[i])); - return calcData; - } - - void setYVal(int pos, int val) { - yAxis[pos] = fixValue(new double[]{val})[0]; - } - - void setXVal(int pos, int val) { - xAxis[pos] = fixValue(new double[]{val})[0]; - } - - public void setParams(String channel, int length, int bufferIndex, double timebase, int resolution, AnalogInputSource source, Double gain) { - if (gain != null) this.gain = gain; - if (source != null) this.analogInputSource = source; - if (channel != null) this.channel = channel; - if (resolution != -1) this.resolution = resolution; - if (length != -1) this.length = length; - if (bufferIndex != -1) this.bufferIndex = bufferIndex; - if (timebase != -1) this.timebase = timebase; - regenerateXAxis(); - } - - void regenerateXAxis() { - for (int i = 0; i < length; i++) { - xAxis[i] = timebase * i; - } - } - - public double[] getXAxis() { - return Arrays.copyOfRange(xAxis, 0, length); - } - - public double[] getYAxis() { - return Arrays.copyOfRange(yAxis, 0, length); - } - -} diff --git a/app/src/main/java/io/pslab/communication/analogChannel/AnalogConstants.java b/app/src/main/java/io/pslab/communication/analogChannel/AnalogConstants.java deleted file mode 100644 index 294998ca5..000000000 --- a/app/src/main/java/io/pslab/communication/analogChannel/AnalogConstants.java +++ /dev/null @@ -1,39 +0,0 @@ -package io.pslab.communication.analogChannel; - -import java.util.HashMap; -import java.util.Map; - -/** - * Created by viveksb007 on 24/3/17. - */ - -public class AnalogConstants { - - public double[] gains = {1, 2, 4, 5, 8, 10, 16, 32, 1 / 11.}; - public String[] allAnalogChannels = {"CH1", "CH2", "CH3", "MIC", "CAP", "RES", "VOL"}; - public String[] biPolars = {"CH1", "CH2", "CH3", "MIC"}; - public Map inputRanges = new HashMap<>(); - public Map picADCMultiplex = new HashMap<>(); - - public AnalogConstants() { - - inputRanges.put("CH1", new double[]{16.5, -16.5}); - inputRanges.put("CH2", new double[]{16.5, -16.5}); - inputRanges.put("CH3", new double[]{-3.3, 3.3}); - inputRanges.put("MIC", new double[]{-3.3, 3.3}); - inputRanges.put("CAP", new double[]{0, 3.3}); - inputRanges.put("RES", new double[]{0, 3.3}); - inputRanges.put("VOL", new double[]{0, 3.3}); - - picADCMultiplex.put("CH1", 3); - picADCMultiplex.put("CH2", 0); - picADCMultiplex.put("CH3", 1); - picADCMultiplex.put("MIC", 2); - picADCMultiplex.put("AN4", 4); - picADCMultiplex.put("RES", 7); - picADCMultiplex.put("CAP", 5); - picADCMultiplex.put("VOL", 8); - - } -} - diff --git a/app/src/main/java/io/pslab/communication/analogChannel/AnalogInputSource.java b/app/src/main/java/io/pslab/communication/analogChannel/AnalogInputSource.java deleted file mode 100644 index 21cfa9283..000000000 --- a/app/src/main/java/io/pslab/communication/analogChannel/AnalogInputSource.java +++ /dev/null @@ -1,136 +0,0 @@ -package io.pslab.communication.analogChannel; - -import android.util.Log; - -import org.apache.commons.lang3.ArrayUtils; -import org.apache.commons.math3.analysis.polynomials.PolynomialFunction; - -import java.util.ArrayList; -import java.util.List; - -public class AnalogInputSource { - - private static String TAG = "AnalogInputSource"; - - private double gainValues[], range[]; - public boolean gainEnabled = false, inverted = false, calibrationReady = false; - private double gain = 0; - public int gainPGA, CHOSA; - private int inversion = 1; - private int defaultOffsetCode = 0; - private int scaling = 1; - private String channelName; - public PolynomialFunction calPoly10; - public PolynomialFunction calPoly12; - public PolynomialFunction voltToCode10; - public PolynomialFunction voltToCode12; - private List adc_shifts = new ArrayList<>(); - private List polynomials = new ArrayList<>(); //list of maps - - public AnalogInputSource(String channelName) { - AnalogConstants analogConstants = new AnalogConstants(); - this.channelName = channelName; - range = analogConstants.inputRanges.get(channelName); - gainValues = analogConstants.gains; - this.CHOSA = analogConstants.picADCMultiplex.get(channelName); - - calPoly10 = new PolynomialFunction(new double[]{0., 3.3 / 1023, 0.}); - calPoly12 = new PolynomialFunction(new double[]{0., 3.3 / 4095, 0.}); - - if (range[1] - range[0] < 0) { - inverted = true; - inversion = -1; - } - if (channelName.equals("CH1")) { - gainEnabled = true; - gainPGA = 1; - gain = 0; - } else if (channelName.equals("CH2")) { - gainEnabled = true; - gainPGA = 2; - gain = 0; - } - gain = 0; - regenerateCalibration(); - } - - public Boolean setGain(int index) { - if (!gainEnabled) { - Log.e(channelName, "Analog gain is not available"); - return false; - } - gain = gainValues[index]; - regenerateCalibration(); - return true; - } - - boolean inRange(double val) { - double sum = voltToCode12.value(val); - return sum >= 50 && sum <= 4095; - } - - boolean conservativeInRange(double val) { - double solution = voltToCode12.value(val); - return solution >= 50 && solution <= 4000; - } - - public List loadCalibrationTable(double[] table, double slope, double intercept) { - for (double aTable : table) { - adc_shifts.add(aTable * slope - intercept); - } - return adc_shifts; - } - - public void ignoreCalibration() { - calibrationReady = false; - } - - public void loadPolynomials(ArrayList polys) { - for (int i = 0; i < polys.size(); i++) { - double[] temp = ArrayUtils.toPrimitive(polys.get(i)); - ArrayUtils.reverse(temp); - polynomials.add(new PolynomialFunction(temp)); - } - } - - public void regenerateCalibration() { - double A, B, intercept, slope; - B = range[1]; - A = range[0]; - if (gain >= 0 && gain<=8) { - gain = gainValues[(int) gain]; - B /= gain; - A /= gain; - } - slope = 2 * (B - A); - intercept = 2 * A; - if (!calibrationReady || gain == 8) { - calPoly10 = new PolynomialFunction(new double[]{intercept, slope / 1023, 0.}); - calPoly12 = new PolynomialFunction(new double[]{intercept, slope / 4095, 0.}); - }//else cases need to be worked on!!! - - voltToCode10 = new PolynomialFunction(new double[]{-1023 * intercept / slope, 1023. / slope, 0.}); - voltToCode12 = new PolynomialFunction(new double[]{-4095 * intercept / slope, 4095., 0.}); - } - - public double[] cal12(double[] RAW) { - double[] calcData = new double[RAW.length]; - for (int i = 0; i < RAW.length; i++) { - double avg_shifts = (adc_shifts.get((int) Math.floor(RAW[i])) + adc_shifts.get((int) Math.ceil(RAW[i]))) / 2; - RAW[i] -= 4095 * avg_shifts / 3.3; - calcData[i] = (polynomials.get((int) gain).value(RAW[i])); - } - return calcData; - } - - public double[] cal10(double[] RAW) { - double[] calcData = new double[RAW.length]; - for (int i = 0; i < RAW.length; i++) { - RAW[i] *= 4095 / 1023; - double avg_shifts = (adc_shifts.get((int) Math.floor(RAW[i])) + adc_shifts.get((int) Math.ceil(RAW[i]))) / 2; - RAW[i] -= 4095 * avg_shifts / 3.3; - calcData[i] = (polynomials.get((int) gain).value(RAW[i])); - } - return calcData; - } -} diff --git a/app/src/main/java/io/pslab/communication/digitalChannel/DigitalChannel.java b/app/src/main/java/io/pslab/communication/digitalChannel/DigitalChannel.java deleted file mode 100644 index c934e998f..000000000 --- a/app/src/main/java/io/pslab/communication/digitalChannel/DigitalChannel.java +++ /dev/null @@ -1,156 +0,0 @@ -package io.pslab.communication.digitalChannel; - -import java.util.Arrays; -import java.util.LinkedHashMap; - -/** - * Created by viveksb007 on 26/3/17. - */ - -public class DigitalChannel { - - public static final int EVERY_EDGE = 1; - public static final int DISABLED = 0; - private static final int EVERY_SIXTEENTH_RISING_EDGE = 5; - private static final int EVERY_FOURTH_RISING_EDGE = 4; - private static final int EVERY_RISING_EDGE = 3; - private static final int EVERY_FALLING_EDGE = 2; - public static String[] digitalChannelNames = {"LA1", "LA2", "LA3", "LA4", "RES", "EXT", "FRQ"}; - public String channelName, dataType; - public int initialStateOverride, channelNumber, length, prescalar, trigger, dlength, plotLength, maxTime, mode; - public double xAxis[], yAxis[], timestamps[]; - boolean initialState; - double gain, maxT; - - public DigitalChannel(int channelNumber) { - this.channelNumber = channelNumber; - this.channelName = digitalChannelNames[channelNumber]; - this.gain = 0; - this.xAxis = new double[20000]; - this.yAxis = new double[20000]; - this.timestamps = new double[10000]; - this.length = 100; - this.initialState = false; - this.prescalar = 0; - this.dataType = "int"; - this.trigger = 0; - this.dlength = 0; - this.plotLength = 0; - this.maxT = 0; - this.maxTime = 0; - this.initialStateOverride = 0; - this.mode = EVERY_EDGE; - } - - void setParams(String channelName, int channelNumber) { - this.channelName = channelName; - this.channelNumber = channelNumber; - } - - void setPrescalar(int prescalar) { - this.prescalar = prescalar; - } - - public void loadData(LinkedHashMap initialStates, double[] timestamps) { - if (initialStateOverride != 0) { - this.initialState = (initialStateOverride - 1) == 1; - this.initialStateOverride = 0; - } else { - final Integer s = initialStates.get(channelName); - this.initialState = s != null && s == 1; - } - System.arraycopy(timestamps, 0, this.timestamps, 0, timestamps.length); - this.dlength = timestamps.length; // - double factor; - switch (prescalar) { - case 0: - factor = 64; - break; - case 1: - factor = 8; - break; - case 2: - factor = 4; - break; - default: - factor = 1; - } - for (int i = 0; i < this.timestamps.length; i++) this.timestamps[i] /= factor; - if (dlength > 0) - this.maxT = this.timestamps[this.timestamps.length - 1]; - else - this.maxT = 0; - - } - - public void generateAxes() { - int HIGH = 1, LOW = 0, state; - if (initialState) - state = LOW; - else - state = HIGH; - - if (this.mode == DISABLED) { - xAxis[0] = 0; - yAxis[0] = 0; - this.plotLength = 1; - } else if (this.mode == EVERY_EDGE) { - xAxis[0] = 0; - yAxis[0] = state; - int i, j; - for (i = 1, j = 1; i < this.dlength; i++, j++) { - xAxis[j] = timestamps[i]; - yAxis[j] = state; - if (state == HIGH) - state = LOW; - else - state = HIGH; - j++; - xAxis[j] = timestamps[i]; - yAxis[j] = state; - } - plotLength = j; - } else if (this.mode == EVERY_FALLING_EDGE) { - xAxis[0] = 0; - yAxis[0] = HIGH; - int i, j; - for (i = 1, j = 1; i < this.dlength; i++, j++) { - xAxis[j] = timestamps[i]; - yAxis[j] = HIGH; - j++; - xAxis[j] = timestamps[i]; - yAxis[j] = LOW; - j++; - xAxis[j] = timestamps[i]; - yAxis[j] = HIGH; - } - state = HIGH; - plotLength = j; - } else if (this.mode == EVERY_RISING_EDGE || this.mode == EVERY_FOURTH_RISING_EDGE || this.mode == EVERY_SIXTEENTH_RISING_EDGE) { - xAxis[0] = 0; - yAxis[0] = LOW; - int i, j; - for (i = 1, j = 1; i < this.dlength; i++, j++) { - xAxis[j] = timestamps[i]; - yAxis[j] = LOW; - j++; - xAxis[j] = timestamps[i]; - yAxis[j] = HIGH; - j++; - xAxis[j] = timestamps[i]; - yAxis[j] = LOW; - } - state = LOW; - plotLength = j; - } - - } - - public double[] getXAxis() { - return Arrays.copyOfRange(this.xAxis, 0, plotLength); - } - - public double[] getYAxis() { - return Arrays.copyOfRange(this.yAxis, 0, plotLength); - } -} diff --git a/app/src/main/java/io/pslab/communication/peripherals/DACChannel.java b/app/src/main/java/io/pslab/communication/peripherals/DACChannel.java deleted file mode 100644 index 2a58fc2b1..000000000 --- a/app/src/main/java/io/pslab/communication/peripherals/DACChannel.java +++ /dev/null @@ -1,69 +0,0 @@ -package io.pslab.communication.peripherals; - -import org.apache.commons.math3.analysis.polynomials.PolynomialFunction; - -import java.util.ArrayList; -import java.util.List; -/** - * Created by viveksb007 on 28/3/17. - */ - -public class DACChannel { - private String name; - int channum; - private int offset; - public double[] range; - private double slope, intercept; - public PolynomialFunction VToCode; - public int channelCode; - PolynomialFunction CodeToV; - String calibrationEnabled; - private List calibrationTable = new ArrayList<>(); - - public DACChannel(String name, double[] span, int channum, int channelCode) { - this.name = name; - this.range = span; - this.channum = channum; - this.slope = span[1] - span[0]; - this.intercept = span[0]; - this.VToCode = new PolynomialFunction(new double[]{-3300. * intercept / slope, 3300. / slope}); - this.CodeToV = new PolynomialFunction(new double[]{intercept, slope / 3300.}); - this.calibrationEnabled = "false"; - this.slope = 1; - this.offset = 0; - this.channelCode = channelCode; - } - - public void loadCalibrationTable(List table) { - calibrationEnabled = "table"; - calibrationTable = table; - } - - public void loadCalibrationTwopoint(double slope, int offset) { - calibrationEnabled = "twopoint"; - this.slope = slope; - this.offset = offset; - } - - int applyCalibration(int v) { - if (calibrationEnabled.equals("table")) { - if (v + calibrationTable.get(v) <= 0) { - return 0; - } else if (v + calibrationTable.get(v) > 0 && v + calibrationTable.get(v) < 4095) { - return ((int) (v + calibrationTable.get(v))); - } else { - return 4095; - } - } else if (calibrationEnabled.equals("twopoint")) { - if (slope * v + offset <= 0) { - return 0; - } else if (slope * v + offset > 0 && slope * v + offset < 4095) { - return ((int) (slope * v + offset)); - } else { - return 4095; - } - } else { - return v; - } - } -} diff --git a/app/src/main/java/io/pslab/communication/peripherals/I2C.java b/app/src/main/java/io/pslab/communication/peripherals/I2C.java deleted file mode 100644 index 4f5802056..000000000 --- a/app/src/main/java/io/pslab/communication/peripherals/I2C.java +++ /dev/null @@ -1,284 +0,0 @@ -package io.pslab.communication.peripherals; - -import android.os.SystemClock; -import android.util.Log; - -import io.pslab.communication.CommandsProto; -import io.pslab.communication.PacketHandler; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.LinkedHashMap; -import java.util.Map; - -/** - * Created by viveksb007 on 28/3/17. - */ - -public class I2C { - - private static final String TAG = "I2C"; - private double[] buffer; - private int frequency = 100000; - private CommandsProto commandsProto; - private PacketHandler packetHandler; - private int totalBytes, channels, samples, timeGap; - - public I2C(PacketHandler packetHandler) { - this.buffer = new double[10000]; - Arrays.fill(buffer, 0); - this.packetHandler = packetHandler; - this.commandsProto = new CommandsProto(); - } - - public void init() throws IOException { - packetHandler.sendByte(commandsProto.I2C_HEADER); - packetHandler.sendByte(commandsProto.I2C_INIT); - packetHandler.getAcknowledgement(); // can check success or failure by ack - } - - public void enableSMBus() throws IOException { - packetHandler.sendByte(commandsProto.I2C_HEADER); - packetHandler.sendByte(commandsProto.I2C_ENABLE_SMBUS); - packetHandler.getAcknowledgement(); - } - - public void pullSCLLow(int uSec) throws IOException { - packetHandler.sendByte(commandsProto.I2C_HEADER); - packetHandler.sendByte(commandsProto.I2C_PULLDOWN_SCL); - packetHandler.sendInt(uSec); - packetHandler.getAcknowledgement(); - } - - public void config(int frequency) throws IOException { - packetHandler.sendByte(commandsProto.I2C_HEADER); - packetHandler.sendByte(commandsProto.I2C_CONFIG); - int BRGVAL = (int) ((1 / frequency - 1 / 1e7) * 64e6 - 1); - if (BRGVAL > 511) { - BRGVAL = 511; - Log.v(TAG, "Frequency too low. Setting to : " + String.valueOf(1 / ((BRGVAL + 1.0) / 64e6 + 1.0 / 1e7))); - } - packetHandler.sendInt(BRGVAL); - packetHandler.getAcknowledgement(); - } - - public int start(int address, int rw) throws IOException { - packetHandler.sendByte(commandsProto.I2C_HEADER); - packetHandler.sendByte(commandsProto.I2C_START); - packetHandler.sendByte((address << 1) | rw & 0xff); - return (packetHandler.getAcknowledgement() >> 4); - } - - public void stop() throws IOException { - packetHandler.sendByte(commandsProto.I2C_HEADER); - packetHandler.sendByte(commandsProto.I2C_STOP); - packetHandler.getAcknowledgement(); - } - - public void _wait() throws IOException { - packetHandler.sendByte(commandsProto.I2C_HEADER); - packetHandler.sendByte(commandsProto.I2C_WAIT); - packetHandler.getAcknowledgement(); - } - - public int send(int data) throws IOException { - packetHandler.sendByte(commandsProto.I2C_HEADER); - packetHandler.sendByte(commandsProto.I2C_SEND); - packetHandler.sendByte(data); - return (packetHandler.getAcknowledgement() >> 4); - } - - public int restart(int address, int rw) throws IOException { - packetHandler.sendByte(commandsProto.I2C_HEADER); - packetHandler.sendByte(commandsProto.I2C_RESTART); - packetHandler.sendByte((address << 1) | rw & 0xff); - return (packetHandler.getAcknowledgement() >> 4); - } - - public ArrayList simpleRead(int address, int numBytes) throws IOException { - this.start(address, 1); - return this.read(numBytes); - } - - public ArrayList read(int length) throws IOException { - ArrayList data = new ArrayList<>(); - for (int i = 0; i < length - 1; i++) { - packetHandler.sendByte(commandsProto.I2C_HEADER); - packetHandler.sendByte(commandsProto.I2C_READ_MORE); - data.add(packetHandler.getByte()); - packetHandler.getAcknowledgement(); - } - packetHandler.sendByte(commandsProto.I2C_HEADER); - packetHandler.sendByte(commandsProto.I2C_READ_END); - data.add(packetHandler.getByte()); - packetHandler.getAcknowledgement(); - return data; - } - - public byte readRepeat() throws IOException { - packetHandler.sendByte(commandsProto.I2C_HEADER); - packetHandler.sendByte(commandsProto.I2C_READ_MORE); - byte val = packetHandler.getByte(); - packetHandler.getAcknowledgement(); - return val; - } - - public byte readEnd() throws IOException { - packetHandler.sendByte(commandsProto.I2C_HEADER); - packetHandler.sendByte(commandsProto.I2C_READ_END); - byte val = packetHandler.getByte(); - packetHandler.getAcknowledgement(); - return val; - } - - public int readStatus() throws IOException { - packetHandler.sendByte(commandsProto.I2C_HEADER); - packetHandler.sendByte(commandsProto.I2C_STATUS); - int val = packetHandler.getInt(); - packetHandler.getAcknowledgement(); - return val; - } - - public ArrayList readBulk(int deviceAddress, int registerAddress, int bytesToRead) throws IOException { - packetHandler.sendByte(commandsProto.I2C_HEADER); - packetHandler.sendByte(commandsProto.I2C_READ_BULK); - packetHandler.sendByte(deviceAddress); - packetHandler.sendByte(registerAddress); - packetHandler.sendByte(bytesToRead); - byte[] data = new byte[bytesToRead + 1]; - packetHandler.read(data, bytesToRead + 1); - ArrayList intData = new ArrayList<>(); - for (byte b : data) { - intData.add((int) b); - } - return intData; - } - - public ArrayList read(int deviceAddress, int bytesToRead, int registerAddress) throws IOException { - return readBulk(deviceAddress, registerAddress, bytesToRead); - } - - public int readByte(int deviceAddress, int registerAddress) throws IOException { - return read(deviceAddress, 1, registerAddress).get(0); - } - - public int readInt(int deviceAddress, int registerAddress) throws IOException { - ArrayList data = read(deviceAddress, 2, registerAddress); - return data.get(0) << 8 | data.get(1); - } - - public long readLong(int deviceAddress, int registerAddress) throws IOException { - ArrayList data = read(deviceAddress, 4, registerAddress); - return data.get(0) << 24 | data.get(1) << 16 | data.get(2) << 8 | data.get(3); - } - - public void writeBulk(int deviceAddress, int[] data) throws IOException { - packetHandler.sendByte(commandsProto.I2C_HEADER); - packetHandler.sendByte(commandsProto.I2C_WRITE_BULK); - packetHandler.sendByte(deviceAddress); - packetHandler.sendByte(data.length); - for (int aData : data) { - packetHandler.sendByte(aData); - } - packetHandler.getAcknowledgement(); - } - - public void write(int deviceAddress, int[] data, int registerAddress) throws IOException { - int[] finalData = new int[data.length + 1]; - finalData[0] = registerAddress; - System.arraycopy(data, 0, finalData, 1, data.length); - writeBulk(deviceAddress, finalData); - } - - public void writeByte(int deviceAddress, int registerAddress, int data) throws IOException { - write(deviceAddress, new int[]{data}, registerAddress); - } - - public void writeInt(int deviceAddress, int registerAddress, int data) throws IOException { - write(deviceAddress, new int[]{data & 0xff, (data >> 8) & 0xff}, registerAddress); - } - - public void writeLong(int deviceAddress, int registerAddress, long data) throws IOException { - write(deviceAddress, new int[]{(int) (data & 0xff), (int) ((data >> 8) & 0xff), (int) ((data >> 16) & 0xff), (int) ((data >> 24) & 0xff)}, registerAddress); - } - - public ArrayList scan(Integer frequency) throws IOException { - Integer freq = frequency; - if (frequency == null) freq = 125000; - config(freq); - ArrayList addresses = new ArrayList<>(); - for (int i = 0; i < 128; i++) { - int x = start(i, 0); - if ((x & 1) == 0) { - addresses.add(i); - } - stop(); - } - return addresses; - } - - public void sendBurst(int data) throws IOException { - packetHandler.sendByte(commandsProto.I2C_HEADER); - packetHandler.sendByte(commandsProto.I2C_SEND); - packetHandler.sendByte(data); - } - - public ArrayList retreiveBuffer() throws IOException { - int totalIntSamples = totalBytes / 2; - Log.v(TAG, "Fetching samples : " + totalIntSamples + ", split : " + commandsProto.DATA_SPLITTING); - ArrayList listData = new ArrayList<>(); - for (int i = 0; i < (totalIntSamples / commandsProto.DATA_SPLITTING); i++) { - packetHandler.sendByte(commandsProto.ADC); - packetHandler.sendByte(commandsProto.GET_CAPTURE_CHANNEL); - packetHandler.sendByte(0); - packetHandler.sendInt(commandsProto.DATA_SPLITTING); - packetHandler.sendInt(i * commandsProto.DATA_SPLITTING); - int remaining = commandsProto.DATA_SPLITTING * 2 + 1; - // reading in single go, change if create communication problem - byte[] data = new byte[remaining]; - packetHandler.read(data, remaining); - for (int j = 0; j < data.length - 1; j++) - listData.add(data[j]); - } - - if ((totalIntSamples % commandsProto.DATA_SPLITTING) != 0) { - packetHandler.sendByte(commandsProto.ADC); - packetHandler.sendByte(commandsProto.GET_CAPTURE_CHANNEL); - packetHandler.sendByte(0); - packetHandler.sendInt(totalIntSamples % commandsProto.DATA_SPLITTING); - packetHandler.sendInt(totalIntSamples - totalIntSamples % commandsProto.DATA_SPLITTING); - int remaining = 2 * (totalIntSamples % commandsProto.DATA_SPLITTING) + 1; - byte[] data = new byte[remaining]; - packetHandler.read(data, remaining); - for (int j = 0; j < data.length - 1; j++) - listData.add(data[j]); - } - - Log.v(TAG, "Final Pass : length = " + listData.size()); - return listData; - } - - public Map dataProcessor(ArrayList data, Boolean inInt) { - if (inInt) { - for (int i = 0; i < (this.channels * this.samples) / 2; i++) - this.buffer[i] = (data.get(i * 2) << 8) | (data.get(i * 2 + 1)); - } else { - for (int i = 0; i < (this.channels * this.samples); i++) - this.buffer[i] = data.get(i); - } - Map retData = new LinkedHashMap<>(); - ArrayList timeBase = new ArrayList<>(); - double factor = timeGap * (this.samples - 1) / this.samples; - for (double i = 0; i < timeGap * (this.samples - 1); i += factor) timeBase.add(i); - retData.put("time", timeBase); - for (int i = 0; i < this.channels / 2; i++) { - ArrayList yValues = new ArrayList<>(); - for (int j = i; j < this.samples * this.channels / 2; j += this.channels / 2) { - yValues.add(buffer[j]); - } - retData.put("CH" + String.valueOf(i + 1), yValues); - } - return retData; - } -} diff --git a/app/src/main/java/io/pslab/communication/peripherals/MCP4728.java b/app/src/main/java/io/pslab/communication/peripherals/MCP4728.java deleted file mode 100644 index 20841c4cb..000000000 --- a/app/src/main/java/io/pslab/communication/peripherals/MCP4728.java +++ /dev/null @@ -1,81 +0,0 @@ -package io.pslab.communication.peripherals; - -import io.pslab.communication.PacketHandler; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -/** - * Created by viveksb007 on 28/3/17. - */ - -public class MCP4728 { - - int defaultVDD = 3300; - int RESET = 6; - int WAKEUP = 9; - int UPDATE = 8; - int WRITEALL = 64; - int WRITEONE = 88; - int SEQWRITE = 80; - int VREFWRITE = 128; - int GAINWRITE = 192; - int POWERDOWNWRITE = 160; - int GENERALCALL = 0; - private PacketHandler packetHandler; - private double vref; - private int devid; - private I2C i2c; - private List switchedOff; - private List vRefs; - private Map channelMap = new LinkedHashMap<>(); - private int addr; - - public MCP4728(PacketHandler packetHandler, I2C i2c) { - this.packetHandler = packetHandler; - this.vref = 3.3; - this.devid = 0; - switchedOff = new ArrayList<>(Arrays.asList(0, 0, 0, 0)); - vRefs = new ArrayList<>(Arrays.asList(0, 0, 0, 0)); - this.i2c = i2c; - addr = 0x60 | devid; - channelMap.put(0, "PCS"); - channelMap.put(1, "PV3"); - channelMap.put(2, "PV2"); - channelMap.put(3, "PV1"); - - } - - public void writeAll(int v1, int v2, int v3, int v4) { - try { - i2c.start(addr, 0); - i2c.send((v1 >> 8) & 0xF); - i2c.send(v1 & 0xFF); - i2c.send((v2 >> 8) & 0xF); - i2c.send(v2 & 0xFF); - i2c.send((v3 >> 8) & 0xF); - i2c.send(v3 & 0xFF); - i2c.send((v4 >> 8) & 0xF); - i2c.send(v4 & 0xFF); - i2c.stop(); - } catch (IOException e) { - e.printStackTrace(); - } - } - - public void stat() { - try { - i2c.start(addr, 0); - i2c.send(0x0); - i2c.restart(addr, 1); - i2c.read(24); - i2c.stop(); - } catch (IOException e) { - e.printStackTrace(); - } - } -} diff --git a/app/src/main/java/io/pslab/communication/peripherals/NRF24L01.java b/app/src/main/java/io/pslab/communication/peripherals/NRF24L01.java deleted file mode 100644 index 3fc4e4b1a..000000000 --- a/app/src/main/java/io/pslab/communication/peripherals/NRF24L01.java +++ /dev/null @@ -1,530 +0,0 @@ -package io.pslab.communication.peripherals; - -import android.util.Log; - -import io.pslab.communication.CommandsProto; -import io.pslab.communication.PacketHandler; -import io.pslab.communication.SensorList; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.LinkedHashMap; -import java.util.Map; - -/** - * Created by viveksb007 on 28/3/17. - */ - -public class NRF24L01 { - - private static final String TAG = "NRF24L01"; - private int R_REG = 0x00; - private int W_REG = 0x20; - private int RX_PAYLOAD = 0x61; - private int TX_PAYLOAD = 0xA0; - private int ACK_PAYLOAD = 0xA8; - private int FLUSH_TX = 0xE1; - private int FLUSH_RX = 0xE2; - private int ACTIVATE = 0x50; - private int R_STATUS = 0xFF; - - private int NRF_CONFIG = 0x00; - private int EN_AA = 0x01; - private int EN_RXADDR = 0x02; - private int SETUP_AW = 0x03; - private int SETUP_RETR = 0x04; - private int RF_CH = 0x05; - private int RF_SETUP = 0x06; - private int NRF_STATUS = 0x07; - private int OBSERVE_TX = 0x08; - private int CD = 0x09; - private int RX_ADDR_P0 = 0x0A; - private int RX_ADDR_P1 = 0x0B; - private int RX_ADDR_P2 = 0x0C; - private int RX_ADDR_P3 = 0x0D; - private int RX_ADDR_P4 = 0x0E; - private int RX_ADDR_P5 = 0x0F; - private int TX_ADDR = 0x10; - private int RX_PW_P0 = 0x11; - private int RX_PW_P1 = 0x12; - private int RX_PW_P2 = 0x13; - private int RX_PW_P3 = 0x14; - private int RX_PW_P4 = 0x15; - private int RX_PW_P5 = 0x16; - private int R_RX_PL_WID = 0x60; - private int FIFO_STATUS = 0x17; - private int DYNPD = 0x1C; - private int FEATURE = 0x1D; - private int PAYLOAD_SIZE = 0; - private int ACK_PAYLOAD_SIZE = 0; - private int READ_PAYLOAD_SIZE = 0; - - private int ADC_COMMANDS = 1; - private int READ_ADC = 0 << 4; - - private int I2C_COMMANDS = 2; - private int I2C_TRANSACTION = 0 << 4; - private int I2C_WRITE = 1 << 4; - private int I2C_SCAN = 2 << 4; - private int PULL_SCL_LOW = 3 << 4; - private int I2C_CONFIG = 4 << 4; - private int I2C_READ = 5 << 4; - - private int NRF_COMMANDS = 3; - private int NRF_READ_REGISTER = 0; - private int NRF_WRITE_REGISTER = 1 << 4; - - public int CURRENT_ADDRESS = 0xAAAA01; - private int nodePos = 0, status = 0; - private int NODELIST_MAXLENGTH = 15; - public boolean connected = false, ready = false; - - private Map sigs = new LinkedHashMap<>(); - private PacketHandler packetHandler; - private CommandsProto commandsProto; - private Map> nodeList = new LinkedHashMap<>(); - - public NRF24L01(PacketHandler packetHandler) { - this.packetHandler = packetHandler; - this.commandsProto = new CommandsProto(); - sigs.put(CURRENT_ADDRESS, 1); - if (packetHandler.isConnected()) { - connected = init(); - } - } - - private boolean init() { - try { - packetHandler.sendByte(commandsProto.NRFL01); - packetHandler.sendByte(commandsProto.NRF_SETUP); - packetHandler.getAcknowledgement(); - // add code for sleep for 15mSec - status = getStatus(); - if ((status & 0x80) != 0) { - Log.e(TAG, "Radio transceiver not installed/not found"); - return false; - } else { - ready = true; - } - selectAddress(CURRENT_ADDRESS); - - } catch (IOException e) { - e.printStackTrace(); - } - return false; - } - - public void selectAddress(int address) { - try { - packetHandler.sendByte(commandsProto.NRFL01); - packetHandler.sendByte(commandsProto.NRF_WRITEADDRESS); - packetHandler.sendByte(address & 0xff); - packetHandler.sendByte((address >> 8) & 0xff); - packetHandler.sendByte((address >> 16) & 0xff); - packetHandler.getAcknowledgement(); - this.CURRENT_ADDRESS = address; - if (!sigs.containsKey(address)) { - sigs.put(address, 1); - } - } catch (IOException e) { - e.printStackTrace(); - } - } - - public void writeAddress(int register, int address) { - try { - packetHandler.sendByte(commandsProto.NRFL01); - packetHandler.sendByte(commandsProto.NRF_WRITEADDRESSES); - packetHandler.sendByte(register); - packetHandler.sendByte(address & 0xff); - packetHandler.sendByte((address >> 8) & 0xff); - packetHandler.sendByte((address >> 16) & 0xff); - packetHandler.getAcknowledgement(); - } catch (IOException e) { - e.printStackTrace(); - } - } - - public int getStatus() { - int val = -1; - try { - packetHandler.sendByte(commandsProto.NRFL01); - packetHandler.sendByte(commandsProto.NRF_GETSTATUS); - val = packetHandler.getByte(); - packetHandler.getAcknowledgement(); - return val; - } catch (IOException e) { - e.printStackTrace(); - } - return val; - } - - public void rxMode() throws IOException { - packetHandler.sendByte(commandsProto.NRFL01); - packetHandler.sendByte(commandsProto.NRF_RXMODE); - packetHandler.getAcknowledgement(); - } - - public void txMode() throws IOException { - packetHandler.sendByte(commandsProto.NRFL01); - packetHandler.sendByte(commandsProto.NRF_TXMODE); - packetHandler.getAcknowledgement(); - } - - public void powerDown() throws IOException { - packetHandler.sendByte(commandsProto.NRFL01); - packetHandler.sendByte(commandsProto.NRF_POWER_DOWN); - packetHandler.getAcknowledgement(); - } - - public char rxChar() throws IOException { - int val = -1; - packetHandler.sendByte(commandsProto.NRFL01); - packetHandler.sendByte(commandsProto.NRF_RXCHAR); - val = packetHandler.getByte(); - packetHandler.getAcknowledgement(); - return ((char) (val & 0xff)); - } - - public int txChar(char character) throws IOException { - packetHandler.sendByte(commandsProto.NRFL01); - packetHandler.sendByte(commandsProto.NRF_TXCHAR); - packetHandler.sendByte(character); - return packetHandler.getAcknowledgement() >> 4; - } - - public int hasData() throws IOException { - int val = -1; - packetHandler.sendByte(commandsProto.NRFL01); - packetHandler.sendByte(commandsProto.NRF_HASDATA); - val = packetHandler.getByte(); - packetHandler.getAcknowledgement(); - return val; - } - - public void flush() throws IOException { - packetHandler.sendByte(commandsProto.NRFL01); - packetHandler.sendByte(commandsProto.NRF_FLUSH); - packetHandler.getAcknowledgement(); - } - - public void writeRegister(int address, int value) throws IOException { - packetHandler.sendByte(commandsProto.NRFL01); - packetHandler.sendByte(commandsProto.NRF_WRITEREG); - packetHandler.sendByte(address); - packetHandler.sendByte(value); - packetHandler.getAcknowledgement(); - } - - public byte readRegister(int address) throws IOException { - byte val = -1; - packetHandler.sendByte(commandsProto.NRFL01); - packetHandler.sendByte(commandsProto.NRF_READREG); - packetHandler.sendByte(address); - val = packetHandler.getByte(); - packetHandler.getAcknowledgement(); - return val; - } - - public void writeCommand(int command) throws IOException { - packetHandler.sendByte(commandsProto.NRFL01); - packetHandler.sendByte(commandsProto.NRF_WRITECOMMAND); - packetHandler.sendByte(command); - packetHandler.getAcknowledgement(); - } - - public ArrayList readPayload(int numBytes) throws IOException { - packetHandler.sendByte(commandsProto.NRFL01); - packetHandler.sendByte(commandsProto.NRF_READPAYLOAD); - packetHandler.sendByte(numBytes); - byte[] data = new byte[numBytes]; - packetHandler.read(data, numBytes); - packetHandler.getAcknowledgement(); - ArrayList charData = new ArrayList<>(); - for (int i = 0; i < numBytes; i++) { - charData.add((char) data[i]); - } - return charData; - } - - public int writePayload(int[] data, boolean rxMode) throws IOException { - packetHandler.sendByte(commandsProto.NRFL01); - packetHandler.sendByte(commandsProto.NRF_WRITEPAYLOAD); - int numBytes = data.length | 0x80; - if (rxMode) numBytes |= 0x40; - packetHandler.sendByte(numBytes); - packetHandler.sendByte(TX_PAYLOAD); - for (int _data : data) { - packetHandler.sendByte(_data); - } - int val = packetHandler.getAcknowledgement() >> 4; - if ((val & 0x2) != 0) - Log.e(TAG, "NRF radio not found. Connect one to the add-on port"); - else if ((val & 0x1) != 0) - Log.e(TAG, "Node probably dead/out of range. It failed to acknowledge"); - return val; - } - - public void startTokenManager() throws IOException { - packetHandler.sendByte(commandsProto.NRFL01); - packetHandler.sendByte(commandsProto.NRF_START_TOKEN_MANAGER); - packetHandler.getAcknowledgement(); - } - - public void stopTokenManager() throws IOException { - packetHandler.sendByte(commandsProto.NRFL01); - packetHandler.sendByte(commandsProto.NRF_STOP_TOKEN_MANAGER); - packetHandler.getAcknowledgement(); - } - - public int totalTokens() throws IOException { - packetHandler.sendByte(commandsProto.NRFL01); - packetHandler.sendByte(commandsProto.NRF_TOTAL_TOKENS); - int val = packetHandler.getByte(); - packetHandler.getAcknowledgement(); - return val; - } - - public ArrayList fetchReport(int num) throws IOException { - packetHandler.sendByte(commandsProto.NRFL01); - packetHandler.sendByte(commandsProto.NRF_REPORTS); - packetHandler.sendByte(num); - ArrayList data = new ArrayList<>(); - for (int i = 0; i < 20; i++) { - data.add(packetHandler.getByte()); - } - packetHandler.getAcknowledgement(); - return data; - } - - public ArrayList decodeI2CList(int[] data) { - int sum = 0; - ArrayList addressList = new ArrayList<>(); - for (int _data : data) { - sum += _data; - } - if (sum == 0) return addressList; - for (int i = 0; i < data.length; i++) { - if ((data[i] ^ 255) != 0) { - for (int j = 0; j < 8; j++) { - if ((data[i] & (0x80 >> j)) == 0) { - addressList.add(8 * i + j); - } - } - } - } - return addressList; - } - - public Map> getNodeList() throws IOException { - int total = totalTokens(); - if (this.nodePos != total) { - for (int i = 0; i < this.NODELIST_MAXLENGTH; i++) { - ArrayList data = fetchReport(i); - int txrx = (data.get(0)) | (data.get(1) << 8) | (data.get(2) << 16); - if (txrx == 0) continue; - int[] tempData = new int[17]; - for (int j = 3; j < 20; j++) - tempData[j - 3] = data.get(j); - nodeList.put(txrx, decodeI2CList(tempData)); - this.nodePos = total; - } - } - Map> filteredList = new LinkedHashMap<>(); - for (Map.Entry> entry : nodeList.entrySet()) { - if (isAlive(entry.getKey()) != null) { - filteredList.put(entry.getKey(), entry.getValue()); - } - } - return filteredList; - } - - public ArrayList isAlive(int address) throws IOException { - selectAddress(address); - return transaction(new int[]{NRF_COMMANDS | NRF_READ_REGISTER, R_STATUS}, 0, 100); - } - - public ArrayList transaction(int[] data, int listen, int timeout) throws IOException { - packetHandler.sendByte(commandsProto.NRFL01); - packetHandler.sendByte(commandsProto.NRF_TRANSACTION); - packetHandler.sendByte(data.length); - packetHandler.sendInt(timeout); - for (int _data : data) { - packetHandler.sendByte(_data); - } - ArrayList characterData = new ArrayList<>(); - int numBytes = packetHandler.getByte(); - byte[] readData; - if (numBytes != -1) { - readData = new byte[numBytes]; - packetHandler.read(readData, numBytes); - } else { - readData = null; - } - int val = packetHandler.getAcknowledgement() >> 4; - if ((val & 0x1) != 0) Log.e(TAG, "Node not found " + CURRENT_ADDRESS); - if ((val & 0x2) != 0) Log.e(TAG, "NRF on-board transmitter not found " + CURRENT_ADDRESS); - if ((val & 0x4) != 0 & (listen == 1)) - Log.e(TAG, "Node received command but did not reply " + CURRENT_ADDRESS); - - if ((val & 0x7) != 0) { - flush(); - sigs.put(CURRENT_ADDRESS, sigs.get(CURRENT_ADDRESS) * 50 / 51); - return null; - } - sigs.put(CURRENT_ADDRESS, (sigs.get(CURRENT_ADDRESS) * 50 + 1) / 51); - if (readData == null) return characterData; - for (int i = 0; i < numBytes; i++) { - characterData.add((char) readData[i]); - } - return characterData; - } - - public ArrayList transactionWithRetries(int[] data, int retries) throws IOException { - if (retries == -1) retries = 5; - ArrayList reply = null; - while (retries > 0) { - reply = transaction(data, 0, 200); - if (reply != null) { - break; - } - retries--; - } - return reply; - } - - public void deleteRegisteredNode(int num) throws IOException { - packetHandler.sendByte(commandsProto.NRFL01); - packetHandler.sendByte(commandsProto.NRF_DELETE_REPORT_ROW); - packetHandler.sendByte(num); - packetHandler.getAcknowledgement(); - } - - public void deleteAllRegisteredNodes() throws IOException { - while (totalTokens() != 0) { - deleteRegisteredNode(0); - } - } - - public void initShockBurstTransmitter(int payloadSize, int myAddress, int sendAddress) throws IOException { - if (payloadSize != -1) PAYLOAD_SIZE = payloadSize; - if (myAddress != -1) myAddress = 0xAAAA01; - if (sendAddress != -1) sendAddress = 0xAAAA01; - - init(); - writeAddress(RX_ADDR_P0, myAddress); - writeAddress(TX_ADDR, sendAddress); - writeRegister(RX_PW_P0, PAYLOAD_SIZE); - rxMode(); - // Add code for sleep 0.1 sec - flush(); - } - - public void initShockBurstReceiver(int payloadSize, int[] myAddress) throws IOException { - if (payloadSize != -1) { - PAYLOAD_SIZE = payloadSize; - } - if (myAddress[0] != -1) { - myAddress[0] = 0xA523B5; - } - init(); - writeRegister(RF_SETUP, 0x26); - int enabledPipes = 0; - for (int i = 0; i < 6; i++) { - if (myAddress[i] != -1) { - enabledPipes |= (1 << i); - writeAddress(RX_ADDR_P0 + i, myAddress[i]); - } - } - if (myAddress[1] != -1) - writeAddress(RX_ADDR_P1, myAddress[1]); - - writeRegister(EN_RXADDR, enabledPipes); - writeRegister(EN_AA, enabledPipes); - writeRegister(DYNPD, enabledPipes); - writeRegister(FEATURE, 0x06); - - rxMode(); - // Add code for sleep 0.1 sec - flush(); - } - - public void triggerAll(int val) throws IOException { - txMode(); - selectAddress(0x111111); - writeRegister(EN_AA, 0x00); - writePayload(new int[]{val}, true); - writeRegister(EN_AA, 0x01); - } - - public int writeAckPayload(int[] data, int pipe) throws IOException { - if (data.length != ACK_PAYLOAD_SIZE) { - ACK_PAYLOAD_SIZE = data.length; - if (ACK_PAYLOAD_SIZE > 15) { - Log.v(TAG, "too large. Truncating"); - ACK_PAYLOAD_SIZE = 15; - data = Arrays.copyOf(data, 15); - } else { - Log.v(TAG, "Ack payload size " + ACK_PAYLOAD_SIZE); - } - } - packetHandler.sendByte(commandsProto.NRFL01); - packetHandler.sendByte(commandsProto.NRF_WRITEPAYLOAD); - packetHandler.sendByte(data.length); - packetHandler.sendByte(ACK_PAYLOAD | pipe); - for (int _data : data) { - packetHandler.sendByte(_data); - } - return packetHandler.getAcknowledgement() >> 4; - } - - public ArrayList i2CScan() throws IOException { - ArrayList addresses = new ArrayList<>(); - ArrayList temp = transaction(new int[]{I2C_COMMANDS | I2C_SCAN | 0x80}, 0, 500); - if (temp == null) return addresses; - int sum = 0; - for (int i = 0; i < temp.size(); i++) { - sum += (int) temp.get(i); - } - if (sum == 0) return addresses; - - for (int i = 0; i < 16; i++) { - if ((temp.get(i) ^ 255) != 0) { - for (int j = 0; j < 8; j++) { - if ((temp.get(i) & (0x80 >> j)) == 0) { - addresses.add(8 * i + j); - } - } - } - } - return addresses; - } - - public ArrayList guessingScan() throws IOException { - ArrayList addresses = new ArrayList<>(); - ArrayList temp = transaction(new int[]{I2C_COMMANDS | I2C_SCAN | 0x80}, 0, 500); - if (temp == null) return addresses; - int sum = 0; - for (int i = 0; i < temp.size(); i++) { - sum += (int) temp.get(i); - } - if (sum == 0) return addresses; - Log.v(TAG, "Address \t Possible Devices"); - SensorList sensorList = new SensorList(); - for (int i = 0; i < 16; i++) { - if ((temp.get(i) ^ 255) != 0) { - for (int j = 0; j < 8; j++) { - if ((temp.get(i) & (0x80 >> j)) == 0) { - int address = 8 * i + j; - addresses.add(address); - Log.v(TAG, Integer.toHexString(address) + "\t" + Arrays.toString(sensorList.sensorList.get(address))); - } - } - } - } - - return addresses; - } - -} \ No newline at end of file diff --git a/app/src/main/java/io/pslab/communication/peripherals/RadioLink.java b/app/src/main/java/io/pslab/communication/peripherals/RadioLink.java deleted file mode 100644 index 9a0d5be7d..000000000 --- a/app/src/main/java/io/pslab/communication/peripherals/RadioLink.java +++ /dev/null @@ -1,184 +0,0 @@ -package io.pslab.communication.peripherals; - -import android.util.Log; - -import io.pslab.communication.SensorList; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.Arrays; - -/** - * Created by viveksb007 on 28/3/17. - */ - -public class RadioLink { - - private static final String TAG = "RadioLink"; - private int ADC_COMMANDS = 1; - private int READ_ADC = 0 << 4; - - private int I2C_COMMANDS = 2; - private int I2C_TRANSACTION = 0 << 4; - private int I2C_WRITE = 1 << 4; - private int I2C_SCAN = 2 << 4; - private int PULL_SCL_LOW = 3 << 4; - private int I2C_CONFIG = 4 << 4; - private int I2C_READ = 5 << 4; - - private int NRF_COMMANDS = 3; - private int NRF_READ_REGISTER = 0 << 4; - private int NRF_WRITE_REGISTER = 1 << 4; - - private int MISC_COMMANDS = 4; - private int WS2812B_CMD = 0 << 4; - - private NRF24L01 nrf24L01; - private int ADDRESS = 0x010101; - private int timeout = 200; - - public RadioLink(NRF24L01 nrf24L01, int address) { - this.nrf24L01 = nrf24L01; - if (address != -1) ADDRESS = address; - - } - - private void selectMe() { - if (this.nrf24L01.CURRENT_ADDRESS != this.ADDRESS) { - this.nrf24L01.selectAddress(this.ADDRESS); - } - } - - public ArrayList writeI2C(int I2CAddress, int regAddress, int[] data) throws IOException { - selectMe(); - int[] newData = new int[3 + data.length]; - newData[0] = I2C_COMMANDS | I2C_WRITE; - newData[1] = I2CAddress; - newData[2] = regAddress; - System.arraycopy(data, 0, newData, 3, data.length); - return this.nrf24L01.transaction(newData, 0, timeout); - } - - public ArrayList readI2C(int I2CAddress, int regAddress, int numBytes) throws IOException { - selectMe(); - return this.nrf24L01.transaction(new int[]{I2C_COMMANDS | I2C_TRANSACTION, I2CAddress, regAddress, numBytes}, 0, timeout); - } - - public ArrayList writeBulk(int I2CAddress, int[] data) throws IOException { - selectMe(); - int[] newData = new int[2 + data.length]; - newData[0] = I2C_COMMANDS | I2C_WRITE; - newData[1] = I2CAddress; - System.arraycopy(data, 0, newData, 2, data.length); - return this.nrf24L01.transaction(newData, 0, timeout); - } - - public ArrayList readBulk(int I2CAddress, int regAddress, int numBytes) throws IOException { - selectMe(); - return this.nrf24L01.transactionWithRetries(new int[]{I2C_COMMANDS | I2C_TRANSACTION, I2CAddress, regAddress, numBytes}, -1); - } - - public ArrayList simpleRead(int I2CAddress, int numBytes) throws IOException { - selectMe(); - return this.nrf24L01.transactionWithRetries(new int[]{I2C_COMMANDS | I2C_READ, I2CAddress, numBytes}, -1); - } - - public ArrayList readADC(int channel) throws IOException { - selectMe(); - return this.nrf24L01.transaction(new int[]{ADC_COMMANDS | READ_ADC, channel}, 0, timeout); - } - - public ArrayList i2CScan() throws IOException { - selectMe(); - Log.v(TAG, "Scanning addresses 0-127..."); - ArrayList addresses = new ArrayList<>(); - ArrayList temp = this.nrf24L01.transaction(new int[]{I2C_COMMANDS | I2C_SCAN | 0x80}, 0, 500); - if (temp == null) return addresses; - int sum = 0; - for (int i = 0; i < temp.size(); i++) { - sum += (int) temp.get(i); - } - if (sum == 0) return addresses; - Log.v(TAG, "Address \t Possible Devices"); - SensorList sensorList = new SensorList(); - for (int i = 0; i < 16; i++) { - if ((temp.get(i) ^ 255) != 0) { - for (int j = 0; j < 8; j++) { - if ((temp.get(i) & (0x80 >> j)) == 0) { - int address = 8 * i + j; - addresses.add(address); - Log.v(TAG, Integer.toHexString(address) + "\t" + Arrays.toString(sensorList.sensorList.get(address))); - } - } - } - } - return addresses; - } - - private ArrayList decodeI2CList(int[] data) { - int sum = 0; - ArrayList addressList = new ArrayList<>(); - for (int _data : data) { - sum += _data; - } - if (sum == 0) return addressList; - for (int i = 0; i < data.length; i++) { - if ((data[i] ^ 255) != 0) { - for (int j = 0; j < 8; j++) { - if ((data[i] & (0x80 >> j)) == 0) { - addressList.add(8 * i + j); - } - } - } - } - return addressList; - } - - public ArrayList pullSCLLow(int t_ms) throws IOException { - selectMe(); - ArrayList data; - data = this.nrf24L01.transaction(new int[]{I2C_COMMANDS | PULL_SCL_LOW, t_ms}, 0, timeout); - if (data != null) { - int[] tempData = new int[data.size()]; - for (int i = 0; i < data.size(); i++) { - tempData[i] = data.get(i); - } - return decodeI2CList(tempData); - } else { - return new ArrayList<>(); - } - } - - public ArrayList configI2C(int frequency) throws IOException { - selectMe(); - int brgVal = (int) 32e6 / frequency / 4 - 1; - return this.nrf24L01.transaction(new int[]{I2C_COMMANDS | I2C_CONFIG, brgVal}, 0, timeout); - } - - public ArrayList writeRegister(int register, int value) throws IOException { - selectMe(); - return this.nrf24L01.transaction(new int[]{NRF_COMMANDS | NRF_WRITE_REGISTER, register, value}, 0, timeout); - } - - public int readRegister(int register) throws IOException { - selectMe(); - ArrayList data = this.nrf24L01.transaction(new int[]{NRF_COMMANDS | NRF_READ_REGISTER, register}, 0, timeout); - if (data != null) { - return (int) data.get(0); - } else - return -1; - } - - public ArrayList WS2812B(int[][] cols) throws IOException { - selectMe(); - int[] colorArray = new int[1 + cols.length * 3]; - colorArray[0] = MISC_COMMANDS | WS2812B_CMD; - for (int i = 1, j = 1; i < cols.length; i++, j += 3) { - colorArray[j] = cols[i][1]; - colorArray[j + 1] = cols[i][0]; - colorArray[j + 2] = cols[i][2]; - } - return this.nrf24L01.transaction(colorArray, 0, timeout); - } - -} diff --git a/app/src/main/java/io/pslab/communication/peripherals/SPI.java b/app/src/main/java/io/pslab/communication/peripherals/SPI.java deleted file mode 100644 index e4836188d..000000000 --- a/app/src/main/java/io/pslab/communication/peripherals/SPI.java +++ /dev/null @@ -1,107 +0,0 @@ -package io.pslab.communication.peripherals; - -import android.util.Log; - -import io.pslab.communication.CommandsProto; -import io.pslab.communication.PacketHandler; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.Arrays; - -/** - * Created by viveksb007 on 28/3/17. - */ - -public class SPI { - - private static final String TAG = "SPI"; - private PacketHandler packetHandler; - private CommandsProto commandsProto; - private int CKE = 1, CKP = 0, SMP = 1; - - public SPI(PacketHandler packetHandler) { - this.packetHandler = packetHandler; - this.commandsProto = new CommandsProto(); - } - - public void setParameters(int primaryPreScalar, int secondaryPreScalar, Integer CKE, Integer CKP, Integer SMP) throws IOException { - if (CKE != null) this.CKE = CKE; - if (CKP != null) this.CKP = CKP; - if (SMP != null) this.SMP = SMP; - - packetHandler.sendByte(commandsProto.SPI_HEADER); - packetHandler.sendByte(commandsProto.SET_SPI_PARAMETERS); - packetHandler.sendByte(secondaryPreScalar | (primaryPreScalar << 3) | (this.CKE << 5) | (this.CKP << 6) | (this.SMP << 7)); - packetHandler.getAcknowledgement(); - } - - public void start(int channel) throws IOException { - packetHandler.sendByte(commandsProto.SPI_HEADER); - packetHandler.sendByte(commandsProto.START_SPI); - packetHandler.sendByte(channel); - } - - public void setCS(String channel, int state) throws IOException { - String[] chipSelect = new String[]{"CS1", "CS2"}; - channel = channel.toUpperCase(); - if (Arrays.asList(chipSelect).contains(channel)) { - int csNum = Arrays.asList(chipSelect).indexOf(channel) + 9; - packetHandler.sendByte(commandsProto.SPI_HEADER); - if (state == 1) - packetHandler.sendByte(commandsProto.STOP_SPI); - else - packetHandler.sendByte(commandsProto.START_SPI); - packetHandler.sendByte(csNum); - } else { - Log.d(TAG, "Channel does not exist"); - } - } - - public void stop(int channel) throws IOException { - packetHandler.sendByte(commandsProto.SPI_HEADER); - packetHandler.sendByte(commandsProto.STOP_SPI); - packetHandler.sendByte(channel); - } - - public byte send8(int value) throws IOException { - packetHandler.sendByte(commandsProto.SPI_HEADER); - packetHandler.sendByte(commandsProto.SEND_SPI8); - packetHandler.sendByte(value); - byte retValue = packetHandler.getByte(); - packetHandler.getAcknowledgement(); - return retValue; - } - - public int send16(int value) throws IOException { - packetHandler.sendByte(commandsProto.SPI_HEADER); - packetHandler.sendByte(commandsProto.SEND_SPI16); - packetHandler.sendInt(value); - int retValue = packetHandler.getInt(); - packetHandler.getAcknowledgement(); - return retValue; - } - - public void send8Burst(int value) throws IOException { - packetHandler.sendByte(commandsProto.SPI_HEADER); - packetHandler.sendByte(commandsProto.SEND_SPI8_BURST); - packetHandler.sendByte(value); - } - - public void send16Burst(int value) throws IOException { - packetHandler.sendByte(commandsProto.SPI_HEADER); - packetHandler.sendByte(commandsProto.SEND_SPI16_BURST); - packetHandler.sendInt(value); - } - - public ArrayList xfer(int channel, ArrayList data) throws IOException { - start(channel); - ArrayList reply = new ArrayList<>(); - for (Byte a : data) { - reply.add(send8(a)); - } - stop(channel); - return reply; - } - -} diff --git a/app/src/main/java/io/pslab/communication/sensors/AD7718.java b/app/src/main/java/io/pslab/communication/sensors/AD7718.java deleted file mode 100644 index 58964b49e..000000000 --- a/app/src/main/java/io/pslab/communication/sensors/AD7718.java +++ /dev/null @@ -1,322 +0,0 @@ -package io.pslab.communication.sensors; - -import android.util.Log; - -import org.apache.commons.lang3.ArrayUtils; -import org.apache.commons.math3.analysis.polynomials.PolynomialFunction; -import io.pslab.communication.peripherals.SPI; - -import java.io.IOException; -import java.util.Arrays; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; - -/** - * Created by Padmal on 5/3/17. - */ - -public class AD7718 { - - private double VREF = 3.3; - - private int STATUS = 0; - private int MODE = 1; - private int ADCCON = 2; - private int FILTER = 3; - private int ADCDATA = 4; - private int ADCOFFSET = 5; - private int ADCGAIN = 6; - private int IOCON = 7; - private int TEST1 = 12; - private int TEST2 = 13; - private int ID = 15; - - // Bit definitions - private int MODE_PD = 0; - private int MODE_IDLE = 1; - private int MODE_SINGLE = 2; - private int MODE_CONT = 3; - private int MODE_INT_ZEROCAL = 4; - private int MODE_INT_FULLCAL = 5; - private int MODE_SYST_ZEROCAL = 6; - private int MODE_SYST_FULLCAL = 7; - - private int MODE_OSCPD = bitShift(1, 3); - private int MODE_CHCON = bitShift(1, 4); - private int MODE_REFSEL = bitShift(1, 5); - private int MODE_NEGBUF = bitShift(1, 6); - private int MODE_NOCHOP = bitShift(1, 7); - - private int CON_AIN1AINCOM = bitShift(0, 4); - private int CON_AIN2AINCOM = bitShift(1, 4); - private int CON_AIN3AINCOM = bitShift(2, 4); - private int CON_AIN4AINCOM = bitShift(3, 4); - private int CON_AIN5AINCOM = bitShift(4, 4); - private int CON_AIN6AINCOM = bitShift(5, 4); - private int CON_AIN7AINCOM = bitShift(6, 4); - private int CON_AIN8AINCOM = bitShift(7, 4); - private int CON_AIN1AIN2 = bitShift(8, 4); - private int CON_AIN3AIN4 = bitShift(9, 4); - private int CON_AIN5AIN6 = bitShift(10, 4); - private int CON_AIN7AIN8 = bitShift(11, 4); - private int CON_AIN2AIN2 = bitShift(12, 4); - private int CON_AINCOMAINCOM = bitShift(13, 4); - private int CON_REFINREFIN = bitShift(14, 4); - private int CON_OPEN = bitShift(15, 4); - private int CON_UNIPOLAR = bitShift(1, 3); - - private int CON_RANGE0 = 0; // +-20mV - private int CON_RANGE1 = 1; // +-40mV - private int CON_RANGE2 = 2; // +-80mV - private int CON_RANGE3 = 3; // +-160mV - private int CON_RANGE4 = 4; // +-320mV - private int CON_RANGE5 = 5; // +-640mV - private int CON_RANGE6 = 6; // +-1280mV - private int CON_RANGE7 = 7; // +-2560mV - private int gain = 1; - - private String[] CHAN_NAMES = { - "AIN1AINCOM", - "AIN2AINCOM", - "AIN3AINCOM", - "AIN4AINCOM", - "AIN5AINCOM", - "AIN6AINCOM", - "AIN7AINCOM", - "AIN8AINCOM" - }; - - private SPI spi; - private boolean caldone; - private String cs; - - private final String TAG = "AD7718"; - - private HashMap calibs = new HashMap<>(); - private HashMap caldata = new HashMap<>(); - - - public AD7718(SPI spi) throws IOException { - this.spi = spi; - this.cs = "CS1"; - // Populate Calibrations - populateCalibrationMap(); - // Set SPI Parameters - spi.setParameters(2, 1, 0, 1, 1); - writeRegister(FILTER, 20); - writeRegister(MODE, MODE_SINGLE | MODE_CHCON | MODE_REFSEL); - - for (String key : calibs.keySet()) { - double[] convertedList = new PolynomialFunction(calibs.get(key)).getCoefficients(); - ArrayUtils.reverse(convertedList); - caldata.put(key, convertedList); - } - } - - public void setCalibrationMap(HashMap calibrationMap) { - this.calibs = calibrationMap; - } - - /** - * Initiates calibration HashMap with default values - */ - private void populateCalibrationMap() { - calibs.put("AIN1AINCOM", new double[]{ - 8.220199e-05, -4.587100e-04, 1.001015e+00, -1.684517e-04}); - calibs.put("AIN2AINCOM", new double[]{ - 5.459186e-06, -1.749624e-05, 1.000268e+00, 1.907896e-04}); - calibs.put("AIN3AINCOM", new double[]{ - -3.455831e-06, 2.861689e-05, 1.000195e+00, 3.802349e-04}); - calibs.put("AIN4AINCOM", new double[]{ - 4.135213e-06, -1.973478e-05, 1.000277e+00, 2.115374e-04}); - calibs.put("AIN5AINCOM", new double[]{ - -1.250787e-07, -9.203838e-07, 1.000299e+00, -1.262684e-03}); - calibs.put("AIN6AINCOM", new double[]{ - 6.993123e-07, -1.563294e-06, 9.994211e-01, -4.596018e-03}); - calibs.put("AIN7AINCOM", new double[]{ - 3.911521e-07, -1.706405e-06, 1.002294e+00, -1.286302e-02}); - calibs.put("AIN8AINCOM", new double[]{ - 8.290843e-07, -7.129532e-07, 9.993159e-01, 3.307947e-03}); - calibs.put("AIN9AINCOM", new double[]{ - 7.652808e+00, 1.479229e+00, 2.832601e-01, 4.495232e-02}); - } - - public void start() throws IOException { - spi.setCS(cs, 0); - } - - public void stop() throws IOException { - spi.setCS(cs, 1); - } - - public int send8(int val) throws IOException { - return spi.send8(val); - } - - private int send16(int val) throws IOException { - return spi.send16(val); - } - - private int readRegister(int reg) throws IOException { - start(); - int val = send16(0x4000 | (reg << 8)); - stop(); - val &= 0x00FF; - return val; - } - - private int readData() throws IOException { - start(); - int val = send16(0x4000 | (ADCDATA << 8)); - val &= 0xFF; - val <<= 16; - val |= send16(0x0000); - stop(); - return val; - } - - private int writeRegister(int reg, int value) throws IOException { - start(); - int val = send16((reg << 8) | value); - stop(); - return val; - } - - public void internalCalibration(int chan) throws IOException, InterruptedException { - start(); - int val = send16((ADCCON << 8) | (chan << 4) | 7); // range=7 - long start_time = System.currentTimeMillis(); - caldone = false; - val = send16((MODE << 8) | 4); - while (!caldone) { - Thread.sleep(500); - caldone = (send16(0x4000 | (MODE << 8)) & 7) == 1; - Log.d(TAG, String.format("Waiting for zero scale calibration... %.2f S, %s", - (float) (System.currentTimeMillis() - start_time), - caldone) - ); - } - caldone = false; - val = send16((MODE << 8) | 5); - while (!caldone) { - Thread.sleep(500); - caldone = (send16(0x4000 | (MODE << 8)) & 7) == 1; - Log.d(TAG, String.format("Waiting for full scale calibration... %.2f S, %s", - (float) (System.currentTimeMillis() - start_time), - caldone) - ); - } - stop(); - } - - public List readCalibration() throws IOException { - start(); - int off = send16(0x4000 | (ADCOFFSET << 8)); - off &= 0xFF; - off <<= 16; - off |= send16(0x0000); - - int gn = send16(0x4000 | (ADCGAIN << 8)); - gn &= 0xFF; - gn <<= 16; - gn |= send16(0x0000); - stop(); - return Arrays.asList(new int[]{off, gn}); - } - - - private void configADC(int adccon) throws IOException { - writeRegister(ADCCON, adccon); // unipolar channels, range - gain = 2 ^ (7 - adccon & 3); - } - - public void printstat() throws IOException { - int stat = readRegister(STATUS); - String[] P = {"PLL LOCKED", "RES", "RES", "ADC ERROR", "RES", "CAL DONE", "RES", "READY"}; - String[] N = {"PLL ERROR", "RES", "RES", "ADC OKAY", "RES", "CAL LOW", "RES", "NOT READY"}; - StringBuilder sb = new StringBuilder(); - for (int a = 0; a < 8; a++) { - if ((stat & (1 << a)) == 1) { - sb.append(P[a]); - } else { - sb.append(N[a]); - } - } - Log.d(TAG, stat + ", " + sb.toString()); - } - - private float convertUniPolar(float x) { - return (float) (1.024 * VREF * x) / (gain * 2 ^ 24); - } - - public float convertBipolar(float x) { - return (float) (((x / (2 ^ 24)) - 1) * (1.024 * VREF) / (gain)); - } - - private boolean startRead(String chan) throws IOException { - List channels = Arrays.asList(CHAN_NAMES); - if (channels.contains(chan)) { - int channelID = channels.indexOf(chan); - configADC(CON_RANGE7 | CON_UNIPOLAR | channelID << 4); - writeRegister(MODE, MODE_SINGLE | MODE_CHCON | MODE_REFSEL); - return true; - } else { - Log.d(TAG, "Invalid Channel Name. try AIN1AINCOM"); - return false; - } - } - - private boolean fetchData(String chan) throws IOException, InterruptedException { - - while (true) { - int stat = readRegister(STATUS); - if ((stat & 0x80) == 1) { - float data = readData(); - data = convertUniPolar(data); - List channelList = Collections.singletonList(chan); - if ((int) channelList.get(3) > 4) { - data = (data - 3.3f / 2) * 4; - } - PolynomialFunction function = new PolynomialFunction(caldata.get(chan)); - return function.value(data) == 0; - } else { - Thread.sleep(100); - Log.d(TAG, "Increase Delay"); - } - } - } - - public boolean readVoltage(String channel) throws IOException, InterruptedException { - if (startRead(channel)) { - return false; - } - Thread.sleep(150); - return fetchData(channel); - } - - private boolean fetchRawData(String chan) throws IOException, InterruptedException { - while (true) { - int stat = readRegister(STATUS); - if ((stat & 0x80) == 1) { - float data = readData(); - return convertUniPolar(data) == 1; - } else { - Thread.sleep(100); - Log.d(TAG, "Increase Delay"); - } - } - } - - public boolean readRawVoltage(String channel) throws IOException, InterruptedException { - if (startRead(channel)) { - return false; - } - Thread.sleep(150); - return fetchRawData(channel); - } - - private int bitShift(int y, int x) { - return y << x; - } -} \ No newline at end of file diff --git a/app/src/main/java/io/pslab/communication/sensors/AD9833.java b/app/src/main/java/io/pslab/communication/sensors/AD9833.java deleted file mode 100644 index e1c868774..000000000 --- a/app/src/main/java/io/pslab/communication/sensors/AD9833.java +++ /dev/null @@ -1,108 +0,0 @@ -package io.pslab.communication.sensors; - - -import android.util.Log; - -import io.pslab.communication.peripherals.SPI; - -import java.io.IOException; - - -/** - * Created by akarshan on 4/23/17. - *

- * ScienceLab instance of SPI and DDS_CLOCK are required to be passed to the AD9833 constructor. - * mapReferenceClock(new ArrayList<>(Collections.singletonList("WAVEGEN")), 4) is needed to be called prior to creation of AD9833 object. - *

- */ - -public class AD9833 { - //control bytes - private static final String TAG = "AD9833"; - private int DDS_MAX_FREQ = 0xFFFFFFF - 1; - private int DDS_B28 = 13; - private int DDS_HLB = 12; - private int DDS_FSELECT = 11; - private int DDS_PSELECT = 10; - private int DDS_RESET = 8; - private int DDS_SLEEP1 = 7; - private int DDS_SLEEP12 = 6; - private int DDS_OPBITEN = 5; - private int DDS_DIV2 = 3; - private int DDS_MODE = 1; - - private int DDS_FSYNC = 9; - - private int[] DDS_SINE = {0}; - private int DDS_TRIANGLE = (1 << DDS_MODE); - private int DDS_SQUARE = (1 << DDS_OPBITEN); - private int DDS_RESERVED = (1 << DDS_OPBITEN) | (1 << DDS_MODE); - private int DDS_CLOCK; - private int clockScaler = 4; // 8MHz - private int waveformMode; - private int activeChannel; - private int frequency; - private int cs; - private SPI spi; - - public AD9833(SPI spi, int DDS_CLOCK) throws IOException { - cs = 9; - this.spi = spi; - this.spi.setParameters(2, 2, 1, 1, 0); - this.DDS_CLOCK = DDS_CLOCK; - waveformMode = DDS_TRIANGLE; - - Log.v(TAG, "clock set to: " + DDS_CLOCK); - write(1 << DDS_RESET); - write((1 << DDS_B28) | waveformMode); //finished loading data - activeChannel = 0; - frequency = 1000; - } - - private void write(int con) throws IOException { - spi.start(cs); - spi.send16(con); - spi.stop(cs); - } - - private void setFrequency(int frequency, int register, int phase) throws IOException { - int regSel; - activeChannel = register; - this.frequency = frequency; - - int frequencySetting = (Math.round(frequency * DDS_MAX_FREQ / DDS_CLOCK)); - int modeBits = (1 << DDS_B28) | waveformMode; - if (register > 0) { - modeBits |= (1 << DDS_FSELECT); - regSel = 0x8000; - } else - regSel = 0x4000; - - write((1 << DDS_RESET) | modeBits); //Ready to load DATA - write((regSel | (frequencySetting & 0x3FFF)) & 0xFFFF); //LSB - write((regSel | ((frequencySetting >> 14) & 0x3FFF)) & 0xFFFF); //MSB - write(0xc000 | phase); //Phase - write(modeBits); //finished loading data - } - - public void setVoltage(int voltage) throws IOException { - waveformMode = DDS_TRIANGLE; - setFrequency(0, 0, voltage); //0xfff*v/.6 - } - - public void selectFrequencyRegister(int register) throws IOException { - activeChannel = register; - int modeBits = waveformMode; - if (register != 0) - modeBits |= (1 << DDS_FSELECT); - write(modeBits); - } - - public void setWaveformMode(int mode) throws IOException { - waveformMode = mode; - int modeBits = mode; - if (activeChannel != 0) - modeBits |= (1 << DDS_FSELECT); - write(modeBits); - } -} diff --git a/app/src/main/java/io/pslab/communication/sensors/ADS1115.java b/app/src/main/java/io/pslab/communication/sensors/ADS1115.java deleted file mode 100644 index e89dc1cb0..000000000 --- a/app/src/main/java/io/pslab/communication/sensors/ADS1115.java +++ /dev/null @@ -1,236 +0,0 @@ -package io.pslab.communication.sensors; - -import io.pslab.communication.peripherals.I2C; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.concurrent.TimeUnit; - -public class ADS1115 { - private int ADDRESS = 0x48; - private I2C i2c; - - private int REG_POINTER_MASK = 0x3; - private int REG_POINTER_CONVERT = 0; - private int REG_POINTER_CONFIG = 1; - private int REG_POINTER_LOWTHRESH = 2; - private int REG_POINTER_HITHRESH = 3; - - private int REG_CONFIG_OS_MASK = 0x8000; - private int REG_CONFIG_OS_SINGLE = 0x8000; - private int REG_CONFIG_OS_BUSY = 0x0000; - private int REG_CONFIG_OS_NOTBUSY = 0x8000; - - private int REG_CONFIG_MUX_MASK = 0x7000; - private int REG_CONFIG_MUX_DIFF_0_1 = 0x0000; - private int REG_CONFIG_MUX_DIFF_0_3 = 0x1000; - private int REG_CONFIG_MUX_DIFF_1_3 = 0x2000; - private int REG_CONFIG_MUX_DIFF_2_3 = 0x3000; - private int REG_CONFIG_MUX_SINGLE_0 = 0x4000; - private int REG_CONFIG_MUX_SINGLE_1 = 0x5000; - private int REG_CONFIG_MUX_SINGLE_2 = 0x6000; - private int REG_CONFIG_MUX_SINGLE_3 = 0x7000; - - private int REG_CONFIG_PGA_MASK = 0x0E00; - private int REG_CONFIG_PGA_6_144V = 0 << 9; - private int REG_CONFIG_PGA_4_096V = 1 << 9; - private int REG_CONFIG_PGA_2_048V = 2 << 9; - private int REG_CONFIG_PGA_1_024V = 3 << 9; - private int REG_CONFIG_PGA_0_512V = 4 << 9; - private int REG_CONFIG_PGA_0_256V = 5 << 9; - - private int REG_CONFIG_MODE_MASK = 0x0100; - private int REG_CONFIG_MODE_CONTIN = 0 << 8; - private int REG_CONFIG_MODE_SINGLE = 1 << 8; - - private int REG_CONFIG_DR_MASK = 0x00E0; - private int REG_CONFIG_DR_8SPS = 0 << 5; - private int REG_CONFIG_DR_16SPS = 1 << 5; - private int REG_CONFIG_DR_32SPS = 2 << 5; - private int REG_CONFIG_DR_64SPS = 3 << 5; - private int REG_CONFIG_DR_128SPS = 4 << 5; - private int REG_CONFIG_DR_250SPS = 5 << 5; - private int REG_CONFIG_DR_475SPS = 6 << 5; - private int REG_CONFIG_DR_860SPS = 7 << 5; - - private int REG_CONFIG_CMODE_MASK = 0x0010; - private int REG_CONFIG_CMODE_TRAD = 0x0000; - private int REG_CONFIG_CMODE_WINDOW = 0x0010; - - private int REG_CONFIG_CPOL_MASK = 0x0008; - private int REG_CONFIG_CPOL_ACTVLOW = 0x0000; - private int REG_CONFIG_CPOL_ACTVHI = 0x0008; - - private int REG_CONFIG_CLAT_MASK = 0x0004; - private int REG_CONFIG_CLAT_NONLAT = 0x0000; - private int REG_CONFIG_CLAT_LATCH = 0x0004; - - private int REG_CONFIG_CQUE_MASK = 0x0003; - private int REG_CONFIG_CQUE_1CONV = 0x0000; - private int REG_CONFIG_CQUE_2CONV = 0x0001; - private int REG_CONFIG_CQUE_4CONV = 0x0002; - private int REG_CONFIG_CQUE_NONE = 0x0003; - - private HashMap gains = new HashMap(); - private HashMap gainScaling = new HashMap(); - private HashMap typeSelection = new HashMap(); - private HashMap sdrSelection = new HashMap(); - - private String channel; - private String gain; - private int rate; - - public int NUMPLOTS = 1; - public String[] PLOTNAMES = {"mV"}; - - public ADS1115(I2C i2c) throws IOException, InterruptedException { - this.i2c = i2c; - channel = "UNI_0"; - gain = "GAIN_ONE"; - rate = 128; - - setGain("GAIN_ONE"); - setChannel("UNI_0"); - setDataRate(128); - - int conversionDelay = 8; - String name = "ADS1115 16-bit ADC"; - - gains.put("GAIN_TWOTHIRDS", REG_CONFIG_PGA_6_144V); - gains.put("GAIN_ONE", REG_CONFIG_PGA_4_096V); - gains.put("GAIN_TWO", REG_CONFIG_PGA_2_048V); - gains.put("GAIN_FOUR", REG_CONFIG_PGA_1_024V); - gains.put("GAIN_EIGHT", REG_CONFIG_PGA_0_512V); - gains.put("GAIN_SIXTEEN", REG_CONFIG_PGA_0_256V); - - gainScaling.put("GAIN_TWOTHIRDS", 0.1875); - gainScaling.put("GAIN_ONE", 0.125); - gainScaling.put("GAIN_TWO", 0.0625); - gainScaling.put("GAIN_FOUR", 0.03125); - gainScaling.put("GAIN_EIGHT", 0.015625); - gainScaling.put("GAIN_SIXTEEN", 0.0078125); - - typeSelection.put("UNI_0", "0"); - typeSelection.put("UNI_1", "1"); - typeSelection.put("UNI_2", "2"); - typeSelection.put("UNI_3", "3"); - typeSelection.put("DIFF_01", "01"); - typeSelection.put("DIFF_23", "23"); - - sdrSelection.put(8, REG_CONFIG_DR_8SPS); - sdrSelection.put(16, REG_CONFIG_DR_16SPS); - sdrSelection.put(32, REG_CONFIG_DR_32SPS); - sdrSelection.put(64, REG_CONFIG_DR_64SPS); - sdrSelection.put(128, REG_CONFIG_DR_128SPS); - sdrSelection.put(250, REG_CONFIG_DR_250SPS); - sdrSelection.put(475, REG_CONFIG_DR_475SPS); - sdrSelection.put(860, REG_CONFIG_DR_860SPS); - - } - - public int readInt(int addr) throws IOException, InterruptedException { - ArrayList vals = i2c.readBulk(ADDRESS, addr, 2); - int v = (int) (1. * ((vals.get(0) << 8) | vals.get(1))); - return v; - } - - public void initTemperature() throws IOException, InterruptedException { - i2c.writeBulk(ADDRESS, new int[]{ADDRESS}); - TimeUnit.SECONDS.sleep((long) 0.005); - } - - private int readRegister(int register) throws IOException { - ArrayList vals = i2c.readBulk(ADDRESS, register, 2); - return (vals.get(0) << 8) | vals.get(1); - } - - private void writeRegister(int reg, int value) throws IOException { - i2c.writeBulk(ADDRESS, new int[]{ADDRESS, (value >> 8) & 0xFF, value & 0xFF}); - } - - public void setGain(String gain) { - /*options : 'GAIN_TWOTHIRDS','GAIN_ONE','GAIN_TWO','GAIN_FOUR','GAIN_EIGHT','GAIN_SIXTEEN'*/ - this.gain = gain; - } - - public void setChannel(String channel) { - /*options 'UNI_0','UNI_1','UNI_2','UNI_3','DIFF_01','DIFF_23'*/ - this.channel = channel; - } - - public void setDataRate(int rate) { - /*data rate options 8,16,32,64,128,250,475,860 SPS*/ - this.rate = rate; - } - - private double readADCSingleEnded(int chan) throws IOException, InterruptedException { - if (chan > 3) { - return -1; - } - //start with default values - int config = REG_CONFIG_CQUE_NONE //Disable the comparator (default val) - | REG_CONFIG_CLAT_NONLAT //Non-latching (default val) - | REG_CONFIG_CPOL_ACTVLOW //Alert/Rdy active low (default val) - | REG_CONFIG_CMODE_TRAD // Traditional comparator (default val) - | REG_CONFIG_MODE_SINGLE // Single-shot mode (default) - | sdrSelection.get(rate); //1600 samples per second (default) - - //Set PGA/voltage range - config = config | gains.get(gain); - - if (chan == 0) - config = config | REG_CONFIG_MUX_SINGLE_0; - else if (chan == 1) - config = config | REG_CONFIG_MUX_SINGLE_1; - else if (chan == 2) - config = config | REG_CONFIG_MUX_SINGLE_2; - else if (chan == 3) - config = config | REG_CONFIG_MUX_SINGLE_3; - - //Set 'start single-conversion' bit - config = config | REG_CONFIG_OS_SINGLE; - writeRegister(REG_POINTER_CONFIG, config); - TimeUnit.MILLISECONDS.sleep((long) ((1. / rate + 0.002) * 1000)); //convert to mS to S - return readRegister(REG_POINTER_CONVERT) * gainScaling.get(gain); - } - - private short readADCDifferential(String chan) throws IOException, InterruptedException { - //start with default values - int config = REG_CONFIG_CQUE_NONE //Disable the comparator (default val) - | REG_CONFIG_CLAT_NONLAT //Non-latching (default val) - | REG_CONFIG_CPOL_ACTVLOW //Alert/Rdy active low (default val) - | REG_CONFIG_CMODE_TRAD // Traditional comparator (default val) - | REG_CONFIG_MODE_SINGLE // Single-shot mode (default) - | sdrSelection.get(rate); //1600 samples per second (default) - - //Set PGA/voltage range - config = config | gains.get(gain); - - if (chan.equals("01")) - config = config | REG_CONFIG_MUX_DIFF_0_1; - else if (chan.equals("23")) - config = config | REG_CONFIG_MUX_DIFF_2_3; - - //Set 'start single-conversion' bit - config = config | REG_CONFIG_OS_SINGLE; - writeRegister(REG_POINTER_CONFIG, config); - TimeUnit.MILLISECONDS.sleep((long) ((1. / rate + 0.002) * 1000)); //convert to mS to S - - return (short) (readRegister(REG_POINTER_CONVERT) * gainScaling.get(gain)); - } - - public short getLastResults() throws IOException { - return (short) (readRegister(REG_POINTER_CONVERT) * gainScaling.get(gain)); - } - - public int getRaw() throws IOException, InterruptedException { - //return values in mV - String chan = typeSelection.get(channel); - if (channel.contains("UNI")) - return (int) readADCSingleEnded(Integer.parseInt(chan)); - else if (channel.contains("DIF")) - return readADCDifferential(chan); - return 0; - } -} diff --git a/app/src/main/java/io/pslab/communication/sensors/APDS9960.java b/app/src/main/java/io/pslab/communication/sensors/APDS9960.java deleted file mode 100644 index 867693d6b..000000000 --- a/app/src/main/java/io/pslab/communication/sensors/APDS9960.java +++ /dev/null @@ -1,255 +0,0 @@ -package io.pslab.communication.sensors; - -import java.io.IOException; -import java.util.ArrayList; - -import io.pslab.communication.ScienceLab; -import io.pslab.communication.peripherals.I2C; - -public class APDS9960 { - - // APDS9960 default address - private static final int APDS9960_I2C_ADDRESS = 0x39; - private final I2C i2c; - - private static final int APDS9960_ENABLE = 0x80; - private static final int APDS9960_ATIME = 0x81; - private static final int APDS9960_PILT = 0x89; - private static final int APDS9960_PERS = 0x8C; - private static final int APDS9960_CONTROL = 0x8F; - private static final int APDS9960_STATUS = 0x93; - private static final int APDS9960_CDATAL = 0x94; - private static final int APDS9960_PDATA = 0x9C; - private static final int APDS9960_GPENTH = 0xA0; - private static final int APDS9960_GEXTH = 0xA1; - private static final int APDS9960_GCONF1 = 0xA2; - private static final int APDS9960_GCONF2 = 0xA3; - private static final int APDS9960_GPULSE = 0xA6; - private static final int APDS9960_GCONF4 = 0xAB; - private static final int APDS9960_GFLVL = 0xAE; - private static final int APDS9960_GSTATUS = 0xAF; - private static final int APDS9960_AICLEAR = 0xE7; - private static final int APDS9960_GFIFO_U = 0xFC; - - private static final int BIT_MASK_ENABLE_EN = 0x01; - private static final int BIT_MASK_ENABLE_COLOR = 0x02; - private static final int BIT_MASK_ENABLE_PROX = 0x04; - private static final int BIT_MASK_ENABLE_GESTURE = 0x40; - private static final int BIT_MASK_STATUS_GINT = 0x04; - private static final int BIT_MASK_GSTATUS_GFOV = 0x02; - private static final int BIT_MASK_GCONF4_GFIFO_CLR = 0x04; - - private static final int BIT_POS_PERS_PPERS = 4; - private static final int BIT_MASK_PERS_PPERS = 0xF0; - - private static final int BIT_POS_CONTROL_AGAIN = 0; - private static final int BIT_MASK_CONTROL_AGAIN = 3; - - public APDS9960(I2C i2c, ScienceLab scienceLab) throws Exception { - this.i2c = i2c; - if (scienceLab.isConnected()) { - enableProximity(false); - enableGesture(false); - enableColor(false); - - setProximityInterruptThreshold(new int[]{0, 0, 0}); - i2c.write(APDS9960_I2C_ADDRESS, new int[]{0}, APDS9960_GPENTH); - i2c.write(APDS9960_I2C_ADDRESS, new int[]{0}, APDS9960_GEXTH); - i2c.write(APDS9960_I2C_ADDRESS, new int[]{0}, APDS9960_GCONF1); - i2c.write(APDS9960_I2C_ADDRESS, new int[]{0}, APDS9960_GCONF2); - i2c.write(APDS9960_I2C_ADDRESS, new int[]{0}, APDS9960_GCONF4); - i2c.write(APDS9960_I2C_ADDRESS, new int[]{0}, APDS9960_GPULSE); - i2c.write(APDS9960_I2C_ADDRESS, new int[]{255}, APDS9960_ATIME); - i2c.write(APDS9960_I2C_ADDRESS, new int[]{0}, APDS9960_CONTROL); - - clearInterrupt(); - - setBit(APDS9960_GCONF4, BIT_MASK_GCONF4_GFIFO_CLR, true); - - i2c.write(APDS9960_I2C_ADDRESS, new int[]{0}, APDS9960_ENABLE); - Thread.sleep(25); - - enable(true); - Thread.sleep(10); - - setProximityInterruptThreshold(new int[]{0, 5, 4}); - i2c.write(APDS9960_I2C_ADDRESS, new int[]{0x05}, APDS9960_GPENTH); - i2c.write(APDS9960_I2C_ADDRESS, new int[]{0x1E}, APDS9960_GEXTH); - i2c.write(APDS9960_I2C_ADDRESS, new int[]{0x82}, APDS9960_GCONF1); - i2c.write(APDS9960_I2C_ADDRESS, new int[]{0x41}, APDS9960_GCONF2); - i2c.write(APDS9960_I2C_ADDRESS, new int[]{0x85}, APDS9960_GPULSE); - setColorIntegrationTime(256); - setColorGain(1); - } - } - - private void enable(Boolean value) throws IOException { - setBit(APDS9960_ENABLE, BIT_MASK_ENABLE_EN, value); - } - - public void enableProximity(Boolean value) throws IOException { - setBit(APDS9960_ENABLE, BIT_MASK_ENABLE_PROX, value); - } - - public void enableGesture(Boolean value) throws IOException { - setBit(APDS9960_ENABLE, BIT_MASK_ENABLE_GESTURE, value); - } - - public void enableColor(Boolean value) throws IOException { - setBit(APDS9960_ENABLE, BIT_MASK_ENABLE_COLOR, value); - } - - private void setProximityInterruptThreshold(int[] settingArray) throws IOException { - if (settingArray.length != 0 && settingArray[0] >= 0 && settingArray[0] <= 255) { - i2c.write(APDS9960_I2C_ADDRESS, new int[]{settingArray[0]}, APDS9960_PILT); - } - if (settingArray.length > 1 && settingArray[0] >= 0 && settingArray[0] <= 255) { - i2c.write(APDS9960_I2C_ADDRESS, new int[]{settingArray[1]}, APDS9960_PILT); - } - int persist = 4; - if (settingArray.length > 2 && settingArray[0] >= 0 && settingArray[0] <= 15) { - persist = Math.min(settingArray[2], 15); - setBits(APDS9960_PERS, BIT_POS_PERS_PPERS, BIT_MASK_PERS_PPERS, persist); - } - } - - private void clearInterrupt() throws IOException { - i2c.write(APDS9960_I2C_ADDRESS, new int[]{}, APDS9960_AICLEAR); - } - - private void setColorIntegrationTime(int value) throws IOException { - i2c.write(APDS9960_I2C_ADDRESS, new int[]{256 - value}, APDS9960_ATIME); - } - - private void setColorGain(int value) throws IOException { - setBits(APDS9960_CONTROL, BIT_POS_CONTROL_AGAIN, BIT_MASK_CONTROL_AGAIN, value); - } - - public int getProximity() throws IOException { - ArrayList data = i2c.read(APDS9960_I2C_ADDRESS, 1, APDS9960_PDATA); - return data.get(0) & 0xFF; - } - - public int[] getColorData() throws IOException { - return new int[]{ - colorData16(APDS9960_CDATAL + 2), - colorData16(APDS9960_CDATAL + 4), - colorData16(APDS9960_CDATAL + 6), - colorData16(APDS9960_CDATAL) - }; - } - - public int getGesture() throws IOException, InterruptedException { - if (getBit(APDS9960_GSTATUS, BIT_MASK_GSTATUS_GFOV)) { - setBit(APDS9960_GCONF4, BIT_MASK_GCONF4_GFIFO_CLR, true); - int waitCycles = 0; - while (!getBit(APDS9960_STATUS, BIT_MASK_STATUS_GINT) && waitCycles <= 30) { - Thread.sleep(3); - waitCycles++; - } - } - ArrayList> frame = new ArrayList<>(); - int datasetsAvailable = i2c.read(APDS9960_I2C_ADDRESS, 1, APDS9960_GFLVL).get(0) & 0xFF; - - if (getBit(APDS9960_STATUS, BIT_MASK_STATUS_GINT) && datasetsAvailable > 0) { - while (true) { - int datasetCount = i2c.read(APDS9960_I2C_ADDRESS, 1, APDS9960_GFLVL).get(0) & 0xFF; - if (datasetCount == 0) break; - - ArrayList buffer = i2c.read(APDS9960_I2C_ADDRESS, Math.min(128, datasetCount * 4), APDS9960_GFIFO_U); - - for (int i = 0; i < datasetCount; i++) { - ArrayList bufferDataset = new ArrayList<>(4); - for (int j = 0; j < 4; j++) { - bufferDataset.add(buffer.get(i * 4 + j) & 0xFF); - } - - boolean fullySaturated = bufferDataset.stream().allMatch(val -> val == 255); - boolean fullyZero = bufferDataset.stream().allMatch(val -> val == 0); - boolean highCount = bufferDataset.stream().allMatch(val -> val >= 30); - - if (!fullySaturated && !fullyZero && highCount) { - if (frame.size() < 2) { - frame.add(bufferDataset); - } else { - frame.set(1, bufferDataset); - } - } - } - Thread.sleep(30); - } - } - - if (frame.size() < 2) { - return 0; - } - - int[] frame0 = frame.get(0).stream().mapToInt(Integer::intValue).toArray(); - int[] frame1 = frame.get(1).stream().mapToInt(Integer::intValue).toArray(); - - int frUd = calcDelta(frame0[0], frame0[1]); - int frLr = calcDelta(frame0[2], frame0[3]); - int lrUd = calcDelta(frame1[0], frame1[1]); - int lrLr = calcDelta(frame1[2], frame1[3]); - - int deltaUd = lrUd - frUd; - int deltaLr = lrLr - frLr; - - int stateUd = getState(deltaUd); - int stateLr = getState(deltaLr); - - return determineGesture(stateUd, stateLr, deltaUd, deltaLr); - } - - private int calcDelta(int a, int b) { - return ((a - b) * 100) / (a + b); - } - - private int getState(int delta) { - if (delta >= 30) return 1; - if (delta <= -30) return -1; - return 0; - } - - private int determineGesture(int stateUd, int stateLr, int deltaUd, int deltaLr) { - if (stateUd == -1 && stateLr == 0) return 1; - if (stateUd == 1 && stateLr == 0) return 2; - if (stateUd == 0 && stateLr == -1) return 3; - if (stateUd == 0 && stateLr == 1) return 4; - - boolean udDominant = Math.abs(deltaUd) > Math.abs(deltaLr); - if (stateUd == -1 && stateLr == 1) return udDominant ? 1 : 4; - if (stateUd == 1 && stateLr == -1) return udDominant ? 2 : 3; - if (stateUd == -1) return udDominant ? 1 : 3; - if (stateUd == 1) return udDominant ? 2 : 3; - - return 0; - } - - - private Boolean getBit(int register, int mask) throws IOException { - ArrayList data = i2c.read(APDS9960_I2C_ADDRESS, 1, register); - return (((data.get(0) & 0xFF) & mask) == 0) ? false : true; - } - - private void setBit(int register, int mask, Boolean value) throws IOException { - ArrayList data = i2c.read(APDS9960_I2C_ADDRESS, 1, register); - if (value) { - data.set(0, (data.get(0) & 0xFF) | mask); - } else { - data.set(0, (data.get(0) & 0xFF) & ~mask); - } - i2c.write(APDS9960_I2C_ADDRESS, data.stream().mapToInt(Integer::intValue).toArray(), register); - } - - private void setBits(int register, int pos, int mask, int value) throws IOException { - ArrayList data = i2c.read(APDS9960_I2C_ADDRESS, 1, register); - data.set(0, ((data.get(0) & 0xFF) & ~mask) | (value << pos)); - i2c.write(APDS9960_I2C_ADDRESS, data.stream().mapToInt(Integer::intValue).toArray(), register); - } - - private int colorData16(int register) throws IOException { - ArrayList data = i2c.read(APDS9960_I2C_ADDRESS, 2, register); - return ((data.get(1) & 0xFF) << 8) | ((data.get(0) & 0xFF)); - } -} diff --git a/app/src/main/java/io/pslab/communication/sensors/BH1750.java b/app/src/main/java/io/pslab/communication/sensors/BH1750.java deleted file mode 100644 index 9b1423146..000000000 --- a/app/src/main/java/io/pslab/communication/sensors/BH1750.java +++ /dev/null @@ -1,55 +0,0 @@ -package io.pslab.communication.sensors; - -import io.pslab.communication.peripherals.I2C; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.Arrays; - -public class BH1750 { - private String TAG = "BH1750"; - private int POWER_ON = 0x01; - private int RESET = 0x07; - private int RES_1000mLx = 0x10; - private int RES_500mLx = 0x11; - private int RES_4000mLx = 0x13; - private I2C i2c; - - private int[] gainChoices = {RES_500mLx, RES_1000mLx, RES_4000mLx}; - private String[] gainLiteralChoices = {"500mLx", "1000mLx", "4000mLx"}; - public int gain = 0; - public double[] scaling = {2, 1, 0.25}; - - public int NUMPLOTS = 1; - public String[] PLOTNAMES = {"Lux"}; - private int ADDRESS = 0x23; - private String name = "Luminosity"; - - - public BH1750(I2C i2c) throws IOException, InterruptedException { - this.i2c = i2c; - init(); - } - - private void init() throws IOException { - i2c.writeBulk(ADDRESS, new int[]{RES_500mLx}); - } - - public void setRange(String g) throws IOException { - int gain = Arrays.asList(gainLiteralChoices).indexOf(g); - i2c.writeBulk(ADDRESS, new int[]{gainChoices[gain]}); - } - - private ArrayList getVals(int numbytes) throws IOException { - ArrayList vals = i2c.simpleRead(ADDRESS, numbytes); - return vals; - } - - public Double getRaw() throws IOException { - ArrayList vals = getVals(2); - if (vals.size() == 3) - return (vals.get(0) << 8 | vals.get(1)) / 1.2; - else - return 0.0; - } -} diff --git a/app/src/main/java/io/pslab/communication/sensors/BMP180.java b/app/src/main/java/io/pslab/communication/sensors/BMP180.java deleted file mode 100644 index 917b181f7..000000000 --- a/app/src/main/java/io/pslab/communication/sensors/BMP180.java +++ /dev/null @@ -1,185 +0,0 @@ -package io.pslab.communication.sensors; - -import android.util.Log; - -import io.pslab.communication.ScienceLab; -import io.pslab.communication.peripherals.I2C; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.concurrent.TimeUnit; - -import static java.lang.Math.pow; - -/** - * Created by akarshan on 4/18/17. - */ - -public class BMP180 { - - private static final String TAG = "BMP180"; - // BMP180 default address - private static final int ADDRESS = 0x77; - - // Operating Modes - private static final int ULTRALOWPOWER = 0; - private static final int STANDARD = 1; - private static final int HIGHRES = 2; - private static final int ULTRAHIGHRES = 3; - - // BMP180 Registers - private static final int CAL_AC1 = 0xAA; - private static final int CAL_AC2 = 0xAC; - private static final int CAL_AC3 = 0xAE; - private static final int CAL_AC4 = 0xB0; - private static final int CAL_AC5 = 0xB2; - private static final int CAL_AC6 = 0xB4; - private static final int CAL_B1 = 0xB6; - private static final int CAL_B2 = 0xB8; - private static final int CAL_MB = 0xBA; - private static final int CAL_MC = 0xBC; - private static final int CAL_MD = 0xBE; - private static final int CONTROL = 0xF4; - private static final int TEMPDATA = 0xF6; - private static final int PRESSDATA = 0xF6; - - // BMP180 Commands - private static final int READTEMPCMD = 0x2E; - private static final int READPRESSURECMD = 0x34; - - private int mode = HIGHRES; - private int oversampling = mode; - - public int NUMPLOTS = 3; - public String[] PLOTNAMES = {"Temperature", "Pressure", "Altitude"}; - public String name = "Altimeter BMP180"; - - private I2C i2c; - private int ac1; - private int ac2; - private int ac3; - private int ac4; - private int ac5; - private int ac6; - private int b1; - private int b2; - private int mb; - private int mc; - private int md; - private double temperature; - private double pressure; - private static final double SEA_LEVEL_PRESSURE = 101325.0; - - public BMP180(I2C i2c, ScienceLab scienceLab) throws IOException, InterruptedException { - this.i2c = i2c; - if (scienceLab.isConnected()) { - ac1 = readInt16(CAL_AC1); - ac2 = readInt16(CAL_AC2); - ac3 = readInt16(CAL_AC3); - ac4 = readUInt16(CAL_AC4); - ac5 = readUInt16(CAL_AC5); - ac6 = readUInt16(CAL_AC6); - b1 = readInt16(CAL_B1); - b2 = readInt16(CAL_B2); - mb = readInt16(CAL_MB); - mc = readInt16(CAL_MC); - md = readInt16(CAL_MD); - - Log.v("calib", Arrays.toString((new double[]{ac1, ac2, ac3, ac4, ac5, ac6, b1, b2, mb, mc, md}))); - } - } - - private int readInt16(int address) throws IOException { - ArrayList data = i2c.read(ADDRESS, 2, address); - int value = ((data.get(0) & 0xFF) << 8) | (data.get(1) & 0xFF); - if ((value & 0x8000) != 0) { // Check if the sign bit is set - value |= 0xFFFF0000; // Sign-extend to 32 bits - } - return value; - } - - private int readUInt16(int address) throws IOException { - ArrayList data = i2c.read(ADDRESS, 2, address); - return ((data.get(0) & 0xFF) << 8) | (data.get(1) & 0xFF); - } - - private int readRawTemperature() throws IOException, InterruptedException { - i2c.write(ADDRESS, new int[]{READTEMPCMD}, CONTROL); - TimeUnit.MILLISECONDS.sleep(5); - int raw = readUInt16(TEMPDATA); - return raw; - } - - private Double readTemperature() throws IOException, InterruptedException { - int ut = readRawTemperature(); - // Calculations from section 3.5 of the datasheet - int x1 = ((ut - ac6) * ac5) >> 15; - int x2 = (mc << 11) / (x1 + md); - int b5 = x1 + x2; - temperature = ((b5 + 8) >> 4) / 10.0; - return temperature; - } - - public void setOversampling(int num) { - oversampling = num; - } - - private int readRawPressure() throws IOException, InterruptedException { - int[] delays = {5, 8, 14, 26}; - i2c.write(ADDRESS, new int[]{READPRESSURECMD + (mode << 6)}, CONTROL); - TimeUnit.MILLISECONDS.sleep(delays[oversampling]); - int msb = i2c.readByte(ADDRESS, PRESSDATA) & 0xFF; - int lsb = i2c.readByte(ADDRESS, PRESSDATA + 1) & 0xFF; - int xlsb = i2c.readByte(ADDRESS, PRESSDATA + 2) & 0xFF; - return ((msb << 16) + (lsb << 8) + xlsb) >> (8 - mode); - } - - private Double readPressure() throws IOException, InterruptedException { - int ut = readRawTemperature(); - int up = readRawPressure(); - // Calculations from section 3.5 of the datasheet - int x1 = ((ut - ac6) * ac5) >> 15; - int x2 = (mc << 11) / (x1 + md); - int b5 = x1 + x2; - // Pressure Calculations - int b6 = b5 - 4000; - x1 = (b2 * (b6 * b6) >> 12) >> 11; - x2 = (ac2 * b6) >> 11; - int x3 = x1 + x2; - int b3 = (((ac1 * 4 + x3) << mode) + 2) / 4; - x1 = (ac3 * b6) >> 13; - x2 = (b1 * ((b6 * b6) >> 12)) >> 16; - x3 = ((x1 + x2) + 2) >> 2; - int b4 = (ac4 * (x3 + 32768)) >> 15; - int b7 = (up - b3) * (50000 >> mode); - int p; - if (b7 < 0x80000000) { - p = (b7 * 2) / b4; - } else { - p = (b7 / b4) * 2; - } - x1 = (p >> 8) * (p >> 8); - x1 = (x1 * 3038) >> 16; - x2 = (-7357 * p) >> 16; - pressure = p + ((x1 + x2 + 3791) >> 4); - return pressure; - } - - public double altitude() { - // Calculation from section 3.6 of the datasheet - return (44330.0 * (1 - pow(pressure / SEA_LEVEL_PRESSURE, 1 / 5.255))); - } - - public double seaLevel(double pressure, double altitude) { - //given a calculated pressure and altitude, return the sealevel - return (pressure / pow(1 - (altitude / 44330.0), 5.255)); - } - - public double[] getRaw() throws IOException, InterruptedException { - temperature = readTemperature(); - pressure = readPressure(); - return (new double[]{temperature, altitude(), pressure}); - } - -} diff --git a/app/src/main/java/io/pslab/communication/sensors/CCS811.java b/app/src/main/java/io/pslab/communication/sensors/CCS811.java deleted file mode 100644 index d4887e057..000000000 --- a/app/src/main/java/io/pslab/communication/sensors/CCS811.java +++ /dev/null @@ -1,103 +0,0 @@ -package io.pslab.communication.sensors; - -import android.util.Log; - -import io.pslab.communication.ScienceLab; -import io.pslab.communication.peripherals.I2C; - -import java.io.IOException; -import java.util.ArrayList; - -public class CCS811 { - private static final int ADDRESS = 0x5A; - private final I2C i2c; - - // Figure 14: CCS811 Application Register Map - private static final int ALG_RESULT_DATA = 0x02; // ALG_RESULT_DATA # R 8 bytes Algorithm result. The most significant 2 bytes contain a up to ppm estimate of the equivalent CO2 (eCO2) level, and - private static final int HW_ID = 0x20; // HW_ID # R 1 byte Hardware ID. The value is 0x81 - private static final int FW_BOOT_VERSION = 0x23; // FW_Boot_Version # R 2 bytes firmware version number for the boot code. Firmware Application Version. The first 2 bytes contain - private static final int FW_APP_VERSION = 0x24; // FW_App_Version # R 2 bytes the firmware version number for the application code - private static final int MEAS_MODE = 0x01; // MEAS_MODE # R/W 1 byte Measurement mode and conditions register Algorithm result. - - // Figure 25: CCS811 Bootloader Register Map - // Address Register R/W Size Description - private static final int HW_Version = 0x21; - private static final int APP_START = 0xF4; - - // Measurement Mode - private static final int DRIVE_MODE_1SEC = 0x01; - - public CCS811(I2C i2c, ScienceLab scienceLab) throws Exception { - this.i2c = i2c; - if (scienceLab.isConnected()) { - fetchID(); - appStart(); - Thread.sleep(100); - disableInterrupt(); - setMeasMode(); - } - } - - private void setMeasMode() throws IOException { - i2c.write(ADDRESS, new int[]{1 << 2 | CCS811.DRIVE_MODE_1SEC << 4}, MEAS_MODE); - } - - private void disableInterrupt() throws IOException { - i2c.write(ADDRESS, new int[]{1 << 2 | 3 << 4}, MEAS_MODE); - } - - private void fetchID() throws IOException, InterruptedException { - int hardwareId = i2c.read(ADDRESS, 1, HW_ID).get(0) & 0xFF; - Thread.sleep(20); - int hardwareVersion = i2c.read(ADDRESS, 1, HW_Version).get(0) & 0xFF; - Thread.sleep(20); - int bootVersion = i2c.read(ADDRESS, 2, FW_BOOT_VERSION).get(0) & 0xFF; - Thread.sleep(20); - int appVersion = i2c.read(ADDRESS, 2, FW_APP_VERSION).get(0) & 0xFF; - Thread.sleep(20); - - Log.d("CCS811", "Hardware ID: " + hardwareId); - Log.d("CCS811", "Hardware Version: " + hardwareVersion); - Log.d("CCS811", "Boot Version: " + bootVersion); - Log.d("CCS811", "App Version: " + appVersion); - } - - private void appStart() throws IOException { - i2c.write(ADDRESS, new int[]{}, APP_START); - } - - private String decodeError(int error) { - String e = ""; - if ((error & (1)) > 0) { - e += ", The CCS811 received an I²C write request addressed to this station but with invalid register address ID"; - } - if ((error & (1 << 1)) > 0) { - e += ", The CCS811 received an I²C read request to a mailbox ID that is invalid"; - } - if ((error & (1 << 2)) > 0) { - e += ", The CCS811 received an I²C request to write an unsupported mode to MEAS_MODE"; - } - if ((error & (1 << 3)) > 0) { - e += ", The sensor resistance measurement has reached or exceeded the maximum range"; - } - if ((error & (1 << 4)) > 0) { - e += ", The Heater current in the CCS811 is not in range"; - } - if ((error & (1 << 5)) > 0) { - e += ", The Heater voltage is not being applied correctly"; - } - return "Error: " + e.substring(2); - } - - public int[] getRaw() throws IOException { - ArrayList data = i2c.read(ADDRESS, 8, ALG_RESULT_DATA); - int eCO2 = ((data.get(0) & 0xFF) << 8) | (data.get(1) & 0xFF); - int TVOC = ((data.get(2) & 0xFF) << 8) | (data.get(3) & 0xFF); - int errorId = data.get(5) & 0xFF; - - if (errorId > 0) { - Log.d("CCS811", decodeError(errorId)); - } - return (new int[]{eCO2, TVOC}); - } -} diff --git a/app/src/main/java/io/pslab/communication/sensors/ComplementaryFilter.java b/app/src/main/java/io/pslab/communication/sensors/ComplementaryFilter.java deleted file mode 100644 index f68a1aa38..000000000 --- a/app/src/main/java/io/pslab/communication/sensors/ComplementaryFilter.java +++ /dev/null @@ -1,35 +0,0 @@ -package io.pslab.communication.sensors; - -import static java.lang.Math.abs; -import static org.apache.commons.math3.util.FastMath.atan2; - -/** - * Created by akarshan on 4/23/17. - */ - -public class ComplementaryFilter { - private double dt, pitch, roll; - - public ComplementaryFilter() { - pitch = 0.; - roll = 0.; - dt = 0.001; - } - - public void addData(double[] accelerometerData, double[] gyroscopeData) { - pitch += (gyroscopeData[0]) * dt; // Angle around the X-axis - roll -= (gyroscopeData[1]) * dt; //Angle around the Y-axis - double pi = 3.14159265359; - double forceMagnitudeApprox = abs(accelerometerData[0]) + abs(accelerometerData[1]) + abs(accelerometerData[2]); - double pitchAcc = Math.atan2(accelerometerData[1], accelerometerData[2]) * 180 / pi; - pitch = pitch * 0.98 + pitchAcc * 0.02; - double rollAcc = atan2(accelerometerData[0], accelerometerData[2]) * 180 / pi; - roll = roll * 0.98 + rollAcc * 0.02; - - } - - public double[] getData() { - return new double[]{roll, pitch}; - } - -} diff --git a/app/src/main/java/io/pslab/communication/sensors/HMC5883L.java b/app/src/main/java/io/pslab/communication/sensors/HMC5883L.java deleted file mode 100644 index a8ac9886e..000000000 --- a/app/src/main/java/io/pslab/communication/sensors/HMC5883L.java +++ /dev/null @@ -1,100 +0,0 @@ -package io.pslab.communication.sensors; - -import io.pslab.communication.ScienceLab; -import io.pslab.communication.peripherals.I2C; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.Arrays; - -/** - * Created by akarshan on 4/23/17. - *

- * ScienceLab instance of I2C need to be passed to the MF522 constructor. - *

- */ - -public class HMC5883L { - private int CONFA = 0x00; - private int CONFB = 0x01; - private int MODE = 0x02; - private int STATUS = 0x09; - - //--------CONFA register bits. 0x00-----------// - - private int samplesToAverage = 0; - private ArrayList samplesToAverageChoices = new ArrayList<>(Arrays.asList(1, 2, 4, 8)); - - private int dataOutputRate = 6; - private ArrayList dataOutputRateChoices = new ArrayList(Arrays.asList(0.75, 1.5, 3., 7.5, 15., 30., 75.)); - - private int measurementConf = 0; - - //--------CONFB register bits. 0x01-----------// - - private int gainValue = 7; //least sensitive - private ArrayList gainChoices = new ArrayList<>(Arrays.asList(8, 7, 6, 5, 4, 3, 2, 1)); - private ArrayList scaling = new ArrayList<>(Arrays.asList(1370., 1090., 820., 660., 440., 390., 330., 230.)); - private int ADDRESS = 0x1E; - public String name = "Magnetometer"; - public int NUMPLOTS = 3; - public String[] PLOTNAMES = {"Bx", "By", "Bz"}; - - private I2C i2c; - - public HMC5883L(I2C i2c, ScienceLab scienceLab) throws IOException { - this.i2c = i2c; - if (scienceLab.isConnected()) { - init(); - } - } - - private void init() throws IOException { - writeCONFA(); - writeCONFB(); - i2c.writeBulk(ADDRESS, new int[]{MODE, 0}); //enable continuous measurement mode - - } - - private void writeCONFB() throws IOException { - i2c.writeBulk(ADDRESS, new int[]{CONFB, gainValue << 5}); //set gain - } - - - private void writeCONFA() throws IOException { - i2c.writeBulk(ADDRESS, new int[]{CONFA, (dataOutputRate << 2) | (samplesToAverage << 5) | (measurementConf)}); - } - - public void setSamplesToAverage(int num) throws IOException { - samplesToAverage = samplesToAverageChoices.indexOf(num); - writeCONFA(); - } - - public void setDataOutputRate(double rate) throws IOException { - dataOutputRate = dataOutputRateChoices.indexOf(rate); - writeCONFA(); - } - - public void setGain(int gain) throws IOException { - gainValue = gainChoices.indexOf(gain); - writeCONFB(); - } - - public ArrayList getVals(int addr, int bytes) throws IOException { - return i2c.readBulk(ADDRESS, addr, bytes); - } - - public ArrayList getRaw() throws IOException { - ArrayList returnList = new ArrayList<>(); - ArrayList vals = getVals(0x03, 6); - if (vals.size() == 6) { - for (int a = 0; a < 3; a++) { - returnList.add((vals.get(a * 2) << 8 | vals.get(a * 2 + 1)) / scaling.get(gainValue)); - } - return returnList; - } else - return null; - } - -} - diff --git a/app/src/main/java/io/pslab/communication/sensors/KalmanFilter.java b/app/src/main/java/io/pslab/communication/sensors/KalmanFilter.java deleted file mode 100644 index 43641c1a0..000000000 --- a/app/src/main/java/io/pslab/communication/sensors/KalmanFilter.java +++ /dev/null @@ -1,34 +0,0 @@ -package io.pslab.communication.sensors; - -/** - * Created by akarshan on 4/21/17. - */ - -public class KalmanFilter { - private double processVariance; - private double estimatedMeasurementVariance; - private double posteriEstimate; - private double posteriErrorEstimate; - private double prioriEstimate; - private double prioriErrorEstimate; - private double blendingFactor; - - public KalmanFilter(double processVariance, double estimatedMeasurementVariance) { - this.processVariance = processVariance; - this.estimatedMeasurementVariance = estimatedMeasurementVariance; - posteriEstimate = 0.0; - posteriErrorEstimate = 1.0; - } - - void inputLatestNoisyMeasurement(double measurement) { - prioriEstimate = posteriEstimate; - prioriErrorEstimate = posteriErrorEstimate + processVariance; - blendingFactor = prioriErrorEstimate / (prioriErrorEstimate + estimatedMeasurementVariance); - posteriEstimate = prioriEstimate + blendingFactor * (measurement - prioriEstimate); - posteriErrorEstimate = (1 - blendingFactor) * prioriErrorEstimate; - } - - double getLatestEstimatedMeasurement() { - return posteriEstimate; - } -} diff --git a/app/src/main/java/io/pslab/communication/sensors/MF522.java b/app/src/main/java/io/pslab/communication/sensors/MF522.java deleted file mode 100644 index c06c17496..000000000 --- a/app/src/main/java/io/pslab/communication/sensors/MF522.java +++ /dev/null @@ -1,533 +0,0 @@ -package io.pslab.communication.sensors; - -import android.util.Log; - -import io.pslab.communication.peripherals.SPI; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.concurrent.TimeUnit; - -/** - * Created by akarshan on 4/22/17. - *

- * ScienceLab instance of SPI need to be passed to the MF522 constructor. - * refer https://github.com/fossasia/pslab-python/blob/development/PSL/SENSORS/MF522.py#L465 - * to port the code in sciencelab.java - *

- */ - -public class MF522 { - private String TAG = "MF522"; - private int CommandReg = 0x01 << 1; // starts and stops command execution - private int ComIEnReg = 0x02 << 1; // enable and disable interrupt request control bits - private int DivIEnReg = 0x03 << 1; // enable and disable interrupt request control bits - private int ComIrqReg = 0x04 << 1; // interrupt request bits - private int DivIrqReg = 0x05 << 1; // interrupt request bits - private int ErrorReg = 0x06 << 1; // error bits showing the error status of the last command executed - private int Status1Reg = 0x07 << 1; // communication status bits - private int Status2Reg = 0x08 << 1; // receiver and transmitter status bits - private int FIFODataReg = 0x09 << 1; // input and output of 64 byte FIFO buffer - private int FIFOLevelReg = 0x0A << 1; // number of bytes stored in the FIFO buffer - private int WaterLevelReg = 0x0B << 1; // level for FIFO underflow and overflow warning - private int ControlReg = 0x0C << 1; // miscellaneous control registers - private int BitFramingReg = 0x0D << 1; // adjustments for bit-oriented frames - private int CollReg = 0x0E << 1; // bit position of the first bit-collision detected on the RF sciencelab - - private int ModeReg = 0x11 << 1; // defines general modes for transmitting and receiving - private int TxModeReg = 0x12 << 1; // defines transmission data rate and framing - private int RxModeReg = 0x13 << 1; // defines reception data rate and framing - private int TxControlReg = 0x14 << 1; // controls the logical behavior of the antenna driver pins TX1 and TX2 - private int TxASKReg = 0x15 << 1; // controls the setting of the transmission modulation - private int TxSelReg = 0x16 << 1; // selects the internal sources for the antenna driver - private int RxSelReg = 0x17 << 1; // selects internal receiver settings - private int RxThresholdReg = 0x18 << 1; // selects thresholds for the bit decoder - private int DemodReg = 0x19 << 1; // defines demodulator settings - private int MfTxReg = 0x1C << 1; // controls some MIFARE communication transmit parameters - private int MfRxReg = 0x1D << 1; // controls some MIFARE communication receive parameters - private int SerialSpeedReg = 0x1F << 1; // selects the speed of the serial UART sciencelab - - private int CRCResultRegH = 0x21 << 1; // shows the MSB and LSB values of the CRC calculation - private int CRCResultRegL = 0x22 << 1; - private int ModWidthReg = 0x24 << 1; // controls the ModWidth setting? - private int RFCfgReg = 0x26 << 1; // configures the receiver gain - private int GsNReg = 0x27 << 1; // selects the conductance of the antenna driver pins TX1 and TX2 for modulation - private int CWGsPReg = 0x28 << 1; // defines the conductance of the p-driver output during periods of no modulation - private int ModGsPReg = 0x29 << 1; // defines the conductance of the p-driver output during periods of modulation - private int TModeReg = 0x2A << 1; // defines settings for the internal timer - private int TPrescalerReg = 0x2B << 1; // the lower 8 bits of the TPrescaler value. The 4 high bits are in TModeReg. - private int TReloadRegH = 0x2C << 1; // defines the 16-bit timer reload value - private int TReloadRegL = 0x2D << 1; - private int TCounterValueRegH = 0x2E << 1; // shows the 16-bit timer value - private int TCounterValueRegL = 0x2F << 1; - - private int TestSel1Reg = 0x31 << 1; // general test signal configuration - private int TestSel2Reg = 0x32 << 1; // general test signal configuration - private int TestPinEnReg = 0x33 << 1; // enables pin output driver on pins D1 to D7 - private int TestPinValueReg = 0x34 << 1; // defines the values for D1 to D7 when it is used as an I/O bus - private int TestBusReg = 0x35 << 1; // shows the status of the internal test bus - private int AutoTestReg = 0x36 << 1; // controls the digital self test - private int VersionReg = 0x37 << 1; // shows the software version - private int AnalogTestReg = 0x38 << 1; // controls the pins AUX1 and AUX2 - private int TestDAC1Reg = 0x39 << 1; // defines the test value for TestDAC1 - private int TestDAC2Reg = 0x3A << 1; // defines the test value for TestDAC2 - private int TestADCReg = 0x3B << 1; // shows the value of ADC I and Q channels - - // MFRC522 commands. Described in chapter 10 of the datasheet. - - private int PCD_Idle = 0x00; //no action, cancels current command execution - private int PCD_Mem = 0x01; //stores 25 bytes into the internal buffer - private int PCD_GenerateRandomID = 0x02; //generates a 10-byte random ID number - private int PCD_CalcCRC = 0x03; //activates the CRC coprocessor or performs a self test - private int PCD_Transmit = 0x04; // transmits data from the FIFO buffer - private int PCD_NoCmdChange = 0x07; - private int PCD_Receive = 0x08; //activates the receiver circuits - private int PCD_Transceive = 0x0C; //transmits data from FIFO buffer to antenna and automatically activates the receiver after transmission - private int PCD_MFAuthent = 0x0E; //performs the MIFARE standard authentication as a reader - private int PCD_SoftReset = 0x0F; //resets the MFRC522 - - private int RxGain_18dB = 0x00 << 4; // 000b - 18 dB, minimum - private int RxGain_23dB = 0x01 << 4; // 001b - 23 dB - private int RxGain_18dB_2 = 0x02 << 4; // 010b - 18 dB, it seems 010b is a duplicate for 000b - private int RxGain_23dB_2 = 0x03 << 4; // 011b - 23 dB, it seems 011b is a duplicate for 001b - private int RxGain_33dB = 0x04 << 4; // 100b - 33 dB, average, and typical default - private int RxGain_38dB = 0x05 << 4; // 101b - 38 dB - private int RxGain_43dB = 0x06 << 4; // 110b - 43 dB - private int RxGain_48dB = 0x07 << 4; // 111b - 48 dB, maximum - private int RxGain_min = 0x00 << 4; // 000b - 18 dB, minimum, convenience for RxGain_18dB - private int RxGain_avg = 0x04 << 4; // 100b - 33 dB, average, convenience for RxGain_33dB - private int RxGain_max = 0x07 << 4; // 111b - 48 dB, maximum, convenience for RxGain_48dB - - // The commands used by the PCD to manage communication with several PICCs (ISO 14443-3, Type A, section 6.4) - - private int PICC_CMD_REQA = 0x26; // REQuest command, Type A. Invites PICCs in state IDLE to go to READY and prepare for anticollision or selection - private int PICC_CMD_WUPA = 0x52; // Wake-UP command, prepare for anticollision or selection. 7 bit frame. - private int PICC_CMD_CT = 0x88; // Cascade Tag. Not really a command, but used during anti collision. - private int PICC_CMD_SEL_CL1 = 0x93; // Anti collision/Select, Cascade Level 1 - private int PICC_CMD_SEL_CL2 = 0x95; // Anti collision/Select, Cascade Level 2 - private int PICC_CMD_SEL_CL3 = 0x97; // Anti collision/Select, Cascade Level 3 - private int PICC_CMD_HLTA = 0x50; // HaLT command, Type A. Instructs an ACTIVE PICC to go to state HALT. - - // The commands used for MIFARE Classic (from http://www.mouser.com/ds/2/302/MF1S503x-89574.pdf, Section 9) - // Use PCD_MFAuthent to authenticate access to a sector, then use these commands to read/write/modify the blocks on the sector. - // The read/write commands can also be used for MIFARE Ultralight. - - private int PICC_CMD_MF_AUTH_KEY_A = 0x60; // Perform authentication with Key A - private int PICC_CMD_MF_AUTH_KEY_B = 0x61; // Perform authentication with Key B - private int PICC_CMD_MF_READ = 0x30; // Reads one 16 byte block from the authenticated sector of the PICC. Also used for MIFARE Ultralight. - private int PICC_CMD_MF_WRITE = 0xA0; // Writes one 16 byte block to the authenticated sector of the PICC. Called "COMPATIBILITY WRITE" for MIFARE Ultralight. - private int PICC_CMD_MF_DECREMENT = 0xC0; // Decrements the contents of a block and stores the result in the internal data register. - private int PICC_CMD_MF_INCREMENT = 0xC1; // Increments the contents of a block and stores the result in the internal data register. - private int PICC_CMD_MF_RESTORE = 0xC2; // Reads the contents of a block into the internal data register. - private int PICC_CMD_MF_TRANSFER = 0xB0; // Writes the contents of the internal data register to a block. - - - private int NRSTPD = 22; - private int MAX_LEN = 16; - private int MI_OK = 0; - private int MI_NOTAGERR = 1; - private int MI_ERR = 2; - - private int PCD_CALCCRC = 0x03; - - private int PICC_REQIDL = 0x26; - private int PICC_REQALL = 0x52; - private int PICC_ANTICOLL = 0x93; - private int PICC_SElECTTAG = 0x93; - private int PICC_AUTHENT1A = 0x60; - private int PICC_AUTHENT1B = 0x61; - private int PICC_READ = 0x30; - private int PICC_WRITE = 0xA0; - private int PICC_DECREMENT = 0xC0; - private int PICC_INCREMENT = 0xC1; - private int PICC_RESTORE = 0xC2; - private int PICC_TRANSFER = 0xB0; - private int PICC_HALT = 0x50; - - // The commands used for MIFARE Ultralight (from http://www.nxp.com/documents/data_sheet/MF0ICU1.pdf, Section 8.6) - // The PICC_CMD_MF_READ and PICC_CMD_MF_WRITE can also be used for MIFARE Ultralight. - - private int PICC_CMD_UL_WRITE = 0xA2; //Writes one 4 byte page to the PICC. - - private int MF_ACK = 0xA; // The MIFARE Classic uses a 4 bit ACK/NAK. Any other value than 0xA is NAK. - private int MF_KEY_SIZE = 6; // A Mifare Crypto1 key is 6 bytes. - private String cs; - private SPI spi; - private Boolean connected; - - public MF522(SPI spi, String cs) throws IOException, InterruptedException { - this.cs = cs; - this.spi = spi; - spi.setParameters(2, 1, 1, 0, 1); - if (!reset()) { - connected = false; - } - write(TModeReg, 0x80); - write(TPrescalerReg, 0xA9); - write(TReloadRegH, 0x03); - write(TReloadRegL, 0xE8); - - write(TxASKReg, 0x40); - write(ModeReg, 0x3D); - enableAntenna(); //Enable the antenna - } - - private void enableAntenna() throws IOException { - int val = read(TxControlReg); - if ((val & 0x03) != 0x03) - write(TxControlReg, val | 0x03); - } - - public boolean reset() throws IOException, InterruptedException { - write(CommandReg, PCD_SoftReset); - long startTime = System.currentTimeMillis(); - while ((read(CommandReg) & (1 << 4)) != 0) { - Log.v(TAG, "wait"); - TimeUnit.MILLISECONDS.sleep(100); - if (System.currentTimeMillis() - startTime > 0.5) - return false; - } - return true; - } - - private int write(int register, int val) throws IOException { - spi.setCS(cs, 0); - int ret = spi.send16(((register & 0x7F) << 8) | val); - spi.setCS(cs, 1); - return ret & 0xFF; - } - - public int read(int register) throws IOException { - spi.setCS(cs, 0); - int ret = spi.send16(((register & 0x80) << 8)); - spi.setCS(cs, 1); - return ret & 0xFF; - } - - public ArrayList readMany(int register, int total) throws IOException { - spi.setCS(cs, 0); - spi.send8(register); - ArrayList vals = new ArrayList<>(); - for (int a = 0; a < total - 1; a++) - vals.add(spi.send8(register)); - vals.add(spi.send8(0)); - spi.setCS(cs, 1); - return vals; - } - - public int getStatus() throws IOException { - return read(Status1Reg); - } - - public int getVersion() throws IOException { - int version = read(VersionReg); - if (version == 0x88) Log.v(TAG, "Cloned version: Fudan Semiconductors"); - else if (version == 0x90) Log.v(TAG, "version 1.0"); - else if (version == 0x91) Log.v(TAG, "version 1.0"); - else if (version == 0x92) Log.v(TAG, "version 2.0"); - else Log.v(TAG, "Unknown version " + version); - return version; - } - - private void setBitMask(int register, int mask) throws IOException { - int tmp = read(register); - write(register, tmp | mask); - } - - private void clearBitMask(int register, int mask) throws IOException { - int tmp = read(register); - write(register, tmp & (~mask)); - } - - private ArrayList MFRC522ToCard(int command, ArrayList sendData) throws IOException { - ArrayList returnedData = new ArrayList<>(); - int backLen = 0; - int status = MI_ERR; - int irqEn = 0x00; - int waitIRq = 0x00; - int lastBits; - int n = 0; - int i = 0; - - if (command == PCD_MFAuthent) { - irqEn = 0x12; - waitIRq = 0x10; - } - if (command == PCD_Transceive) { - irqEn = 0x77; - waitIRq = 0x30; - } - write(ComIEnReg, irqEn | 0x80); - clearBitMask(ComIrqReg, 0x80); - setBitMask(FIFOLevelReg, 0x80); - - write(CommandReg, PCD_Idle); - - for (int a = 0; a < sendData.size(); a++) - write(FIFODataReg, a); - write(CommandReg, command); - - if (command == PCD_Transceive) - setBitMask(BitFramingReg, 0x80); - - i = 2000; - while (true) { - n = read(ComIrqReg); - i = i - 1; - if (!(i != 0 && ~(n & 0x01) != 0 && ~(n & waitIRq) != 0)) //needs to be checked - break; - } - - clearBitMask(BitFramingReg, 0x80); - - if (i != 0) { - if ((read(ErrorReg) & 0x1B) == 0x00) { - status = MI_OK; - if ((n & irqEn & 0x01) != 0) - status = MI_NOTAGERR; - if (command == PCD_Transceive) { - n = read(FIFOLevelReg); - lastBits = read(ControlReg) & 0x07; - if (lastBits != 0) - backLen = (n - 1) * 8 + lastBits; - else - backLen = n * 8; - if (n == 0) - n = 1; - if (n > MAX_LEN) - n = MAX_LEN; - - i = 0; - while (i < n) { - returnedData.add(read(FIFODataReg)); - i = i + 1; - } - } - } else - status = MI_ERR; - } - return new ArrayList(Arrays.asList(status, returnedData, backLen)); - } - - public ArrayList MFRC522Request(int reqMode) throws IOException, NullPointerException { - ArrayList mfrc522ToCard; - ArrayList returnedData = new ArrayList<>(); - int backBits = 0; - int status; - ArrayList TagType = new ArrayList<>(); - - write(BitFramingReg, 0x07); - - TagType.add(reqMode); - mfrc522ToCard = MFRC522ToCard(PCD_Transceive, TagType); - status = (int) mfrc522ToCard.get(0); - returnedData = (ArrayList) mfrc522ToCard.get(1); - backBits = (int) mfrc522ToCard.get(2); - - if (status != MI_OK | backBits != 0x10) - status = MI_ERR; - - return new ArrayList(Arrays.asList(status, returnedData)); - } - - public ArrayList MFRC522Anticoll() throws IOException { - ArrayList returnedData; - int status; - int backLen; - int serNumCheck = 0; - ArrayList serNum = new ArrayList<>(); - - write(BitFramingReg, 0x00); - - serNum.add(PICC_ANTICOLL); - serNum.add(0x20); - - ArrayList mfrc522ToCard = MFRC522ToCard(PCD_Transceive, serNum); - status = (int) mfrc522ToCard.get(0); - returnedData = (ArrayList) mfrc522ToCard.get(1); - backLen = (int) mfrc522ToCard.get(2); - if (status == MI_OK) { - int i = 0; - if (returnedData.size() == 5) { - while (i < 4) { - serNumCheck = serNumCheck ^ returnedData.get(i); - i = i + 1; - } - if (serNumCheck != returnedData.get(i)) - status = MI_ERR; - } else status = MI_ERR; - } - return new ArrayList(Arrays.asList(status, returnedData)); - - } - - private ArrayList calulateCRC(ArrayList pIndata) throws IOException { - int n; - ArrayList pOutData = new ArrayList<>(); - clearBitMask(DivIrqReg, 0x04); - setBitMask(FIFOLevelReg, 0x80); - for (int a = 0; a < pIndata.size(); a++) - write(FIFODataReg, a); - write(CommandReg, PCD_CALCCRC); - for (int i = 0; i < 0xFF; i++) { - n = read(DivIrqReg); - if ((n & 0x040) != 0) - break; - } - pOutData.add(read(CRCResultRegL)); - pOutData.add(read(CRCResultRegH)); - return pOutData; - } - - public int MFRC522SelectTag(ArrayList serNum) throws IOException { - ArrayList returnedData; - ArrayList buf = new ArrayList<>(); - int status; - int backLen; - - buf.add(PICC_SElECTTAG); - buf.add(0x70); - int i = 0; - while (i < 5) { - buf.add(serNum.get(i)); - i = i + 1; - } - ArrayList pOut = calulateCRC(buf); - buf.add(pOut.get(0)); - buf.add(pOut.get(1)); - ArrayList mfrc522ToCard = MFRC522ToCard(PCD_Transceive, buf); - status = (int) mfrc522ToCard.get(0); - returnedData = (ArrayList) mfrc522ToCard.get(1); - backLen = (int) mfrc522ToCard.get(2); - if ((status == MI_OK) && (backLen == 0x18)) { - return returnedData.get(0); - } else - return 0; - } - - private int MFRC522Auth(int authMode, int blockAddress, int[] sectorkey, int[] serNum) throws IOException { - ArrayList buff = new ArrayList<>(); - ArrayList returnedData; - int status; - int backLen; - // First byte should be the authMode (A or B) - buff.add(authMode); - // Second byte is the trailerBlock (usually 7) - buff.add(blockAddress); - // Now we need to append the authKey which usually is 6 bytes of 0xFF - int i = 0; - while (i < sectorkey.length) { - buff.add(sectorkey[i]); - i = i + 1; - } - i = 0; - // Next we append the first 4 bytes of the UID - while (i < 4) { - buff.add(serNum[i]); - i = i + 1; - } - // Now we start the authentication itself - ArrayList mfrc522ToCard = MFRC522ToCard(PCD_MFAuthent, buff); - status = (int) mfrc522ToCard.get(0); - returnedData = (ArrayList) mfrc522ToCard.get(1); - backLen = (int) mfrc522ToCard.get(2); - - // Check if an error occurred - if (status != MI_OK) - Log.v(TAG, "AUTH ERROR !!"); - if ((read(Status2Reg) & 0x08) == 0) - Log.v(TAG, "AUTH ERROR(status2reg & 0x08) != 0"); - - // Return the status - return status; - } - - public void MFRC522StopCrypto1() throws IOException { - clearBitMask(Status2Reg, 0x08); - setBitMask(CommandReg, 0x10); - } - - private ArrayList MFRC522Read(int blockAddress) throws IOException { - ArrayList recvData = new ArrayList<>(); - int status; - int backLen; - ArrayList returnedData; - - recvData.add(PICC_READ); - recvData.add(blockAddress); - ArrayList pOut = calulateCRC(recvData); - recvData.add(pOut.get(0)); - recvData.add(pOut.get(1)); - ArrayList mfrc522ToCard = MFRC522ToCard(PCD_Transceive, recvData); - - status = (int) mfrc522ToCard.get(0); - returnedData = (ArrayList) mfrc522ToCard.get(1); - backLen = (int) mfrc522ToCard.get(2); - - if (status != MI_OK) { - Log.v(TAG, "Error while reading!"); - } - return returnedData; - } - - public void MFRC522Write(int blockAddress, int[] writeData) throws IOException { - ArrayList buff = new ArrayList<>(); - int status; - int backLen; - ArrayList returnedData; - - buff.add(PICC_WRITE); - buff.add(blockAddress); - ArrayList crc = calulateCRC(buff); - buff.add(crc.get(0)); - buff.add(crc.get(1)); - - ArrayList mfrc522ToCard = MFRC522ToCard(PCD_Transceive, buff); - status = (int) mfrc522ToCard.get(0); - returnedData = (ArrayList) mfrc522ToCard.get(1); - backLen = (int) mfrc522ToCard.get(2); - - if ((status != MI_OK) || (backLen != 4) || ((returnedData.get(0) & 0x0F) != 0x0A)) - status = MI_ERR; - - Log.v(TAG, backLen + " returnedData &0x0F == 0x0A " + (returnedData.get(0) & 0x0F)); - if (status == MI_OK) { - int i = 0; - ArrayList buf = new ArrayList<>(); - - while (i < 16) { - buf.add(writeData[i]); - i = i + 1; - } - - ArrayList bufCRC = calulateCRC(buf); - buf.add(bufCRC.get(0)); - buf.add(bufCRC.get(1)); - - mfrc522ToCard = MFRC522ToCard(PCD_Transceive, buff); - status = (int) mfrc522ToCard.get(0); - returnedData = (ArrayList) mfrc522ToCard.get(1); - backLen = (int) mfrc522ToCard.get(2); - if ((status != MI_OK) || (backLen != 4) || ((returnedData.get(0) & 0x0F) != 0x0A)) - Log.v(TAG, "Error while writing"); - if (status == MI_OK) - Log.v(TAG, "Data written"); - } - - } - - public void MFRC522DumpClassic1K(int key[], int uid[]) throws IOException { - int i = 0; - while (i < 64) { - int status = MFRC522Auth(PICC_AUTHENT1A, i, key, uid); - // Check if authenticated - if (status == MI_OK) - MFRC522Read(i); - else { - Log.v(TAG, "Authentication error"); - i = i + 1; - } - } - } -} diff --git a/app/src/main/java/io/pslab/communication/sensors/MLX90614.java b/app/src/main/java/io/pslab/communication/sensors/MLX90614.java deleted file mode 100644 index d95fb3348..000000000 --- a/app/src/main/java/io/pslab/communication/sensors/MLX90614.java +++ /dev/null @@ -1,82 +0,0 @@ -package io.pslab.communication.sensors; - - -import android.util.Log; - -import io.pslab.communication.peripherals.I2C; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.Arrays; - -/** - * Created by akarshan on 4/17/17. - */ - -public class MLX90614 { - private String TAG = "MLX90614"; - private int ADDRESS = 0x5A; - - public int NUMPLOTS = 1; - public String[] PLOTNAMES = {"Temp"}; - public String name = "PIR temperature"; - - private I2C i2c; - private int source, OBJADDR = 0x07, AMBADDR = 0x06; - - public MLX90614(I2C i2c) throws IOException { - this.i2c = i2c; - source = OBJADDR; - String name = "Passive IR temperature sensor"; - try { - Log.d(TAG, "switching baud to 100k"); - i2c.config((int) 100e3); - } catch (Exception e) { - Log.d(TAG, "failed to change baud rate"); - } - ArrayList readReg = new ArrayList<>(); - for (int i = 0; i < 0x20; i++) - readReg.add(i); - ArrayList selectSource = new ArrayList<>(Arrays.asList("object temperature", "ambient temperature")); - } - - public void selectSource(String source) { - if (source.equals("object temperature")) - this.source = OBJADDR; - else if (source.equals("ambient temperature")) - this.source = AMBADDR; - } - - public void readReg(int address) throws IOException { - ArrayList x = getVals(address, 2); - Log.v(TAG, Integer.toHexString(address) + " " + Integer.toHexString(x.get(0) | (x.get(1) << 8))); - } - - private ArrayList getVals(int addr, int bytes) throws IOException { - ArrayList vals = i2c.readBulk(ADDRESS, addr, bytes); - return vals; - } - - public Double getRaw() throws IOException { - ArrayList vals = getVals(source, 3); - if (vals.size() == 3) - return ((((vals.get(1) & 0x007f) << 8) + vals.get(0)) * 0.02) - 0.01 - 273.15; - else - return null; - } - - public Double getObjectTemperature() throws IOException { - source = OBJADDR; - Double val = getRaw(); - return val; - - } - - public Double getAmbientTemperature() throws IOException { - source = AMBADDR; - Double val = getRaw(); - return val; - - } - -} diff --git a/app/src/main/java/io/pslab/communication/sensors/MPU6050.java b/app/src/main/java/io/pslab/communication/sensors/MPU6050.java deleted file mode 100644 index ed286632e..000000000 --- a/app/src/main/java/io/pslab/communication/sensors/MPU6050.java +++ /dev/null @@ -1,133 +0,0 @@ -package io.pslab.communication.sensors; - -import org.apache.commons.math3.stat.StatUtils; -import org.apache.commons.math3.util.FastMath; -import io.pslab.communication.ScienceLab; -import io.pslab.communication.peripherals.I2C; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.Arrays; - -/** - * Created by akarshan on 4/21/17. - *

- * ScienceLab instance of I2C need to be passed to the MPU6050 constructor. - *

- */ - -public class MPU6050 { - private int GYRO_CONFIG = 0x1B; - private int ACCEL_CONFIG = 0x1C; - private double[] GYRO_SCALING = {131, 65.5, 32.8, 16.4}; - private double[] ACCEL_SCALING = {16384, 8192, 4096, 2048}; - private int AR = 3; - private int GR = 3; - private int NUMPLOTS = 7; - public String[] PLOTNAMES = {"Ax", "Ay", "Az,'Temp", "Gx", "Gy", "Gz"}; - private int ADDRESS = 0x68; - private String name = "Accel/gyro"; - private ArrayList K = new ArrayList<>(); //K is the list of KalmanFilter object - private I2C i2c; - private ArrayList setGyroRange = new ArrayList<>(Arrays.asList(250, 500, 1000, 2000)); - private ArrayList setAccelRange = new ArrayList<>(Arrays.asList(2, 4, 8, 16)); - private ArrayList kalmanFilter = new ArrayList<>(Arrays.asList(0.01, 0.1, 1.0, 10.0, 100.0, 1000.0, 10000.0, 0.0)); - - public MPU6050(I2C i2c, ScienceLab scienceLab) throws IOException { - this.i2c = i2c; - if (scienceLab.isConnected()) { - setGyroRange(2000); - setAccelerationRange(16); - powerUp(); - } - } - - public void kalmanFilter(Double opt) throws IOException, NullPointerException { - ArrayList noise = new ArrayList<>(); - double[] innerNoiseArray = new double[NUMPLOTS]; - ArrayList vals; - double standardDeviation; - if (opt == null) { //Replaced "OFF" with null. - K = null; - } - for (int a = 0; a < 500; a++) { - vals = getRaw(); - for (int b = 0; b < NUMPLOTS; b++) { - innerNoiseArray[b] = vals.get(b); - noise.set(b, innerNoiseArray); - } - } - - for (int a = 0; a < NUMPLOTS; a++) { - standardDeviation = FastMath.sqrt(StatUtils.variance(noise.get(a))); //Apachae Commons Maths used to calculate standard deviation - K.set(a, new KalmanFilter(1. / opt, Math.pow(standardDeviation, 2))); - } - - } - - private ArrayList getVals(int addr, int bytesToRead) throws IOException { - return i2c.readBulk(ADDRESS, addr, bytesToRead); - } - - private void powerUp() throws IOException { - i2c.writeBulk(ADDRESS, new int[]{0x6B, 0}); - } - - public void setGyroRange(int rs) throws IOException { - GR = setGyroRange.indexOf(rs); - i2c.writeBulk(ADDRESS, new int[]{GYRO_CONFIG, GR << 3}); - } - - public void setAccelerationRange(int rs) throws IOException { - AR = setAccelRange.indexOf(rs); - i2c.writeBulk(ADDRESS, new int[]{ACCEL_CONFIG, AR << 3}); - } - - public ArrayList getRaw() throws IOException, NullPointerException { - ArrayList vals = getVals(0x3B, 14); - ArrayList raw = new ArrayList<>(); - if (vals.size() == 14) { - int a; - for (a = 0; a < 3; a++) - raw.add(a, 1. * (vals.get(a * 2) << 8 | vals.get(a * 2 + 1)) / ACCEL_SCALING[AR]); - raw.add(a, 1. * (vals.get(6) << 8 | vals.get(7)) / 340. + 36.53); - for (a = 4; a < 7; a++) - raw.add(a, (vals.get(a * 2) << 8 | vals.get(a * 2 + 1)) / GYRO_SCALING[GR]); - if (K.isEmpty()) - return raw; - else { - for (int b = 0; b < NUMPLOTS; b++) { - K.get(b).inputLatestNoisyMeasurement(raw.get(b)); - raw.set(b, K.get(b).getLatestEstimatedMeasurement()); - } - return raw; - } - } - return null; - } - - public double[] getAcceleration() throws IOException { - ArrayList vals = getVals(0x3B, 6); - int ax = vals.get(0) << 8 | vals.get(1); - int ay = vals.get(2) << 8 | vals.get(3); - int az = vals.get(4) << 8 | vals.get(5); - return new double[]{ax / 65535., ay / 65535., az / 65535.}; - - } - - public double getTemperature() throws IOException { - ArrayList vals = getVals(0x41, 6); - int t = vals.get(0) << 8 | vals.get(1); - return t / 65535.; - } - - public double[] getGyroscope() throws IOException { - ArrayList vals = getVals(0x43, 6); - int ax = vals.get(0) << 8 | vals.get(1); - int ay = vals.get(2) << 8 | vals.get(3); - int az = vals.get(4) << 8 | vals.get(5); - return new double[]{ax / 65535., ay / 65535., az / 65535.}; - - } - -} diff --git a/app/src/main/java/io/pslab/communication/sensors/MPU925x.java b/app/src/main/java/io/pslab/communication/sensors/MPU925x.java deleted file mode 100644 index f26bd6ea9..000000000 --- a/app/src/main/java/io/pslab/communication/sensors/MPU925x.java +++ /dev/null @@ -1,194 +0,0 @@ -package io.pslab.communication.sensors; - -import org.apache.commons.math3.stat.StatUtils; -import org.apache.commons.math3.util.FastMath; -import io.pslab.communication.peripherals.I2C; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.Arrays; - -/** - * Created by akarshan on 5/7/17. - *

- * ScienceLab instance of i2c is needed to be passed to MPU95x constructor. - *

- */ - - -public class MPU925x { - private static final String TAG = "MPU925x"; - private int INT_PIN_CFG = 0x37; - private int GYRO_CONFIG = 0x1B; - private int ACCEL_CONFIG = 0x1C; - private double[] GYRO_SCALING = new double[]{131, 65.5, 32.8, 16.4}; - private int[] ACCEL_SCALING = new int[]{16384, 8192, 4096, 2048}; - private int AR = 3; - private int GR = 3; - private int NUMPLOTS = 7; - public String[] PLOTNAMES = new String[]{"Ax", "Ay", "Az", "Temp", "Gx", "Gy", "Gz"}; - private int ADDRESS = 0x68; - private int AK8963_ADDRESS = 0x0C; - private int AK8963_CNTL = 0x0A; - public String name = "Accel/gyro"; - - private I2C i2c; - private ArrayList kalman = new ArrayList<>(); - private ArrayList gyroRange = new ArrayList<>(Arrays.asList(250, 500, 1000, 2000)); - private ArrayList accelRange = new ArrayList<>(Arrays.asList(2, 4, 8, 16)); - private double[] kalmanFilter = new double[]{.01, .1, 1, 10, 100, 1000, 10000, 0}; //Replaced "OFF" with 0. - - public MPU925x(I2C i2c) throws IOException { - this.i2c = i2c; - setGyroRange(2000); - setAccelRange(16); - powerUp(); - kalman = null; - } - - public void KalmanFilter(Double opt) throws IOException, NullPointerException { - ArrayList noise = new ArrayList<>(); - double[] innerNoiseArray = new double[NUMPLOTS]; - ArrayList vals; - double standardDeviation; - if (opt == 0) { //Replaced "OFF" with 0. - kalman = null; - } - for (int a = 0; a < 500; a++) { - vals = getRaw(); - for (int b = 0; b < NUMPLOTS; b++) { - innerNoiseArray[b] = vals.get(b); - noise.set(b, innerNoiseArray); - } - } - for (int a = 0; a < NUMPLOTS; a++) { - standardDeviation = FastMath.sqrt(StatUtils.variance(noise.get(a))); - kalman.set(a, new KalmanFilter(1. / opt, Math.pow(standardDeviation, 2))); - } - } - - private ArrayList getVals(int addr, int bytestoread) throws IOException { - return i2c.readBulk(ADDRESS, addr, bytestoread); - } - - private void powerUp() throws IOException { - i2c.writeBulk(ADDRESS, new int[]{0x6B, 0}); - } - - public void setGyroRange(int rs) throws IOException { - GR = gyroRange.indexOf(rs); - i2c.writeBulk(ADDRESS, new int[]{GYRO_CONFIG, GR << 3}); - } - - public void setAccelRange(int rs) throws IOException { - AR = accelRange.indexOf(rs); - i2c.writeBulk(ADDRESS, new int[]{ACCEL_CONFIG, AR << 3}); - } - - public ArrayList getRaw() throws IOException, NullPointerException { - ArrayList vals = getVals(0x3B, 14); - ArrayList raw = new ArrayList<>(); - if (vals.size() == 14) { - for (int a = 0; a < 3; a++) - raw.set(a, 1. * (vals.get(a * 2) << 8 | vals.get(a * 2 + 1)) / ACCEL_SCALING[AR]); - for (int a = 4; a < 7; a++) - raw.set(a, (vals.get(a * 2) << 8 | vals.get(a * 2 + 1)) / GYRO_SCALING[GR]); - raw.set(3, 1. * (vals.get(6) << 8 | vals.get(7)) / 340. + 36.53); - if (kalman.isEmpty()) - return raw; - else { - for (int b = 0; b < NUMPLOTS; b++) { - kalman.get(b).inputLatestNoisyMeasurement(raw.get(b)); - raw.set(b, kalman.get(b).getLatestEstimatedMeasurement()); - } - return raw; - } - } - return null; - } - - public double[] getAcceleration() throws IOException { - //Return a list of 3 values for acceleration vector - ArrayList vals = getVals(0x3B, 6); - int ax = vals.get(0) << 8 | vals.get(1); - int ay = vals.get(2) << 8 | vals.get(3); - int az = vals.get(4) << 8 | vals.get(5); - return new double[]{ax / 65535., ay / 65535., az / 65535.}; - } - - public double getTemperature() throws IOException { - //Return temperature - ArrayList vals = getVals(0x41, 6); - int t = vals.get(0) << 8 | vals.get(1); - return t / 65535.; - } - - public double[] getGyroscope() throws IOException { - //Return a list of 3 values for angular velocity vector - ArrayList vals = getVals(0x43, 6); - int ax = vals.get(0) << 8 | vals.get(1); - int ay = vals.get(2) << 8 | vals.get(3); - int az = vals.get(4) << 8 | vals.get(5); - return new double[]{ax / 65535., ay / 65535., az / 65535.}; - - } - - public double[] getMagneticField() throws IOException { - //Return a list of 3 values for magnetic field vector - ArrayList vals = i2c.readBulk(AK8963_ADDRESS, 0X03, 7); - int ax = vals.get(0) << 8 | vals.get(1); - int ay = vals.get(2) << 8 | vals.get(3); - int az = vals.get(4) << 8 | vals.get(5); - if ((vals.get(6) & 0x08) != 0) { - return new double[]{ax / 65535., ay / 65535., az / 65535.}; - } else - return null; - } - - public String whoAmI() throws IOException { - /* - Returns the ID . - It is 71 for MPU9250 . - */ - int v = i2c.readBulk(ADDRESS, 0x75, 1).get(0); - if (v != 0x71 && v != 0x73) - return "Error " + Integer.toHexString(v); - if (v == 0x73) - return "MPU9255 " + Integer.toHexString(v); - else if (v == 0x71) - return "MPU9250 " + Integer.toHexString(v); - else - return null; - } - - public String whoAmIAK8963() throws IOException { - /* - Returns the ID fo magnetometer AK8963 if found. - It should be 0x48. - */ - initMagnetometer(); - int v = i2c.readBulk(AK8963_ADDRESS, 0, 1).get(0); - if (v == 0x48) - return "AK8963 " + Integer.toHexString(v); - else - return "AK8963 not found. returned " + Integer.toHexString(v); - } - - private void initMagnetometer() throws IOException { - /* - For MPU925x with integrated magnetometer. - It's called a 10 DoF sensor, but technically speaking , - the 3-axis Accel , 3-Axis Gyro, temperature sensor are integrated in one IC, - and the 3-axis magnetometer is implemented in a - separate IC which can be accessed via an I2C passthrough. - Therefore , in order to detect the magnetometer via an I2C scan, - the passthrough must first be enabled on IC#1 (Accel,gyro,temp) - */ - i2c.writeBulk(ADDRESS, new int[]{INT_PIN_CFG, 0x22}); //I2C passthrough - i2c.writeBulk(AK8963_ADDRESS, new int[]{AK8963_CNTL, 0}); //power down mag - i2c.writeBulk(AK8963_ADDRESS, new int[]{AK8963_CNTL, (1 << 4) | 6}); //mode (0 = 14bits, 1 = 16bits) << 4 | (2 = 8Hz, 6 = 100Hz) - } - -} - - diff --git a/app/src/main/java/io/pslab/communication/sensors/SHT21.java b/app/src/main/java/io/pslab/communication/sensors/SHT21.java deleted file mode 100644 index bd768bb40..000000000 --- a/app/src/main/java/io/pslab/communication/sensors/SHT21.java +++ /dev/null @@ -1,115 +0,0 @@ -package io.pslab.communication.sensors; - -import android.util.Log; - -import io.pslab.communication.ScienceLab; -import io.pslab.communication.peripherals.I2C; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.concurrent.TimeUnit; - -/** - * Created by akarshan on 4/16/17. - */ - -public class SHT21 { - private String TAG = "SHT21"; - private int RESET = 0XFE; - private int TEMP_ADDRESS = 0xF3; - private int HUMIDITY_ADDRESS = 0xF5; - private int selected = 0xF3; - private int ADDRESS = 0x40; - - public int NUMPLOTS = 1; - public String[] PLOTNAMES = {"Data"}; - public String name = "Humidity/Temperature"; - - public ArrayList selectParameter = new ArrayList<>(Arrays.asList("temperature", "humidity")); - private I2C i2c; - - public SHT21(I2C i2c, ScienceLab scienceLab) throws IOException, InterruptedException { - this.i2c = i2c; - if (scienceLab.isConnected()) { - init(); - } - } - - private void init() throws IOException, InterruptedException { - i2c.writeBulk(ADDRESS, new int[]{RESET}); //soft reset - TimeUnit.MILLISECONDS.sleep(100); - } - - private ArrayList rawToTemp(ArrayList vals) { - double v; - ArrayList v1 = new ArrayList<>(); - if (vals.size() != 0) { - v = (vals.get(0) << 8) | (vals.get(1) & 0xFC); - v *= 175.72; - v /= (1 << 16); - v -= 46.85; - v1.add(v); - return v1; - } else return null; - } - - private ArrayList rawToRH(ArrayList vals) { - double v; - ArrayList v1 = new ArrayList<>(); - if (vals.size() != 0) { - v = (vals.get(0) << 8) | (vals.get(1) & 0xFC); - v *= 125.; - v /= (1 << 16); - v -= 6; - v1.add(v); - return v1; - } else return null; - } - - private static int calculateChecksum(ArrayList data, int numberOfBytes) { - - //CRC - int POLYNOMIAL = 0x131, byteCtr, crc = 0; - //calculates 8-Bit checksum with given polynomial - for (byteCtr = 0; byteCtr < numberOfBytes; byteCtr++) { - crc ^= data.get(byteCtr); - for (int bit = 8; bit > 0; bit--) { - if ((crc & 0X80) != 0) - crc = (crc << 1) ^ POLYNOMIAL; - else - crc = crc << 1; - } - } - return crc; - } - - public void selectParameter(String param) { - if (param.equals("temperature")) - selected = TEMP_ADDRESS; - else if (param.equals("humidity")) - selected = HUMIDITY_ADDRESS; - } - - public ArrayList getRaw() throws IOException, InterruptedException { - ArrayList vals; - i2c.writeBulk(ADDRESS, new int[]{selected}); - if (selected == TEMP_ADDRESS) - TimeUnit.MILLISECONDS.sleep(100); - else if (selected == HUMIDITY_ADDRESS) - TimeUnit.MILLISECONDS.sleep(50); - vals = i2c.simpleRead(ADDRESS, 3); - if (vals.size() != 0) { - if (calculateChecksum(vals, 2) != vals.get(2)) - Log.v(TAG, vals.toString()); - return null; - } - if (selected == TEMP_ADDRESS) - return rawToTemp(vals); - else if (selected == HUMIDITY_ADDRESS) - return rawToRH(vals); - else - return null; - } - -} diff --git a/app/src/main/java/io/pslab/communication/sensors/SSD1306.java b/app/src/main/java/io/pslab/communication/sensors/SSD1306.java deleted file mode 100644 index fc2622da9..000000000 --- a/app/src/main/java/io/pslab/communication/sensors/SSD1306.java +++ /dev/null @@ -1,463 +0,0 @@ -package io.pslab.communication.sensors; - -import io.pslab.communication.peripherals.I2C; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.concurrent.TimeUnit; - -import static java.lang.Math.abs; - -/** - * Created by akarshan on 4/20/17. - *

- * // functions that are needed to be handled in ScienceLab.java - * load("logo"); - * scroll("topright"); - * TimeUnit.MILLISECONDS.sleep(2800); - * scroll("stop"); - *

- * ScienceLab instance of i2c needs to be passed to SSD1306 class constructor - */ - -public class SSD1306 { - private int ADDRESS = 0x3C; - private ArrayList load = new ArrayList<>(Collections.singletonList("logo")); - private ArrayList scroll = new ArrayList<>(Arrays.asList("left", "right, ", "topright", "topleft", "bottomleft", "bottomright", "stop")); - public int NUMPLOTS = 0; - public String[] PLOTNAMES = {""}; - public String name = "OLED Display"; - - private int width = 128; - private int height = 64; - - private int rotation = 0; - private int cursorY = 0; - private int cursorX = 0; - private int textSize = 1; - private int textColor = 1; - private int textbgColor = 0; - private boolean wrap = true; - - private int SSD1306_128_64 = 1; - private int SSD1306_128_32 = 2; - private int SSD1306_96_16 = 3; - - private int DISPLAY_TYPE = SSD1306_96_16; - - private int SSD1306_LCDWIDTH = 128; - private int SSD1306_LCDHEIGHT = 64; - - private int SSD1306_SETCONTRAST = 0x81; - private int SSD1306_DISPLAYALLON_RESUME = 0xA4; - private int SSD1306_DISPLAYALLON = 0xA5; - private int SSD1306_NORMALDISPLAY = 0xA6; - private int SSD1306_INVERTDISPLAY = 0xA7; - private int SSD1306_DISPLAYOFF = 0xAE; - private int SSD1306_DISPLAYON = 0xAF; - - private int SSD1306_SETDISPLAYOFFSET = 0xD3; - private int SSD1306_SETCOMPINS = 0xDA; - - private int SSD1306_SETVCOMDETECT = 0xDB; - - private int SSD1306_SETDISPLAYCLOCKDIV = 0xD5; - private int SSD1306_SETPRECHARGE = 0xD9; - - private int SSD1306_SETMULTIPLEX = 0xA8; - - private int SSD1306_SETLOWCOLUMN = 0x00; - private int SSD1306_SETHIGHCOLUMN = 0x10; - - private int SSD1306_SETSTARTLINE = 0x40; - - private int SSD1306_MEMORYMODE = 0x20; - - private int SSD1306_COMSCANINC = 0xC0; - private int SSD1306_COMSCANDEC = 0xC8; - - private int SSD1306_SEGREMAP = 0xA0; - - private int SSD1306_CHARGEPUMP = 0x8D; - - private int SSD1306_EXTERNALVCC = 0x1; - private int SSD1306_SWITCHCAPVCC = 0x2; - - private int[] logobuff = {255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 127, 127, 63, 63, 159, 159, 223, 223, 207, 207, 207, 239, 239, 47, 47, 39, 39, 7, 7, 67, 67, 83, 131, 135, 7, 7, 15, 15, 31, 191, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 63, 31, 15, 199, 99, 17, 25, 12, 4, 2, 3, 7, 63, 255, 255, 255, 255, 255, 255, 255, 255, 254, 252, 240, 224, 224, 224, 192, 192, 128, 128, 128, 128, 129, 128, 0, 0, 0, 0, 0, 3, 3, 7, 31, 127, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 127, 15, 3, 192, 120, 134, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 252, 252, 249, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 143, 0, 0, 124, 199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 240, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 240, 128, 0, 7, 56, 96, 128, 0, 0, 0, 0, 0, 0, 0, 12, 63, 255, 127, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 31, 7, 227, 243, 249, 249, 249, 249, 249, 249, 243, 255, 255, 199, 131, 49, 57, 57, 57, 121, 115, 255, 255, 255, 255, 15, 15, 159, 207, 207, 207, 143, 31, 63, 255, 255, 159, 207, 207, 207, 143, 31, 63, 255, 255, 255, 15, 15, 159, 207, 207, 207, 255, 255, 0, 0, 255, 127, 63, 159, 207, 239, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 248, 240, 224, 129, 2, 4, 8, 16, 32, 96, 64, 128, 128, 135, 30, 115, 207, 159, 255, 255, 255, 255, 127, 63, 31, 31, 31, 31, 31, 31, 31, 7, 7, 7, 127, 127, 127, 127, 127, 127, 255, 255, 255, 255, 252, 240, 227, 231, 207, 207, 207, 207, 207, 207, 231, 255, 255, 231, 207, 207, 207, 207, 207, 198, 224, 240, 255, 255, 255, 0, 0, 231, 207, 207, 207, 199, 224, 240, 255, 225, 193, 204, 204, 204, 228, 192, 192, 255, 255, 255, 192, 192, 255, 255, 255, 255, 255, 255, 192, 192, 252, 248, 243, 231, 207, 223, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 252, 248, 248, 240, 240, 224, 225, 225, 193, 193, 195, 195, 195, 195, 195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 62, 62, 62, 62, 62, 255, 243, 3, 3, 51, 51, 51, 19, 135, 239, 255, 255, 63, 63, 159, 159, 159, 159, 63, 127, 255, 255, 255, 63, 31, 159, 159, 159, 31, 252, 252, 255, 63, 63, 159, 159, 159, 159, 63, 127, 255, 255, 255, 223, 159, 159, 159, 31, 127, 255, 255, 255, 255, 223, 31, 31, 191, 159, 159, 159, 255, 255, 127, 63, 159, 159, 159, 159, 31, 31, 255, 255, 247, 3, 7, 159, 159, 159, 31, 127, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 252, 252, 252, 252, 252, 252, 252, 252, 224, 224, 224, 255, 255, 255, 255, 255, 255, 255, 243, 240, 240, 247, 255, 254, 252, 248, 243, 255, 255, 248, 248, 242, 242, 242, 242, 242, 250, 255, 255, 255, 241, 242, 242, 242, 242, 248, 253, 255, 255, 248, 248, 242, 242, 242, 242, 242, 250, 255, 255, 249, 240, 242, 242, 242, 240, 240, 255, 255, 255, 255, 243, 240, 240, 243, 243, 255, 255, 255, 255, 252, 248, 243, 243, 243, 243, 243, 255, 255, 255, 247, 240, 240, 247, 255, 247, 240, 240, 247, 255}; - private int[] font = {0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x3E, 0x6B, 0x4F, 0x6B, 0x3E, - 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x1C, 0x57, 0x7D, 0x57, 0x1C, - 0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00, 0x18, 0x3C, 0x18, 0x00, 0xFF, 0xE7, 0xC3, 0xE7, 0xFF, - 0x00, 0x18, 0x24, 0x18, 0x00, 0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x30, 0x48, 0x3A, 0x06, 0x0E, - 0x26, 0x29, 0x79, 0x29, 0x26, 0x40, 0x7F, 0x05, 0x05, 0x07, 0x40, 0x7F, 0x05, 0x25, 0x3F, - 0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x08, 0x1C, 0x1C, 0x3E, 0x7F, - 0x14, 0x22, 0x7F, 0x22, 0x14, 0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x06, 0x09, 0x7F, 0x01, 0x7F, - 0x00, 0x66, 0x89, 0x95, 0x6A, 0x60, 0x60, 0x60, 0x60, 0x60, 0x94, 0xA2, 0xFF, 0xA2, 0x94, - 0x08, 0x04, 0x7E, 0x04, 0x08, 0x10, 0x20, 0x7E, 0x20, 0x10, 0x08, 0x08, 0x2A, 0x1C, 0x08, - 0x08, 0x1C, 0x2A, 0x08, 0x08, 0x1E, 0x10, 0x10, 0x10, 0x10, 0x0C, 0x1E, 0x0C, 0x1E, 0x0C, - 0x30, 0x38, 0x3E, 0x38, 0x30, 0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, 0x07, 0x00, 0x07, 0x00, 0x14, 0x7F, 0x14, 0x7F, 0x14, - 0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x23, 0x13, 0x08, 0x64, 0x62, 0x36, 0x49, 0x56, 0x20, 0x50, - 0x00, 0x08, 0x07, 0x03, 0x00, 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00, 0x41, 0x22, 0x1C, 0x00, - 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00, 0x80, 0x70, 0x30, 0x00, - 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, 0x60, 0x60, 0x00, 0x20, 0x10, 0x08, 0x04, 0x02, - 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00, 0x42, 0x7F, 0x40, 0x00, 0x72, 0x49, 0x49, 0x49, 0x46, - 0x21, 0x41, 0x49, 0x4D, 0x33, 0x18, 0x14, 0x12, 0x7F, 0x10, 0x27, 0x45, 0x45, 0x45, 0x39, - 0x3C, 0x4A, 0x49, 0x49, 0x31, 0x41, 0x21, 0x11, 0x09, 0x07, 0x36, 0x49, 0x49, 0x49, 0x36, - 0x46, 0x49, 0x49, 0x29, 0x1E, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x40, 0x34, 0x00, 0x00, - 0x00, 0x08, 0x14, 0x22, 0x41, 0x14, 0x14, 0x14, 0x14, 0x14, 0x00, 0x41, 0x22, 0x14, 0x08, - 0x02, 0x01, 0x59, 0x09, 0x06, 0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x7C, 0x12, 0x11, 0x12, 0x7C, - 0x7F, 0x49, 0x49, 0x49, 0x36, 0x3E, 0x41, 0x41, 0x41, 0x22, 0x7F, 0x41, 0x41, 0x41, 0x3E, - 0x7F, 0x49, 0x49, 0x49, 0x41, 0x7F, 0x09, 0x09, 0x09, 0x01, 0x3E, 0x41, 0x41, 0x51, 0x73, - 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00, 0x41, 0x7F, 0x41, 0x00, 0x20, 0x40, 0x41, 0x3F, 0x01, - 0x7F, 0x08, 0x14, 0x22, 0x41, 0x7F, 0x40, 0x40, 0x40, 0x40, 0x7F, 0x02, 0x1C, 0x02, 0x7F, - 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x7F, 0x09, 0x09, 0x09, 0x06, - 0x3E, 0x41, 0x51, 0x21, 0x5E, 0x7F, 0x09, 0x19, 0x29, 0x46, 0x26, 0x49, 0x49, 0x49, 0x32, - 0x03, 0x01, 0x7F, 0x01, 0x03, 0x3F, 0x40, 0x40, 0x40, 0x3F, 0x1F, 0x20, 0x40, 0x20, 0x1F, - 0x3F, 0x40, 0x38, 0x40, 0x3F, 0x63, 0x14, 0x08, 0x14, 0x63, 0x03, 0x04, 0x78, 0x04, 0x03, - 0x61, 0x59, 0x49, 0x4D, 0x43, 0x00, 0x7F, 0x41, 0x41, 0x41, 0x02, 0x04, 0x08, 0x10, 0x20, - 0x00, 0x41, 0x41, 0x41, 0x7F, 0x04, 0x02, 0x01, 0x02, 0x04, 0x40, 0x40, 0x40, 0x40, 0x40, - 0x00, 0x03, 0x07, 0x08, 0x00, 0x20, 0x54, 0x54, 0x78, 0x40, 0x7F, 0x28, 0x44, 0x44, 0x38, - 0x38, 0x44, 0x44, 0x44, 0x28, 0x38, 0x44, 0x44, 0x28, 0x7F, 0x38, 0x54, 0x54, 0x54, 0x18, - 0x00, 0x08, 0x7E, 0x09, 0x02, 0x18, 0xA4, 0xA4, 0x9C, 0x78, 0x7F, 0x08, 0x04, 0x04, 0x78, - 0x00, 0x44, 0x7D, 0x40, 0x00, 0x20, 0x40, 0x40, 0x3D, 0x00, 0x7F, 0x10, 0x28, 0x44, 0x00, - 0x00, 0x41, 0x7F, 0x40, 0x00, 0x7C, 0x04, 0x78, 0x04, 0x78, 0x7C, 0x08, 0x04, 0x04, 0x78, - 0x38, 0x44, 0x44, 0x44, 0x38, 0xFC, 0x18, 0x24, 0x24, 0x18, 0x18, 0x24, 0x24, 0x18, 0xFC, - 0x7C, 0x08, 0x04, 0x04, 0x08, 0x48, 0x54, 0x54, 0x54, 0x24, 0x04, 0x04, 0x3F, 0x44, 0x24, - 0x3C, 0x40, 0x40, 0x20, 0x7C, 0x1C, 0x20, 0x40, 0x20, 0x1C, 0x3C, 0x40, 0x30, 0x40, 0x3C, - 0x44, 0x28, 0x10, 0x28, 0x44, 0x4C, 0x90, 0x90, 0x90, 0x7C, 0x44, 0x64, 0x54, 0x4C, 0x44, - 0x00, 0x08, 0x36, 0x41, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x41, 0x36, 0x08, 0x00, - 0x02, 0x01, 0x02, 0x04, 0x02, 0x3C, 0x26, 0x23, 0x26, 0x3C, 0x1E, 0xA1, 0xA1, 0x61, 0x12, - 0x3A, 0x40, 0x40, 0x20, 0x7A, 0x38, 0x54, 0x54, 0x55, 0x59, 0x21, 0x55, 0x55, 0x79, 0x41, - 0x21, 0x54, 0x54, 0x78, 0x41, 0x21, 0x55, 0x54, 0x78, 0x40, 0x20, 0x54, 0x55, 0x79, 0x40, - 0x0C, 0x1E, 0x52, 0x72, 0x12, 0x39, 0x55, 0x55, 0x55, 0x59, 0x39, 0x54, 0x54, 0x54, 0x59, - 0x39, 0x55, 0x54, 0x54, 0x58, 0x00, 0x00, 0x45, 0x7C, 0x41, 0x00, 0x02, 0x45, 0x7D, 0x42, - 0x00, 0x01, 0x45, 0x7C, 0x40, 0xF0, 0x29, 0x24, 0x29, 0xF0, 0xF0, 0x28, 0x25, 0x28, 0xF0, - 0x7C, 0x54, 0x55, 0x45, 0x00, 0x20, 0x54, 0x54, 0x7C, 0x54, 0x7C, 0x0A, 0x09, 0x7F, 0x49, - 0x32, 0x49, 0x49, 0x49, 0x32, 0x32, 0x48, 0x48, 0x48, 0x32, 0x32, 0x4A, 0x48, 0x48, 0x30, - 0x3A, 0x41, 0x41, 0x21, 0x7A, 0x3A, 0x42, 0x40, 0x20, 0x78, 0x00, 0x9D, 0xA0, 0xA0, 0x7D, - 0x39, 0x44, 0x44, 0x44, 0x39, 0x3D, 0x40, 0x40, 0x40, 0x3D, 0x3C, 0x24, 0xFF, 0x24, 0x24, - 0x48, 0x7E, 0x49, 0x43, 0x66, 0x2B, 0x2F, 0xFC, 0x2F, 0x2B, 0xFF, 0x09, 0x29, 0xF6, 0x20, - 0xC0, 0x88, 0x7E, 0x09, 0x03, 0x20, 0x54, 0x54, 0x79, 0x41, 0x00, 0x00, 0x44, 0x7D, 0x41, - 0x30, 0x48, 0x48, 0x4A, 0x32, 0x38, 0x40, 0x40, 0x22, 0x7A, 0x00, 0x7A, 0x0A, 0x0A, 0x72, - 0x7D, 0x0D, 0x19, 0x31, 0x7D, 0x26, 0x29, 0x29, 0x2F, 0x28, 0x26, 0x29, 0x29, 0x29, 0x26, - 0x30, 0x48, 0x4D, 0x40, 0x20, 0x38, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x38, - 0x2F, 0x10, 0xC8, 0xAC, 0xBA, 0x2F, 0x10, 0x28, 0x34, 0xFA, 0x00, 0x00, 0x7B, 0x00, 0x00, - 0x08, 0x14, 0x2A, 0x14, 0x22, 0x22, 0x14, 0x2A, 0x14, 0x08, 0xAA, 0x00, 0x55, 0x00, 0xAA, - 0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x10, 0x10, 0x10, 0xFF, 0x00, - 0x14, 0x14, 0x14, 0xFF, 0x00, 0x10, 0x10, 0xFF, 0x00, 0xFF, 0x10, 0x10, 0xF0, 0x10, 0xF0, - 0x14, 0x14, 0x14, 0xFC, 0x00, 0x14, 0x14, 0xF7, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, - 0x14, 0x14, 0xF4, 0x04, 0xFC, 0x14, 0x14, 0x17, 0x10, 0x1F, 0x10, 0x10, 0x1F, 0x10, 0x1F, - 0x14, 0x14, 0x14, 0x1F, 0x00, 0x10, 0x10, 0x10, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x10, - 0x10, 0x10, 0x10, 0x1F, 0x10, 0x10, 0x10, 0x10, 0xF0, 0x10, 0x00, 0x00, 0x00, 0xFF, 0x10, - 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0xFF, 0x10, 0x00, 0x00, 0x00, 0xFF, 0x14, - 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x1F, 0x10, 0x17, 0x00, 0x00, 0xFC, 0x04, 0xF4, - 0x14, 0x14, 0x17, 0x10, 0x17, 0x14, 0x14, 0xF4, 0x04, 0xF4, 0x00, 0x00, 0xFF, 0x00, 0xF7, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0xF7, 0x00, 0xF7, 0x14, 0x14, 0x14, 0x17, 0x14, - 0x10, 0x10, 0x1F, 0x10, 0x1F, 0x14, 0x14, 0x14, 0xF4, 0x14, 0x10, 0x10, 0xF0, 0x10, 0xF0, - 0x00, 0x00, 0x1F, 0x10, 0x1F, 0x00, 0x00, 0x00, 0x1F, 0x14, 0x00, 0x00, 0x00, 0xFC, 0x14, - 0x00, 0x00, 0xF0, 0x10, 0xF0, 0x10, 0x10, 0xFF, 0x10, 0xFF, 0x14, 0x14, 0x14, 0xFF, 0x14, - 0x10, 0x10, 0x10, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, - 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x38, 0x44, 0x44, 0x38, 0x44, 0x7C, 0x2A, 0x2A, 0x3E, 0x14, - 0x7E, 0x02, 0x02, 0x06, 0x06, 0x02, 0x7E, 0x02, 0x7E, 0x02, 0x63, 0x55, 0x49, 0x41, 0x63, - 0x38, 0x44, 0x44, 0x3C, 0x04, 0x40, 0x7E, 0x20, 0x1E, 0x20, 0x06, 0x02, 0x7E, 0x02, 0x02, - 0x99, 0xA5, 0xE7, 0xA5, 0x99, 0x1C, 0x2A, 0x49, 0x2A, 0x1C, 0x4C, 0x72, 0x01, 0x72, 0x4C, - 0x30, 0x4A, 0x4D, 0x4D, 0x30, 0x30, 0x48, 0x78, 0x48, 0x30, 0xBC, 0x62, 0x5A, 0x46, 0x3D, - 0x3E, 0x49, 0x49, 0x49, 0x00, 0x7E, 0x01, 0x01, 0x01, 0x7E, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, - 0x44, 0x44, 0x5F, 0x44, 0x44, 0x40, 0x51, 0x4A, 0x44, 0x40, 0x40, 0x44, 0x4A, 0x51, 0x40, - 0x00, 0x00, 0xFF, 0x01, 0x03, 0xE0, 0x80, 0xFF, 0x00, 0x00, 0x08, 0x08, 0x6B, 0x6B, 0x08, - 0x36, 0x12, 0x36, 0x24, 0x36, 0x06, 0x0F, 0x09, 0x0F, 0x06, 0x00, 0x00, 0x18, 0x18, 0x00, - 0x00, 0x00, 0x10, 0x10, 0x00, 0x30, 0x40, 0xFF, 0x01, 0x01, 0x00, 0x1F, 0x01, 0x01, 0x1E, - 0x00, 0x19, 0x1D, 0x17, 0x12, 0x00, 0x3C, 0x3C, 0x3C, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00}; //ascii fonts - - private int[] buff; - private I2C i2c; - - public SSD1306(I2C i2c) throws IOException, InterruptedException { - - this.i2c = i2c; - - buff = new int[1024]; - Arrays.fill(buff, 0); - SSD1306_command(SSD1306_DISPLAYOFF); //0xAE - SSD1306_command(SSD1306_SETDISPLAYCLOCKDIV); // 0xD5 - SSD1306_command(0x80); // the suggested ratio 0x80 - SSD1306_command(SSD1306_SETMULTIPLEX); // 0xA8 - SSD1306_command(0x3F); - SSD1306_command(SSD1306_SETDISPLAYOFFSET); // 0xD3 - SSD1306_command(0x0); // no offset - SSD1306_command(SSD1306_SETSTARTLINE | 0x0); // line //0 - SSD1306_command(SSD1306_CHARGEPUMP); // 0x8D - SSD1306_command(0x14); //vccstate = SSD1306_SWITCHCAPVCC; - SSD1306_command(SSD1306_MEMORYMODE); // 0x20 - SSD1306_command(0x00); // 0x0 act like ks0108 - SSD1306_command(SSD1306_SEGREMAP | 0x1); - SSD1306_command(SSD1306_COMSCANDEC); - SSD1306_command(SSD1306_SETCOMPINS); // 0xDA - SSD1306_command(0x12); - SSD1306_command(SSD1306_SETCONTRAST); // 0x81 - SSD1306_command(0xFF); // vccstate = SSD1306_SWITCHCAPVCC; - SSD1306_command(SSD1306_SETPRECHARGE); // 0xd9 - SSD1306_command(0xF1); // vccstate = SSD1306_SWITCHCAPVCC; - SSD1306_command(SSD1306_SETVCOMDETECT); // 0xDB - SSD1306_command(0x40); - SSD1306_command(SSD1306_DISPLAYALLON_RESUME); // 0xA4 - SSD1306_command(SSD1306_NORMALDISPLAY); // 0xA6 - SSD1306_command(SSD1306_DISPLAYON); //--turn on oled panel - - } - - public void load(String arg) throws IOException { - scroll("stop"); - if (arg.equals("logo")) { - clearDisplay(); - System.arraycopy(logobuff, 0, buff, 0, 1024); - displayOLED(); - } - } - - private void SSD1306_command(int cmd) throws IOException { - i2c.writeBulk(ADDRESS, new int[]{0x00, cmd}); - } - - public void SSD1306_data(int data) throws IOException { - i2c.writeBulk(ADDRESS, new int[]{0x40, data}); - } - - private void clearDisplay() { - setCursor(0, 0); - for (int a = 0; a < SSD1306_LCDWIDTH * SSD1306_LCDHEIGHT / 8; a++) - buff[a] = 0; - } - - private void displayOLED() throws IOException { - SSD1306_command(SSD1306_SETLOWCOLUMN | 0x00); - SSD1306_command(SSD1306_SETHIGHCOLUMN | 0x00); - SSD1306_command(SSD1306_SETSTARTLINE | 0x00); - int a = 0; - while (a < SSD1306_LCDWIDTH * SSD1306_LCDHEIGHT / 8) { - i2c.writeBulk(ADDRESS, merge(new int[]{0x40}, Arrays.copyOfRange(buff, a, a + 16))); - a += 16; - } - } - - private int[] merge(int[] arr1, int[] arr2) { - int[] mergedIntegerArray = new int[arr1.length + arr2.length]; - System.arraycopy(arr1, 0, mergedIntegerArray, 0, arr1.length); - System.arraycopy(arr2, 0, mergedIntegerArray, arr1.length, arr2.length); - return mergedIntegerArray; - } - - public void setContrast(int contrast) throws IOException { - SSD1306_command(SSD1306_SETCONTRAST); - SSD1306_command(contrast); - } - - private void drawPixel(int x, int y, int color) { - if (color == 1) - buff[(x + (y / 8) * SSD1306_LCDWIDTH)] |= (1 << (y % 8)); - else - buff[x + (y / 8) * SSD1306_LCDWIDTH] &= ~(1 << (y % 8)); - } - - public void drawCircle(int x0, int y0, int r, int color) { - int f = 1 - r; - int ddF_x = 1; - int ddF_y = -2 * r; - int x = 0; - int y = r; - drawPixel(x0, y0 + r, color); - drawPixel(x0, y0 - r, color); - drawPixel(x0 + r, y0, color); - drawPixel(x0 - r, y0, color); - while (x < y) { - if (f >= 0) { - y -= 1; - ddF_y += 2; - f += ddF_y; - } - x += 1; - ddF_x += 2; - f += ddF_x; - drawPixel(x0 + x, y0 + y, color); - drawPixel(x0 - x, y0 + y, color); - drawPixel(x0 + x, y0 - y, color); - drawPixel(x0 - x, y0 - y, color); - drawPixel(x0 + y, y0 + x, color); - drawPixel(x0 - y, y0 + x, color); - drawPixel(x0 + y, y0 - x, color); - drawPixel(x0 - y, y0 - x, color); - } - } - - private void drawLine(int x0, int y0, int x1, int y1, int color) { - boolean steep = abs(y1 - y0) > abs(x1 - x0); - int tmp, ystep, dx, dy, err; - if (steep) { - tmp = y0; - y0 = x0; - x0 = tmp; - tmp = y1; - y1 = x1; - x1 = tmp; - } - if (x0 > x1) { - tmp = x1; - x1 = x0; - x0 = tmp; - tmp = y1; - y1 = y0; - y0 = tmp; - } - dx = x1 - x0; - dy = abs(y1 - y0); - err = dx / 2; - - if (y0 < y1) - ystep = 1; - else - ystep = -1; - - while (x0 <= x1) { - if (steep) - drawPixel(y0, x0, color); - else - drawPixel(x0, y0, color); - err -= dy; - if (err < 0) { - y0 += ystep; - err += dx; - } - x0 += 1; - } - } - - public void drawRect(int x, int y, int w, int h, int color) { - drawFastHLine(x, y, w, color); - drawFastHLine(x, y + h - 1, w, color); - drawFastVLine(x, y, h, color); - drawFastVLine(x + w + 1, y, h, color); - } - - private void drawFastVLine(int x, int y, int h, int color) { - drawLine(x, y, x, y + h - 1, color); - } - - private void drawFastHLine(int x, int y, int w, int color) { - drawLine(x, y, x + w - 1, y, color); - } - - private void fillRect(int x, int y, int w, int h, int color) { - for (int i = x; i < x + w; i++) - drawFastVLine(i, y, h, color); - } - - public void writeString(String string) { - for (int i = 0; i < string.length(); i++) { - writeChar((int) string.charAt(i)); - } - } - - private void writeChar(int c) { - if (c == '\n') { - cursorY += textSize * 8; - cursorX = 0; - } else if (c == '\r') { - } else { - drawChar(cursorX, cursorY, c, textColor, textbgColor, textSize); - cursorX += textSize * 6; - if (wrap & (cursorX > (width - textSize * 6))) { - cursorY += textSize * 8; - cursorX = 0; - } - } - } - - private void drawChar(int x, int y, int c, int color, int bg, int size) { - int line; - if ((x >= width) | (y >= height) | ((x + 5 * size - 1) < 0) | ((y + 8 * size - 1) < 0)) - return; - for (int i = 0; i < 6; i++) { - if (i == 5) - line = 0x0; - else - line = font[c * 5 + i]; - for (int j = 0; j < 8; j++) { - if ((line & 0x1) > 0) { - if (size == 1) - drawPixel(x + i, y + j, color); - else - fillRect(x + (i * size), y + (j * size), size, size, color); - } else if (bg != color) { - if (size == 1) - drawPixel(x + i, y + j, bg); - else - fillRect(x + i * size, y + j * size, size, size, bg); - } - line >>= 1; - } - } - } - - private void setCursor(int x, int y) { - cursorX = x; - cursorY = y; - } - - public void setTextSize(int size) { - if (size > 0) - textSize = size; - else - textSize = 1; - } - - public void setTextColor(int color, int backgroundcolor) { - textColor = color; - textbgColor = backgroundcolor; - } - - public void setTextWrap(boolean w) { - wrap = w; - } - - public void scroll(String arg) throws IOException { - if (arg.equals("left")) - SSD1306_command(0x27); //up-0x29 ,2A left-0x27 right0x26 - if (arg.equals("right")) - SSD1306_command(0x26); //up-0x29 ,2A left-0x27 right0x26 - if (arg.equals("topright") | arg.equals("bottomright")) - SSD1306_command(0x29); //up-0x29 ,2A left-0x27 right0x26 - if (arg.equals("topleft") | arg.equals("bottomleft")) - SSD1306_command(0x2A); //up-0x29 ,2A left-0x27 right0x26 - if (new ArrayList(Arrays.asList("left", "right", "topright", "topleft", "bottomleft", "bottomright")).contains(arg)) { - SSD1306_command(0x00); //dummy - SSD1306_command(0x0); //start page - SSD1306_command(0x7); //time interval 0b100 - 3 frames - SSD1306_command(0xf); //end page - if (arg.equals("topleft") | arg.equals("topright")) - SSD1306_command(0x02); //dummy 00 . xx for horizontal scroll (speed) - else if (arg.equals("bottomleft") | arg.equals("bottomright")) - SSD1306_command(0xfe); //dummy 00 . xx for horizontal scroll (speed) - else if (arg.equals("left") | arg.equals("right")) { - SSD1306_command(0x02); //dummy 00 . xx for horizontal scroll (speed) - SSD1306_command(0xff); - } - } - SSD1306_command(0x2F); - if (arg.equals("stop")) - SSD1306_command(0x2E); - } - - public void pulseIt() throws InterruptedException, IOException { - for (int a = 0; a < 2; a++) { - SSD1306_command(0xD6); - SSD1306_command(0x01); - TimeUnit.MILLISECONDS.sleep(100); - SSD1306_command(0xD6); - SSD1306_command(0x00); - TimeUnit.MILLISECONDS.sleep(100); - } - } -} diff --git a/app/src/main/java/io/pslab/communication/sensors/Sx1276.java b/app/src/main/java/io/pslab/communication/sensors/Sx1276.java deleted file mode 100644 index 093c4b1cb..000000000 --- a/app/src/main/java/io/pslab/communication/sensors/Sx1276.java +++ /dev/null @@ -1,453 +0,0 @@ -package io.pslab.communication.sensors; - -import android.util.Log; - -import io.pslab.communication.peripherals.SPI; - -import java.io.IOException; -import java.util.ArrayList; - -/** - * Created by Padmal on 6/12/17. - */ - -public class Sx1276 { - - private String name = "SX1276"; - // Registers - private int REG_FIFO = 0x00; - private int REG_OP_MODE = 0x01; - private int REG_FRF_MSB = 0x06; - private int REG_FRF_MID = 0x07; - private int REG_FRF_LSB = 0x08; - private int REG_PA_CONFIG = 0x09; - private int REG_LNA = 0x0c; - private int REG_FIFO_ADDR_PTR = 0x0d; - private int REG_FIFO_TX_BASE_ADDR = 0x0e; - private int REG_FIFO_RX_BASE_ADDR = 0x0f; - private int REG_FIFO_RX_CURRENT_ADDR = 0x10; - private int REG_IRQ_FLAGS = 0x12; - private int REG_RX_NB_BYTES = 0x13; - private int REG_PKT_RSSI_VALUE = 0x1a; - private int REG_PKT_SNR_VALUE = 0x1b; - private int REG_MODEM_CONFIG_1 = 0x1d; - private int REG_MODEM_CONFIG_2 = 0x1e; - private int REG_PREAMBLE_MSB = 0x20; - private int REG_PREAMBLE_LSB = 0x21; - private int REG_PAYLOAD_LENGTH = 0x22; - private int REG_MODEM_CONFIG_3 = 0x26; - private int REG_RSSI_WIDEBAND = 0x2c; - private int REG_DETECTION_OPTIMIZE = 0x31; - private int REG_DETECTION_THRESHOLD = 0x37; - private int REG_SYNC_WORD = 0x39; - private int REG_DIO_MAPPING_1 = 0x40; - private int REG_VERSION = 0x42; - private int REG_PA_DAC = 0x4D; - // Modes - private int MODE_LONG_RANGE_MODE = 0x80; - private int MODE_SLEEP = 0x00; - private int MODE_STDBY = 0x01; - private int MODE_TX = 0x03; - private int MODE_RX_CONTINUOUS = 0x05; - private int MODE_RX_SINGLE = 0x06; - // PA config - private int PA_BOOST = 0x80; - // IRQ masks - private int IRQ_TX_DONE_MASK = 0x08; - private int IRQ_PAYLOAD_CRC_ERROR_MASK = 0x20; - private int IRQ_RX_DONE_MASK = 0x40; - - private int MAX_PKT_LENGTH = 255; - private int PA_OUTPUT_RFO_PIN = 0; - private int PA_OUTPUT_PA_BOOST_PIN = 1; - private int onReceive = 0; - private int frequency = 10; - private int packetIndex = 0; - private int packetLength = 0; - private int version = 0; - private int implicitHeaderMode = 0; - - private SPI spi; - private ArrayList bytes = new ArrayList<>(); - - public Sx1276(SPI spi, int frequency, int power, boolean boost, double bw, int sf, int cf) throws IOException { - initiateSX1276(spi, frequency); - // Output Power 17dbm - setTxPower(power, boost ? PA_OUTPUT_PA_BOOST_PIN : PA_OUTPUT_RFO_PIN); - idle(); - // Set bandwidth - setSignalBandwidth(bw); - setSpreadingFactor(sf); - setCodingRate4(cf); - } - - public Sx1276(SPI spi, int frequency) throws IOException { - - initiateSX1276(spi, frequency); - // Output Power 17dbm - setTxPower(17, PA_OUTPUT_RFO_PIN); - idle(); - // Set bandwidth - setSignalBandwidth(125e3); - setSpreadingFactor(12); - setCodingRate4(5); - } - - private void initiateSX1276(SPI spi, int frequency) throws IOException { - - this.spi = spi; - this.spi.setParameters(2, 6, 1, 0, 1); - this.frequency = frequency; - this.name = "SX1276"; - - reset(); - - this.version = SPIRead(REG_VERSION, 1).get(0); - if (version != 0x12) { - Log.d(name, "Version error " + version); - } - sleep(); - setFrequency(frequency); - // Set base address - setupBytesArray(0); - SPIWrite(REG_FIFO_TX_BASE_ADDR, bytes); - SPIWrite(REG_FIFO_RX_BASE_ADDR, bytes); - // Set LNA boost - setupBytesArray(SPIRead(REG_LNA, 1).get(0) | 0x03); - SPIWrite(REG_LNA, bytes); - // Set auto ADC - setupBytesArray(0x04); - SPIWrite(REG_MODEM_CONFIG_3, bytes); - } - - private void reset() { - /**/ - } - - private ArrayList SPIRead(int adr, int total_bytes) throws IOException { - // CS1 => 9 - ArrayList data = new ArrayList<>(); - data.add((byte) adr); - for (int i = 0; i < total_bytes; i++) { - data.add((byte) 0); - } - data.remove(0); - return spi.xfer(9, data); - } - - private void beginPacket(boolean implicitHeader) throws IOException { - idle(); - if (implicitHeader) { - implicitHeaderMode(); - } else { - explicitHeaderMode(); - } - // reset FIFO & payload length - bytes.clear(); - bytes.add((byte) 0); - SPIWrite(REG_FIFO_ADDR_PTR, bytes); - SPIWrite(REG_PAYLOAD_LENGTH, bytes); - } - - private void endPacket() throws InterruptedException, IOException { - // put in TX mode - bytes.clear(); - bytes.add((byte) (MODE_LONG_RANGE_MODE | MODE_TX)); - SPIWrite(REG_OP_MODE, bytes); - - while (true) { // Wait for TX done - if ((SPIRead(REG_IRQ_FLAGS, 1).get(0) & IRQ_TX_DONE_MASK) == 1) { - break; - } else { - Thread.sleep(100); - } - } - setupBytesArray(IRQ_TX_DONE_MASK); - SPIWrite(REG_IRQ_FLAGS, bytes); - } - - private int parsePacket(int size) throws IOException { - packetLength = 0; - int irqFlags = SPIRead(REG_IRQ_FLAGS, 1).get(0); - if (size > 0) { - implicitHeaderMode(); - setupBytesArray(size & 0xFF); - SPIWrite(REG_PAYLOAD_LENGTH, bytes); - } else { - explicitHeaderMode(); - } - setupBytesArray(irqFlags); - SPIWrite(REG_IRQ_FLAGS, bytes); - - if (((irqFlags & IRQ_RX_DONE_MASK) == 1) && ((irqFlags & IRQ_PAYLOAD_CRC_ERROR_MASK) == 0)) { - packetIndex = 0; - if (implicitHeaderMode == 1) { - packetLength = SPIRead(REG_PAYLOAD_LENGTH, 1).get(0); - } else { - packetLength = SPIRead(REG_RX_NB_BYTES, 1).get(0); - } - SPIWrite(REG_FIFO_ADDR_PTR, SPIRead(REG_FIFO_RX_CURRENT_ADDR, 1)); - idle(); - } else if (SPIRead(REG_OP_MODE, 1).get(0) != (MODE_LONG_RANGE_MODE | MODE_RX_SINGLE)) { - setupBytesArray(0); - SPIWrite(REG_FIFO_ADDR_PTR, bytes); - setupBytesArray(MODE_LONG_RANGE_MODE | MODE_RX_SINGLE); - SPIWrite(REG_OP_MODE, bytes); - } - return packetLength; - } - - private int packetRssi() throws IOException { - return SPIRead(REG_PKT_RSSI_VALUE, 1).get(0) - ((frequency < 868e6) ? 164 : 157); - } - - private double packetSnr() throws IOException { - return SPIRead(REG_PKT_SNR_VALUE, 1).get(0) * 0.25; - } - - public int write(ArrayList byteArray) throws IOException { - int size = byteArray.size(); - int currentLength = SPIRead(REG_PAYLOAD_LENGTH, 1).get(0); - if ((currentLength + size) > MAX_PKT_LENGTH) { - size = MAX_PKT_LENGTH - currentLength; - } - SPIWrite(REG_FIFO, (ArrayList) byteArray.subList(0, size)); - setupBytesArray(currentLength + size); - SPIWrite(REG_PAYLOAD_LENGTH, bytes); - return size; - } - - public boolean available() throws IOException { - return (SPIRead(REG_RX_NB_BYTES, 1).get(0) - packetIndex) == 1; - } - - public int checkRx() throws IOException { - byte irqFlags = SPIRead(REG_IRQ_FLAGS, 1).get(0); - if (((irqFlags & IRQ_RX_DONE_MASK) == 1) && ((irqFlags & IRQ_PAYLOAD_CRC_ERROR_MASK) == 0)) { - return 1; - } else { - return 0; - } - } - - public byte read() throws IOException { - if (available()) { - packetIndex++; - return SPIRead(REG_FIFO, 1).get(0); - } else return -1; - } - - public ArrayList readAll() throws IOException { - ArrayList p = new ArrayList<>(); - while (available()) { - p.add(read()); - } - return p; - } - - public byte peek() throws IOException { - if (available()) { - ArrayList currentAddress = SPIRead(REG_FIFO_ADDR_PTR, 1); - byte val = SPIRead(REG_FIFO, 1).get(0); - SPIWrite(REG_FIFO_ADDR_PTR, currentAddress); - return val; - } else { - return -1; - } - } - - public void flush() { - /**/ - } - - public void receive(int size) throws IOException { - if (size > 0) { - implicitHeaderMode(); - setupBytesArray(size & 0xFF); - SPIWrite(REG_PAYLOAD_LENGTH, bytes); - } else { - explicitHeaderMode(); - setupBytesArray(MODE_LONG_RANGE_MODE | MODE_RX_SINGLE); - SPIWrite(REG_OP_MODE, bytes); - } - } - - private void idle() throws IOException { - setupBytesArray(MODE_LONG_RANGE_MODE | MODE_STDBY); - SPIWrite(REG_OP_MODE, bytes); - } - - private void sleep() throws IOException { - setupBytesArray(MODE_LONG_RANGE_MODE | MODE_SLEEP); - SPIWrite(REG_OP_MODE, bytes); - } - - private void setTxPower(int level, int pin) throws IOException { - if (pin == PA_OUTPUT_RFO_PIN) { - if (level < 0) { - level = 0; - } else if (level > 14) { - level = 14; - } - setupBytesArray(0x70 | level); - SPIWrite(REG_PA_CONFIG, bytes); - } else { - if (level < 2) { - level = 2; - } else if (level > 17) { - level = 17; - } - if (level == 17) { - Log.d(name, "max power output"); - setupBytesArray(0x87); - SPIWrite(REG_PA_DAC, bytes); - } else { - setupBytesArray(0x84); - SPIWrite(REG_PA_DAC, bytes); - } - setupBytesArray(PA_BOOST | 0x70 | (level - 2)); - SPIWrite(REG_PA_CONFIG, bytes); - } - Log.d(name, "Power " + SPIRead(REG_PA_CONFIG, 1).get(0)); - } - - private void setFrequency(int frq) throws IOException { - this.frequency = frq; - int frf = (frq << 19) / 32000000; - Log.d(name, "frf = " + frf); - Log.d(name, "freq = " + ((frf >> 16) & 0xFF) + " " + ((frf >> 8) & 0xFF) + " " + (frf & 0xFF)); - setupBytesArray((frf >> 16) & 0xFF); - SPIWrite(REG_FRF_MSB, bytes); - setupBytesArray((frf >> 8) & 0xFF); - SPIWrite(REG_FRF_MID, bytes); - setupBytesArray(frf & 0xFF); - SPIWrite(REG_FRF_LSB, bytes); - } - - private void setSpreadingFactor(int spreadingFactor) throws IOException { - if (spreadingFactor < 6) { - spreadingFactor = 6; - } else if (spreadingFactor > 12) { - spreadingFactor = 12; - } - - if (spreadingFactor == 6) { - setupBytesArray(0xc5); - SPIWrite(REG_DETECTION_OPTIMIZE, bytes); - setupBytesArray(0x0c); - SPIWrite(REG_DETECTION_THRESHOLD, bytes); - } else { - setupBytesArray(0xc3); - SPIWrite(REG_DETECTION_OPTIMIZE, bytes); - setupBytesArray(0x0a); - SPIWrite(REG_DETECTION_THRESHOLD, bytes); - } - setupBytesArray((SPIRead(REG_MODEM_CONFIG_2, 1).get(0) & 0x0F) | ((spreadingFactor << 4) & 0xF0)); - SPIWrite(REG_MODEM_CONFIG_2, bytes); - } - - private void setSignalBandwidth(double sbw) throws IOException { - int bw = 9; - int num = 0; - double[] referenceList = {7.8e3, 10.4e3, 15.6e3, 20.8e3, 31.25e3, 41.7e3, 62.5e3, 125e3, 250e3}; - for (double item : referenceList) { - if (sbw <= item) { - bw = num; - break; - } - num++; - } - Log.d(name, "Bandwidth " + bw); - setupBytesArray((SPIRead(REG_MODEM_CONFIG_1, 1).get(0) & 0x0F) | (bw << 4)); - SPIWrite(REG_MODEM_CONFIG_1, bytes); - } - - private void setCodingRate4(int denominator) throws IOException { - if (denominator < 5) { - denominator = 5; - } else if (denominator > 8) { - denominator = 8; - } - setupBytesArray((SPIRead(REG_MODEM_CONFIG_1, 1).get(0) & 0xF1) | ((denominator - 4) << 4)); - SPIWrite(REG_MODEM_CONFIG_1, bytes); - } - - public void setPreambleLength(int length) throws IOException { - setupBytesArray((length >> 8) & 0xFF); - SPIWrite(REG_PREAMBLE_MSB, bytes); - setupBytesArray(length & 0xFF); - SPIWrite(REG_PREAMBLE_LSB, bytes); - } - - public void setSyncWord(ArrayList Word) throws IOException { - SPIWrite(REG_SYNC_WORD, Word); - } - - public void crc() throws IOException { - setupBytesArray(SPIRead(REG_MODEM_CONFIG_2, 1).get(0) | 0x04); - SPIWrite(REG_MODEM_CONFIG_2, bytes); - } - - public void noCrc() throws IOException { - setupBytesArray(SPIRead(REG_MODEM_CONFIG_2, 1).get(0) & 0xFB); - SPIWrite(REG_MODEM_CONFIG_2, bytes); - } - - public byte random() throws IOException { - return (SPIRead(REG_RSSI_WIDEBAND, 1).get(0)); - } - - private void explicitHeaderMode() throws IOException { - implicitHeaderMode = 0; - setupBytesArray(SPIRead(REG_MODEM_CONFIG_1, 1).get(0) & 0xFE); - SPIWrite(REG_MODEM_CONFIG_1, bytes); - } - - private void implicitHeaderMode() throws IOException { - implicitHeaderMode = 1; - setupBytesArray(SPIRead(REG_MODEM_CONFIG_1, 1).get(0) | 0x01); - SPIWrite(REG_MODEM_CONFIG_1, bytes); - } - - public void handleDio0Rise() throws IOException { - byte irqFlags = SPIRead(REG_IRQ_FLAGS, 1).get(0); - setupBytesArray(irqFlags); - SPIWrite(REG_IRQ_FLAGS, bytes); - - if ((irqFlags & IRQ_PAYLOAD_CRC_ERROR_MASK) == 0) { - packetIndex = 0; - if (implicitHeaderMode == 0) { - packetLength = SPIRead(REG_PAYLOAD_LENGTH, 1).get(0); - } else { - packetLength = SPIRead(REG_RX_NB_BYTES, 1).get(0); - } - - SPIWrite(REG_FIFO_ADDR_PTR, SPIRead(REG_FIFO_RX_CURRENT_ADDR, 1)); - if (onReceive == 1) { - Log.d(name, "Packet Length " + packetLength); - } - } - - setupBytesArray(0); - SPIWrite(REG_FIFO_ADDR_PTR, bytes); - } - - private ArrayList SPIWrite(int adr, ArrayList byteArray) throws IOException { - // CS1 => 9 - ArrayList data = new ArrayList<>(); - data.add((byte) (0x80 | adr)); - data.addAll(byteArray); - ArrayList XFER = spi.xfer(9, data); - XFER.remove(0); - return XFER; - } - - public ArrayList getRaw() throws IOException { - return SPIRead(0x02, 1); - } - - private void setupBytesArray(int data) { - bytes.clear(); - bytes.add((byte) data); - } -} diff --git a/app/src/main/java/io/pslab/communication/sensors/TSL2561.java b/app/src/main/java/io/pslab/communication/sensors/TSL2561.java deleted file mode 100644 index 53c44ef50..000000000 --- a/app/src/main/java/io/pslab/communication/sensors/TSL2561.java +++ /dev/null @@ -1,124 +0,0 @@ -package io.pslab.communication.sensors; - -import android.util.Log; - -import io.pslab.communication.ScienceLab; -import io.pslab.communication.peripherals.I2C; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.concurrent.TimeUnit; - -/** - * Created by akarshan on 4/15/17. - */ - -public class TSL2561 { - private String TAG = "TSL2561"; - private int VISIBLE = 2; // channel 0 - channel 1 - private int INFRARED = 1; // channel 1 - private int FULLSPECTRUM = 0; // channel 0 - - private int READBIT = 0x01; - private int COMMAND_BIT = 0x80; // Must be 1 - - private int CONTROL_POWERON = 0x03; - private int CONTROL_POWEROFF = 0x00; - - private int REGISTER_CONTROL = 0x00; - private int REGISTER_TIMING = 0x01; - private int REGISTER_ID = 0x0A; - - private int INTEGRATIONTIME_13MS = 0x00; // 13.7ms - private int INTEGRATIONTIME_101MS = 0x01; // 101ms - private int INTEGRATIONTIME_402MS = 0x02; // 402ms - - private int GAIN_1X = 0x00; // No gain - private int GAIN_16X = 0x10; // 16x gain - private int GAIN_OX; - - private int ADDRESS = 0x39; // addr normal - private int timing = INTEGRATIONTIME_13MS; - private int gain = GAIN_16X; - - public String name = "TSL2561 Luminosity"; - public int NUMPLOTS = 3; - public String[] PLOTNAMES = {"Full", "IR", "Visible"}; - - private I2C i2c; - private int full, infra; - private ArrayList infraList, fullList; - private ArrayList setGain = new ArrayList(Arrays.asList("1x", "16x")); - private ArrayList setTiming = new ArrayList(Arrays.asList(0, 1, 2)); - - public TSL2561(I2C i2c, ScienceLab scienceLab) throws IOException, InterruptedException { - this.i2c = i2c; - // set timing 101ms & 16x gain - if (scienceLab.isConnected()) { - enable(); - _wait(); - i2c.writeBulk(ADDRESS, new int[]{0x80 | 0x01, 0x01 | 0x10}); - //full scale luminosity - infraList = i2c.readBulk(ADDRESS, 0x80 | 0x20 | 0x0E, 2); - fullList = i2c.readBulk(ADDRESS, 0x80 | 0x20 | 0x0C, 2); - full = (fullList.get(1) << 8) | fullList.get(0); - infra = (infraList.get(1) << 8) | infraList.get(0); - - Log.v(TAG, "Full - " + Integer.toString(full)); - Log.v(TAG, "Infrared - " + Integer.toString(infra)); - Log.v(TAG, "Visible -" + Integer.toString(full - infra)); - } - } - - public int getID() throws IOException { - ArrayList _ID_ = i2c.readBulk(ADDRESS, REGISTER_ID, 1); - int ID = Integer.parseInt(Character.getNumericValue(_ID_.get(0)) + "", 16); - Log.d("ID", Integer.toString(ID)); - return ID; - } - - public int[] getRaw() throws IOException { - fullList = i2c.readBulk(ADDRESS, 0x80 | 0x20 | 0x0E, 2); - infraList = i2c.readBulk(ADDRESS, 0x80 | 0x20 | 0x0C, 2); - if (!infraList.isEmpty()) { - full = (fullList.get(0) << 8) | fullList.get(0); - infra = (infraList.get(0) << 8) | infraList.get(0); - return (new int[]{full, infra, full - infra}); - } else - return null; - } - - public void setGain(String _gain_) throws IOException { - if (_gain_.equals("1x")) - gain = GAIN_1X; - - else if (_gain_.equals("16x")) - gain = GAIN_16X; - else - gain = GAIN_OX; - i2c.writeBulk(ADDRESS, new int[]{COMMAND_BIT | REGISTER_TIMING, gain | timing}); - } - - public void setTiming(int timing) throws IOException { - Log.v(TAG, new int[]{13, 101, 404}[timing] + "mS"); - this.timing = timing; - i2c.writeBulk(ADDRESS, new int[]{COMMAND_BIT | REGISTER_TIMING, gain | timing}); - } - - private void enable() throws IOException { - i2c.writeBulk(ADDRESS, new int[]{COMMAND_BIT | REGISTER_CONTROL, CONTROL_POWERON}); - } - - public void disable() throws IOException { - i2c.writeBulk(ADDRESS, new int[]{COMMAND_BIT | REGISTER_CONTROL, CONTROL_POWEROFF}); - } - - private void _wait() throws InterruptedException { - if (timing == INTEGRATIONTIME_13MS) TimeUnit.MILLISECONDS.sleep(14); - if (timing == INTEGRATIONTIME_101MS) TimeUnit.MILLISECONDS.sleep(102); - if (timing == INTEGRATIONTIME_402MS) TimeUnit.MILLISECONDS.sleep(403); - - } - -} diff --git a/app/src/main/java/io/pslab/communication/sensors/VL53L0X.java b/app/src/main/java/io/pslab/communication/sensors/VL53L0X.java deleted file mode 100644 index 166c6157d..000000000 --- a/app/src/main/java/io/pslab/communication/sensors/VL53L0X.java +++ /dev/null @@ -1,313 +0,0 @@ -package io.pslab.communication.sensors; - -import android.util.Log; - -import java.io.IOException; -import java.util.ArrayList; - -import io.pslab.communication.ScienceLab; -import io.pslab.communication.peripherals.I2C; - -public class VL53L0X { - - // VL53L0X default address - private static final int ADDRESS = 0x29; - private final I2C i2c; - - // Configuration constants, taken from https://github.com/adafruit/Adafruit_CircuitPython_VL53L0X.git - private static final int SYSRANGE_START = 0x00; - private static final int SYSTEM_SEQUENCE_CONFIG = 0x01; - private static final int SYSTEM_INTERRUPT_CONFIG_GPIO = 0x0A; - private static final int GPIO_HV_MUX_ACTIVE_HIGH = 0x84; - private static final int SYSTEM_INTERRUPT_CLEAR = 0x0B; - private static final int RESULT_INTERRUPT_STATUS = 0x13; - private static final int RESULT_RANGE_STATUS = 0x14; - private static final int MSRC_CONFIG_CONTROL = 0x60; - private static final int GLOBAL_CONFIG_SPAD_ENABLES_REF_0 = 0xB0; - private static final int GLOBAL_CONFIG_REF_EN_START_SELECT = 0xB6; - private static final int DYNAMIC_SPAD_NUM_REQUESTED_REF_SPAD = 0x4E; - private static final int DYNAMIC_SPAD_REF_EN_START_OFFSET = 0x4F; - private static final int DISABLE_SIGNAL_RATE_MSRC = 0x2; - private static final int DISABLE_SIGNAL_RATE_PRE_RANGE = 0x10; - - private static final int[][] SPAD_CONFIG = { - {0xFF, 0x01}, - {DYNAMIC_SPAD_REF_EN_START_OFFSET, 0x00}, - {DYNAMIC_SPAD_NUM_REQUESTED_REF_SPAD, 0x2C}, - {0xFF, 0x00}, - {GLOBAL_CONFIG_REF_EN_START_SELECT, 0xB4} - }; - - private static final int[][] TUNING_CONFIG = { - {0xFF, 0x01}, - {0x00, 0x00}, - {0xFF, 0x00}, - {0x09, 0x00}, - {0x10, 0x00}, - {0x11, 0x00}, - {0x24, 0x01}, - {0x25, 0xFF}, - {0x75, 0x00}, - {0xFF, 0x01}, - {0x4E, 0x2C}, - {0x48, 0x00}, - {0x30, 0x20}, - {0xFF, 0x00}, - {0x30, 0x09}, - {0x54, 0x00}, - {0x31, 0x04}, - {0x32, 0x03}, - {0x40, 0x83}, - {0x46, 0x25}, - {0x60, 0x00}, - {0x27, 0x00}, - {0x50, 0x06}, - {0x51, 0x00}, - {0x52, 0x96}, - {0x56, 0x08}, - {0x57, 0x30}, - {0x61, 0x00}, - {0x62, 0x00}, - {0x64, 0x00}, - {0x65, 0x00}, - {0x66, 0xA0}, - {0xFF, 0x01}, - {0x22, 0x32}, - {0x47, 0x14}, - {0x49, 0xFF}, - {0x4A, 0x00}, - {0xFF, 0x00}, - {0x7A, 0x0A}, - {0x7B, 0x00}, - {0x78, 0x21}, - {0xFF, 0x01}, - {0x23, 0x34}, - {0x42, 0x00}, - {0x44, 0xFF}, - {0x45, 0x26}, - {0x46, 0x05}, - {0x40, 0x40}, - {0x0E, 0x06}, - {0x20, 0x1A}, - {0x43, 0x40}, - {0xFF, 0x00}, - {0x34, 0x03}, - {0x35, 0x44}, - {0xFF, 0x01}, - {0x31, 0x04}, - {0x4B, 0x09}, - {0x4C, 0x05}, - {0x4D, 0x04}, - {0xFF, 0x00}, - {0x44, 0x00}, - {0x45, 0x20}, - {0x47, 0x08}, - {0x48, 0x28}, - {0x67, 0x00}, - {0x70, 0x04}, - {0x71, 0x01}, - {0x72, 0xFE}, - {0x76, 0x00}, - {0x77, 0x00}, - {0xFF, 0x01}, - {0x0D, 0x01}, - {0xFF, 0x00}, - {0x80, 0x01}, - {0x01, 0xF8}, - {0xFF, 0x01}, - {0x8E, 0x01}, - {0x00, 0x01}, - {0xFF, 0x00}, - {0x80, 0x00} - }; - - private static final int MAYBE_TIMER_REG = 0x83; - private static final int[][] SPAD_1 = { - {0x80, 0x01}, - {0xFF, 0x01}, - {0x00, 0x00}, - {0xFF, 0x06} - }; - private static final int[][] SPAD_2 = { - {0xFF, 0x07}, - {0x81, 0x01}, - {0x80, 0x01}, - {0x94, 0x6B}, - {MAYBE_TIMER_REG, 0x00} - }; - private static final int[][] SPAD_3 = { - {0x81, 0x00}, - {0xFF, 0x06} - }; - private static final int[][] SPAD_4 = { - {0xFF, 0x01}, - {0x00, 0x01}, - {0xFF, 0x00}, - {0x80, 0x00} - }; - - private static final int IO_TIMEOUT = 10; - private int stopByte; - - public VL53L0X(I2C i2c, ScienceLab scienceLab) throws Exception { - this.i2c = i2c; - if (scienceLab.isConnected()) { - for (int[] regValPair : new int[][]{ - {0x88, 0x00}, - {0x80, 0x01}, - {0xFF, 0x01}, - {0x00, 0x00} - }) { - i2c.write(ADDRESS, new int[]{regValPair[1]}, regValPair[0]); - } - stopByte = i2c.readByte(ADDRESS, 0x91); - - for (int[] regValPair : new int[][]{ - {0x00, 0x01}, - {0xFF, 0x00}, - {0x80, 0x00} - }) { - i2c.write(ADDRESS, new int[]{regValPair[1]}, regValPair[0]); - } - int configControl = i2c.readByte(ADDRESS, MSRC_CONFIG_CONTROL) | (DISABLE_SIGNAL_RATE_MSRC | DISABLE_SIGNAL_RATE_PRE_RANGE); - - i2c.write(ADDRESS, new int[]{configControl}, MSRC_CONFIG_CONTROL); - - i2c.write(ADDRESS, new int[]{0xFF}, SYSTEM_SEQUENCE_CONFIG); - - spadConfig(); - - for (int[] regValPair : TUNING_CONFIG) { - i2c.write(ADDRESS, new int[]{regValPair[1]}, regValPair[0]); - } - - i2c.write(ADDRESS, new int[]{0x04}, SYSTEM_INTERRUPT_CONFIG_GPIO); - int gpioHvMuxActiveHigh = i2c.readByte(ADDRESS, GPIO_HV_MUX_ACTIVE_HIGH); - i2c.write(ADDRESS, new int[]{gpioHvMuxActiveHigh & ~0x10}, GPIO_HV_MUX_ACTIVE_HIGH); - i2c.write(ADDRESS, new int[]{0x01}, SYSTEM_INTERRUPT_CLEAR); - i2c.write(ADDRESS, new int[]{0xE8}, SYSTEM_SEQUENCE_CONFIG); - - i2c.write(ADDRESS, new int[]{0x01}, SYSTEM_SEQUENCE_CONFIG); - performSingleRefCalibration(0x40); - i2c.write(ADDRESS, new int[]{0x01}, SYSTEM_SEQUENCE_CONFIG); - i2c.write(ADDRESS, new int[]{0x02}, SYSTEM_SEQUENCE_CONFIG); - performSingleRefCalibration(0x00); - - i2c.write(ADDRESS, new int[]{0xE8}, SYSTEM_SEQUENCE_CONFIG); - } - } - - private int[] getSpadInfo() throws Exception { - for (int[] regValPair : SPAD_1) { - i2c.write(ADDRESS, new int[]{regValPair[1]}, regValPair[0]); - } - - int uu = i2c.readByte(ADDRESS, MAYBE_TIMER_REG) | 0x04; - i2c.write(ADDRESS, new int[]{uu}, MAYBE_TIMER_REG); - - for (int[] regValPair : SPAD_2) { - i2c.write(ADDRESS, new int[]{regValPair[1]}, regValPair[0]); - } - - long start = System.currentTimeMillis(); - - while (i2c.readByte(ADDRESS, MAYBE_TIMER_REG) == 0x00) { - if (IO_TIMEOUT > 0 && (System.currentTimeMillis() - start) / 1000.0 >= IO_TIMEOUT) { - Log.e("VL53L0X", "Timeout waiting for VL53L0X!"); - } - } - - i2c.write(ADDRESS, new int[]{0x01}, MAYBE_TIMER_REG); - - int tmp = i2c.readByte(ADDRESS, 0X92); - int count = tmp & 0x7F; - boolean isAperture = ((tmp >> 7) & 0x01) == 1; - - for (int[] regValPair : SPAD_3) { - i2c.write(ADDRESS, new int[]{regValPair[1]}, regValPair[0]); - } - - int vv = i2c.readByte(ADDRESS, MAYBE_TIMER_REG) & ~0x04; - i2c.write(ADDRESS, new int[]{vv}, MAYBE_TIMER_REG); - - for (int[] regValPair : SPAD_4) { - i2c.write(ADDRESS, new int[]{regValPair[1]}, regValPair[0]); - } - return new int[]{count, isAperture ? 1 : 0}; - } - - private void spadConfig() throws Exception { - int[] spadInfo = getSpadInfo(); - int spadCount = spadInfo[0]; - int spadIsAperture = spadInfo[1]; - - i2c.write(ADDRESS, new int[]{0}, GLOBAL_CONFIG_SPAD_ENABLES_REF_0); - ArrayList spadMap = i2c.read(ADDRESS, 6, GLOBAL_CONFIG_SPAD_ENABLES_REF_0); - - for (int[] regValPair : SPAD_CONFIG) { - i2c.write(ADDRESS, new int[]{regValPair[1]}, regValPair[0]); - } - - int firstSpadToEnable = (spadIsAperture == 1) ? 12 : 0; - int spadsEnabled = 0; - - for (int i = 0; i < 48; i++) { - int index = i / 8; - if (i < firstSpadToEnable || spadsEnabled == spadCount) { - spadMap.set(index, spadMap.get(index) & ~(1 << (i % 8))); - } else if (((spadMap.get(index) >> (i % 8)) & 0x1) > 0) { - spadsEnabled++; - } - } - - i2c.write(ADDRESS, spadMap.stream().mapToInt(Integer::intValue).toArray(), GLOBAL_CONFIG_SPAD_ENABLES_REF_0); - } - - private void performSingleRefCalibration(int vhvInitByte) throws Exception { - i2c.write(ADDRESS, new int[]{0x01 | vhvInitByte & 0xFF}, SYSRANGE_START); - long start = System.currentTimeMillis(); - - while ((i2c.readByte(ADDRESS, RESULT_INTERRUPT_STATUS) & 0x07) == 0) { - if (IO_TIMEOUT > 0 && (System.currentTimeMillis() - start) / 1000.0 >= IO_TIMEOUT) { - Log.e("VL53L0X", "Timeout waiting for VL53L0X!"); - } - } - i2c.write(ADDRESS, new int[]{0x01}, SYSTEM_INTERRUPT_CLEAR); - i2c.write(ADDRESS, new int[]{0x00}, SYSRANGE_START); - } - - public int getRaw() throws Exception { - for (int[] regValPair : new int[][]{ - {0x80, 0x01}, - {0xFF, 0x01}, - {0x00, 0x00}, - {0x91, stopByte}, - {0x00, 0x01}, - {0xFF, 0x00}, - {0x80, 0x00}, - {SYSRANGE_START, 0x01} - }) { - i2c.write(ADDRESS, new int[]{regValPair[1]}, regValPair[0]); - } - - long start = System.currentTimeMillis(); - - while ((i2c.readByte(ADDRESS, SYSRANGE_START) & 0x01) > 0) { - if (IO_TIMEOUT > 0 && (System.currentTimeMillis() - start) / 1000.0 >= IO_TIMEOUT) { - Log.e("VL53L0X", "Timeout waiting for VL53L0X!"); - } - } - - start = System.currentTimeMillis(); - - while ((i2c.readByte(ADDRESS, RESULT_INTERRUPT_STATUS) & 0x07) == 0) { - if (IO_TIMEOUT > 0 && (System.currentTimeMillis() - start) / 1000.0 >= IO_TIMEOUT) { - Log.e("VL53L0X", "Timeout waiting for VL53L0X!"); - } - } - - ArrayList data = i2c.read(ADDRESS, 2, RESULT_RANGE_STATUS + 10); - i2c.write(ADDRESS, new int[]{0x01}, SYSTEM_INTERRUPT_CLEAR); - return ((data.get(0) & 0xFF) << 8) | (data.get(1) & 0xFF); - } -} diff --git a/app/src/main/java/io/pslab/filters/BandstopFilter.java b/app/src/main/java/io/pslab/filters/BandstopFilter.java deleted file mode 100644 index d8d7116f0..000000000 --- a/app/src/main/java/io/pslab/filters/BandstopFilter.java +++ /dev/null @@ -1,205 +0,0 @@ -package io.pslab.filters; - -import android.util.Log; - -import org.apache.commons.lang3.ArrayUtils; -import org.apache.commons.math3.analysis.polynomials.PolynomialFunction; -import org.apache.commons.math3.complex.Complex; - - -import java.util.ArrayList; -import java.util.Arrays; - -import static java.lang.Math.cos; -import static java.lang.Math.sin; -import static java.lang.Math.sqrt; -import static java.lang.Math.tan; - -/** - * Created by akarshan on 5/29/17. - */ - -public class BandstopFilter { - private String TAG = "BandStopFilter"; - private double[] a; - private double[] b; - - public BandstopFilter(int order, double[] wn){ - int k = 1; - double z[] = new double[]{}; - Complex p[] = buttap(order); - double[] warped = new double[wn.length]; - double fs = 2.0; - for(int i = 0; i < wn.length; i++) - warped[i] = 2 * fs * tan(Math.PI * wn[i] / fs); - double bw = warped[1] - warped[0]; - double wo = sqrt(warped[0] * warped[1]); - - ArrayList zpklp2bsObjectArray = zpklp2bs(z, p, k, wo, bw); - Complex[] z2 = (Complex[]) zpklp2bsObjectArray.get(0); - p = (Complex[]) zpklp2bsObjectArray.get(1); - k = (int) zpklp2bsObjectArray.get(2); - - ArrayList zpkBilinearObjectArray = zpkBilinear(z2, p, k, fs); - z2 = (Complex[])zpkBilinearObjectArray.get(0); - p = (Complex[])zpkBilinearObjectArray.get(1); - double k2 = (double)zpkBilinearObjectArray.get(2); - - ArrayList zpk2tfArray = zpk2tf(z2, p, k2); - a = zpk2tfArray.get(0); - b = zpk2tfArray.get(1); - } - - private Complex[] buttap(int order){ - /* - Return (z,p,k) for analog prototype of Nth-order Butterworth filter. - The filter will have an angular (e.g. rad/s) cutoff frequency of 1. - */ - ArrayList m = new ArrayList(); - Complex p[]; - if (Math.abs(order) != order) - Log.v(TAG, "Filter order must be a nonnegative integer"); - for(int i = -order + 1; i < order; i = i + 2) - m.add(i); - p = new Complex[m.size()]; - for(int i = 0; i < m.size(); i++) - p[i] = new Complex(-cos(m.get(i) * Math.PI / (2 * order)), -sin(m.get(i) * Math.PI / (2 * order))); - - return p; - } - - private ArrayList zpklp2bs(double[] z, Complex[] p, int k, double wo, double bw){ - int degree = relativeDegree(z, p); - double[] zhp = new double[z.length]; - Complex[] php = new Complex[p.length]; - Complex[] zbs = new Complex[degree * 2]; - Complex[] pbs = new Complex[p.length * 2]; - double zProd = 1; - double pProd = 1; - int kbs; - - // Invert to a highpass filter with desired bandwidth - for(int i = 0; i < z.length; i++) - zhp[i] = (bw / 2) / z[i]; - - Complex numerator = new Complex((bw/2)); - for(int i = 0; i < p.length; i++) - php[i] = numerator.divide(p[i]); - - // Duplicate poles and zeros and shift from baseband to +wo and -wo - int l = 0; - for(int i = 0; i < degree; i++) - zbs[i] = new Complex(0, wo); - for(int i = 0; i < degree; i++) - zbs[degree + i] = new Complex(0, -wo); - for(int i = 0; i < p.length; i++) - pbs[i] = php[i].add((php[i].pow(2).subtract(Math.pow(wo, 2))).sqrt()); - for(int i = 0; i < p.length; i++) - pbs[i + p.length] = php[i].subtract((php[i].pow(2).subtract(Math.pow(wo, 2))).sqrt()); - - // Cancel out gain change caused by inversion - Complex temp = new Complex(1,0); - for (Complex aP : p) temp = temp.multiply(aP.negate()); - - pProd = temp.getReal(); - kbs = (int) (k / pProd); - return new ArrayList(Arrays.asList(zbs, pbs, kbs)); - } - - private ArrayList zpkBilinear(Complex[] z, Complex[] p, int k, double fs){ - //Return a digital filter from an analog one using a bilinear transform. - Complex[] zz = new Complex[z.length]; - Complex[] pz = new Complex[p.length]; - double kz; - relativeDegree(z, p); - double fs2 = 2 * fs; - Complex complexFs2 = new Complex(fs2); - for(int i = 0; i < z.length; i++){ - zz[i] = (complexFs2.add(z[i])).divide(complexFs2.subtract(z[i])); - } - for(int i = 0; i < p.length; i++){ - pz[i] = (complexFs2.add(p[i])).divide(complexFs2.subtract(p[i])); - } - - //rearranging pz - ArrayList pz2 = new ArrayList(); - for (Complex aPz : pz) { - if (!pz2.contains(aPz) && !pz2.contains(aPz.conjugate())) { - pz2.add(aPz); - } - } - - for(int i = 0; i < pz.length / 2; i++) - pz2.add(pz2.get(i).conjugate()); - - Complex [] pzRearranged = pz2.toArray(new Complex[pz.length]); - - Complex temp = new Complex(1,0); - for (Complex aZ : z) temp = temp.multiply(complexFs2.subtract(aZ)); - - - Complex temp2 = new Complex(1,0); - for (Complex aP : p) temp2 = temp2.multiply(complexFs2.subtract(aP)); - - kz = (k * (temp.divide(temp2)).getReal()); - return new ArrayList(Arrays.asList(zz, pzRearranged, kz)); - } - - private ArrayList zpk2tf(Complex[] z, Complex[] p, double k){ - //Return polynomial transfer function representation from zeros and poles - double[] zCoefficients = rootsToPolynomial(z); - double[] bCoefficients = new double[zCoefficients.length]; - - for(int i = 0; i < zCoefficients.length; i++) - bCoefficients[i] = zCoefficients[i] * k; - - double[] aCoefficients = rootsToPolynomial(p); - ArrayUtils.reverse(aCoefficients); - return new ArrayList(Arrays.asList(aCoefficients,bCoefficients)); - } - - private int relativeDegree(double[] z,Complex[] p){ - int degree = p.length - z.length; - if(degree < 0) { - Log.v(TAG, "Improper transfer function."); - return -1; - } - else - return degree; - } - - private int relativeDegree(Complex[] z,Complex[] p){ - int degree = p.length - z.length; - if(degree < 0) { - Log.v(TAG, "Improper transfer function."); - return -1; - } - else - return degree; - } - - private double[] rootsToPolynomial(Complex[] x){ - /* - Returns a double array of coefficients of the polynomial, - assuming the each complex root has it's conjugate in the same array. - */ - PolynomialFunction[] polynomialFunctionArray = new PolynomialFunction[x.length/2]; - PolynomialFunction product = new PolynomialFunction(new double[]{1}); - for(int i = 0; i < x.length / 2; i++){ - PolynomialFunction complexRoot = new PolynomialFunction(new double[]{-x[i].getReal(), 1}); - complexRoot = complexRoot.multiply(complexRoot); - complexRoot = complexRoot.subtract(new PolynomialFunction(new double[]{-1 * x[i].getImaginary() * x[i].getImaginary()})); - System.out.println((complexRoot)); - polynomialFunctionArray[i] = complexRoot; - } - - for (PolynomialFunction aPolynomialFunctionArray : polynomialFunctionArray) - product = aPolynomialFunctionArray.multiply(product); - - return product.getCoefficients(); - } - - public ArrayList abGetter(){ - return new ArrayList(Arrays.asList(b, a)); - } -} diff --git a/app/src/main/java/io/pslab/filters/Lfilter.java b/app/src/main/java/io/pslab/filters/Lfilter.java deleted file mode 100644 index 74f850086..000000000 --- a/app/src/main/java/io/pslab/filters/Lfilter.java +++ /dev/null @@ -1,64 +0,0 @@ -package io.pslab.filters; - -import android.util.Log; - -/** - * Created by akarshan on 6/1/17. - */ - -public class Lfilter { - String TAG = "Lfilter"; - public double[] filter(double[] b, double[] a, double[] x) { - double[] filter = null; - double[] a1 = getRealArrayScalarDiv(a,a[0]); - double[] b1 = getRealArrayScalarDiv(b,a[0]); - int sx = x.length; - filter = new double[sx]; - filter[0] = b1[0]*x[0]; - for (int i = 1; i < sx; i++) { - filter[i] = 0.0; - for (int j = 0; j <= i; j++) { - int k = i-j; - if (j > 0) { - if ((k < b1.length) && (j < x.length)) { - filter[i] += b1[k]*x[j]; - } - if ((k < filter.length) && (j < a1.length)) { - filter[i] -= a1[j]*filter[k]; - } - } else { - if ((k < b1.length) && (j < x.length)) { - filter[i] += (b1[k]*x[j]); - } - } - } - } - return filter; - } - - private double[] getRealArrayScalarDiv(double[] dDividend, double dDivisor) { - if (dDividend == null) - Log.v(TAG, "The array must be defined or different to null"); - if (dDividend.length == 0) { - Log.v(TAG, "The size array must be greater than Zero"); - } - double[] dQuotient = new double[dDividend.length]; - - for (int i = 0; i < dDividend.length; i++) { - if (!(dDivisor == 0.0)) { - dQuotient[i] = dDividend[i]/dDivisor; - } else { - if (dDividend[i] > 0.0) { - dQuotient[i] = Double.POSITIVE_INFINITY; - } - if (dDividend[i] == 0.0) { - dQuotient[i] = Double.NaN; - } - if (dDividend[i] < 0.0) { - dQuotient[i] = Double.NEGATIVE_INFINITY; - } - } - } - return dQuotient; - } -} diff --git a/app/src/main/java/io/pslab/fragment/AboutUsFragment.java b/app/src/main/java/io/pslab/fragment/AboutUsFragment.java deleted file mode 100644 index c9c63d911..000000000 --- a/app/src/main/java/io/pslab/fragment/AboutUsFragment.java +++ /dev/null @@ -1,104 +0,0 @@ -package io.pslab.fragment; - - -import android.content.Intent; -import android.content.res.Configuration; -import android.net.Uri; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.MenuItem; -import android.view.View; -import android.view.ViewGroup; - -import androidx.appcompat.app.AppCompatDelegate; -import androidx.fragment.app.Fragment; - -import com.google.android.material.appbar.AppBarLayout; - -import io.pslab.R; - -import butterknife.BindView; -import butterknife.ButterKnife; -import mehdi.sakout.aboutpage.AboutPage; -import mehdi.sakout.aboutpage.Element; - - -public class AboutUsFragment extends Fragment { - - @BindView(R.id.appBarAnim) - AppBarLayout appBarLayout; - - public static AboutUsFragment newInstance() { - return new AboutUsFragment(); - } - - public AboutUsFragment() { - } - - - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { - View view = inflater.inflate(R.layout.fragment_about_us, container, false); - simulateDayNight(3); - ButterKnife.bind(this, view); - View aboutPage = new AboutPage(getActivity()) - .isRTL(false) - .setImage(R.drawable.logo200x200) - .addWebsite("https://goo.gl/forms/sHlmRAPFmzcGQ27u2", getString(R.string.nav_report)) - .addItem(new Element(getString(R.string.version), R.drawable.ic_widgets_black_24dp)) - .setDescription(getString(R.string.about_us_description)) - .addGroup("Connect with us") - .addEmail("pslab-fossasia@googlegroups.com") - .addWebsite("https://pslab.io/") - .addGitHub("fossasia?utf8=✓&q=pslab") - .addFacebook("pslabio") - .addTwitter("pslabio") - .addYoutube("UCQprMsG-raCIMlBudm20iLQ") - .addItem(addDevelopers()) - .create(); - - appBarLayout.addView(aboutPage, -1); - return view; - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - return super.onOptionsItemSelected(item); - } - - private void simulateDayNight(int currentSetting) { - final int DAY = 0; - final int NIGHT = 1; - final int FOLLOW_SYSTEM = 3; - - int currentNightMode = getResources().getConfiguration().uiMode - & Configuration.UI_MODE_NIGHT_MASK; - if (currentSetting == DAY && currentNightMode != Configuration.UI_MODE_NIGHT_NO) { - AppCompatDelegate.setDefaultNightMode( - AppCompatDelegate.MODE_NIGHT_NO); - } else if (currentSetting == NIGHT && currentNightMode != Configuration.UI_MODE_NIGHT_YES) { - AppCompatDelegate.setDefaultNightMode( - AppCompatDelegate.MODE_NIGHT_YES); - } else if (currentSetting == FOLLOW_SYSTEM) { - AppCompatDelegate.setDefaultNightMode( - AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM); - } - } - - private Element addDevelopers() { - Element developersElement = new Element(); - developersElement.setTitle(getString(R.string.developers)); - developersElement.setIconDrawable(R.drawable.ic_user__24dp); - developersElement.setOnClickListener(v -> { - String url = getString(R.string.github_developers_link); - if (!url.startsWith("http://") && !url.startsWith("https://")) { - url = "https://" + url; - } - Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); - startActivity(browserIntent); - }); - return developersElement; - } - -} diff --git a/app/src/main/java/io/pslab/fragment/AccelerometerDataFragment.java b/app/src/main/java/io/pslab/fragment/AccelerometerDataFragment.java deleted file mode 100644 index 197910e0a..000000000 --- a/app/src/main/java/io/pslab/fragment/AccelerometerDataFragment.java +++ /dev/null @@ -1,497 +0,0 @@ -package io.pslab.fragment; - -import android.graphics.Bitmap; -import android.graphics.Color; -import android.hardware.Sensor; -import android.hardware.SensorEvent; -import android.hardware.SensorEventListener; -import android.hardware.SensorManager; -import android.location.Location; -import android.os.Bundle; -import android.os.Environment; -import android.os.Handler; -import androidx.annotation.NonNull; - -import com.google.android.material.snackbar.Snackbar; -import androidx.fragment.app.Fragment; - -import android.text.Html; -import android.util.Pair; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; - -import com.github.mikephil.charting.data.Entry; -import com.github.mikephil.charting.data.LineData; -import com.github.mikephil.charting.data.LineDataSet; - -import java.io.File; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.text.DecimalFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.Timer; -import java.util.TimerTask; - -import io.pslab.R; -import io.pslab.activity.AccelerometerActivity; -import io.pslab.interfaces.OperationCallback; -import io.pslab.models.AccelerometerData; -import io.pslab.models.SensorDataBlock; -import io.pslab.others.CSVDataLine; -import io.pslab.others.CSVLogger; -import io.pslab.others.CustomSnackBar; - -import static android.content.Context.SENSOR_SERVICE; -import static io.pslab.others.CSVLogger.CSV_DIRECTORY; - -/** - * Created by Kunal on 18-12-18 - */ - -public class AccelerometerDataFragment extends Fragment implements OperationCallback { - - private static final CSVDataLine CSV_HEADER = new CSVDataLine() - .add("Timestamp") - .add("DateTime") - .add("ReadingsX") - .add("ReadingsY") - .add("ReadingsZ") - .add("Latitude") - .add("Longitude"); - private static int updatePeriod = 1000; - private static float highLimit = 1.2f; - private static float gain = 1; - private int turns = 0; - private boolean returningFromPause = false; - private Timer graphTimer; - private SensorManager sensorManager; - private Sensor sensor; - private long startTime, block; - private AccelerometerData sensorData; - private ArrayList recordedAccelerometerArray; - private AccelerometerActivity accelerometerSensor; - private ArrayList accelerometerViewFragments = new ArrayList<>(); - private int[] colors = {Color.YELLOW, Color.MAGENTA, Color.GREEN}; - private DecimalFormat df = new DecimalFormat("+#0.0;-#0.0"); - private View rootView; - - public static AccelerometerDataFragment newInstance() { - return new AccelerometerDataFragment(); - } - - public static void setParameters(float highLimit, int updatePeriod, String gain) { - AccelerometerDataFragment.highLimit = highLimit; - AccelerometerDataFragment.updatePeriod = updatePeriod; - AccelerometerDataFragment.gain = Integer.valueOf(gain); - } - - public static Pair> getParameters() { - return new Pair<>(updatePeriod, new Pair<>(highLimit, gain)); - } - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - startTime = System.currentTimeMillis(); - accelerometerSensor = (AccelerometerActivity) getActivity(); - for (AccelerometerViewFragment fragment : accelerometerViewFragments) { - fragment.clear(); - } - } - - @Override - public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { - rootView = inflater.inflate(R.layout.fragment_accelerometer_data, container, false); - accelerometerViewFragments.clear(); - accelerometerViewFragments.add((AccelerometerViewFragment) getChildFragmentManager().findFragmentById(R.id.accelerometer_x_axis_fragment)); - accelerometerViewFragments.add((AccelerometerViewFragment) getChildFragmentManager().findFragmentById(R.id.accelerometer_y_axis_fragment)); - accelerometerViewFragments.add((AccelerometerViewFragment) getChildFragmentManager().findFragmentById(R.id.accelerometer_z_axis_fragment)); - - accelerometerViewFragments.get(1).getAccelerationAxisImage().setImageResource(R.drawable.phone_y_axis); - accelerometerViewFragments.get(2).getAccelerationAxisImage().setImageResource(R.drawable.phone_z_axis); - - setupInstruments(); - return rootView; - } - - @Override - public void onResume() { - super.onResume(); - if (accelerometerSensor.playingData) { - recordedAccelerometerArray = new ArrayList<>(); - resetInstrumentData(); - playRecordedData(); - } else if (accelerometerSensor.viewingData) { - recordedAccelerometerArray = new ArrayList<>(); - resetInstrumentData(); - plotAllRecordedData(); - } else if (!accelerometerSensor.isRecording) { - updateGraphs(); - initiateAccelerometerSensor(); - } else if (returningFromPause) { - updateGraphs(); - } - } - - @Override - public void onDestroyView() { - super.onDestroyView(); - if (graphTimer != null) { - graphTimer.cancel(); - } - if (sensorManager != null) { - sensorManager.unregisterListener(accelerometerSensorEventListener); - } - } - - private void plotAllRecordedData() { - recordedAccelerometerArray.addAll(accelerometerSensor.recordedAccelerometerData); - if (recordedAccelerometerArray.size() != 0) { - for (int i = 0; i < accelerometerViewFragments.size(); i++) { - AccelerometerViewFragment fragment = accelerometerViewFragments.get(i); - for (AccelerometerData d : recordedAccelerometerArray) { - if (fragment.getCurrentMax() < d.getAccelerometer()[i]) { - fragment.setCurrentMax(d.getAccelerometer()[i]); - } - if (fragment.getCurrentMin() > d.getAccelerometer()[i]) { - fragment.setCurrentMin(d.getAccelerometer()[i]); - } - Entry entry = new Entry((float) (d.getTime() - d.getBlock()) / 1000, d.getAccelerometer()[i]); - fragment.addEntry(entry); - } - - fragment.setYaxis(highLimit); - - LineDataSet dataSet = new LineDataSet(fragment.getEntries(), getString(R.string.accelerometer)); - dataSet.setDrawCircles(false); - dataSet.setDrawValues(false); - dataSet.setLineWidth(2); - - dataSet.setDrawCircles(false); - dataSet.setDrawValues(false); - dataSet.setMode(LineDataSet.Mode.CUBIC_BEZIER); - dataSet.setLineWidth(1); - dataSet.setColor(colors[i]); - LineData data = new LineData(dataSet); - fragment.setChartData(data); - } - } - } - - private void playRecordedData() { - recordedAccelerometerArray.addAll(accelerometerSensor.recordedAccelerometerData); - try { - if (recordedAccelerometerArray.size() > 1) { - AccelerometerData i = recordedAccelerometerArray.get(1); - long timeGap = i.getTime() - i.getBlock(); - processRecordedData(timeGap); - } else { - processRecordedData(0); - } - } catch (IllegalArgumentException e) { - CustomSnackBar.showSnackBar(getActivity().findViewById(android.R.id.content), - getString(R.string.no_data_fetched), null, null, Snackbar.LENGTH_SHORT); - } - } - - private void processRecordedData(long timeGap) { - final Handler handler = new Handler(); - if (graphTimer != null) { - graphTimer.cancel(); - } else { - graphTimer = new Timer(); - } - graphTimer.schedule(new TimerTask() { - @Override - public void run() { - handler.post(new Runnable() { - @Override - public void run() { - if (accelerometerSensor.viewingData) { - try { - AccelerometerData d = recordedAccelerometerArray.get(turns); - turns++; - for (int i = 0; i < accelerometerViewFragments.size(); i++) { - AccelerometerViewFragment fragment = accelerometerViewFragments.get(i); - StringBuilder builder = new StringBuilder(); - builder.append(df.format(d.getAccelerometer()[i])); - builder.append(" "); - builder.append(getResources().getString(R.string.acceleration_unit)); - fragment.setAccelerationValue(Html.fromHtml(builder.toString())); - - if (fragment.getCurrentMax() < d.getAccelerometer()[i]) { - fragment.setCurrentMax(d.getAccelerometer()[i]); - StringBuilder max_builder = new StringBuilder(); - max_builder.append("Max: "); - max_builder.append(df.format(fragment.getCurrentMax())); - max_builder.append(" "); - max_builder.append(getResources().getString(R.string.acceleration_unit)); - fragment.setAccelerationMax(Html.fromHtml(max_builder.toString())); - } - if (fragment.getCurrentMin() > d.getAccelerometer()[i]) { - fragment.setCurrentMin(d.getAccelerometer()[i]); - StringBuilder min_builder = new StringBuilder(); - min_builder.append("Min: "); - min_builder.append(df.format(fragment.getCurrentMax())); - min_builder.append(" "); - min_builder.append(getResources().getString(R.string.acceleration_unit)); - fragment.setAccelerationMin(Html.fromHtml(min_builder.toString())); - } - - fragment.setYaxis(highLimit); - Entry entryX = new Entry((float) (d.getTime() - d.getBlock()) / 1000, d.getAccelerometer()[i]); - fragment.addEntry(entryX); - - LineDataSet dataSet = new LineDataSet(fragment.getEntries(), getString(R.string.accelerometer)); - dataSet.setDrawCircles(false); - dataSet.setDrawValues(false); - dataSet.setMode(LineDataSet.Mode.CUBIC_BEZIER); - dataSet.setLineWidth(1); - dataSet.setColor(colors[i]); - LineData data = new LineData(dataSet); - - fragment.setChartData(data); - } - } catch (IndexOutOfBoundsException e) { - graphTimer.cancel(); - graphTimer = null; - turns = 0; - accelerometerSensor.playingData = false; - accelerometerSensor.startedPlay = false; - accelerometerSensor.invalidateOptionsMenu(); - } - } - } - }); - } - }, 0, timeGap); - } - - @Override - public void playData() { - resetInstrumentData(); - accelerometerSensor.startedPlay = true; - try { - if (recordedAccelerometerArray.size() > 1) { - AccelerometerData i = recordedAccelerometerArray.get(1); - long timeGap = i.getTime() - i.getBlock(); - processRecordedData(timeGap); - } else { - processRecordedData(0); - } - } catch (IllegalArgumentException e) { - CustomSnackBar.showSnackBar(getActivity().findViewById(android.R.id.content), - getActivity().getResources().getString(R.string.no_data_fetched), null, null, Snackbar.LENGTH_SHORT); - } - } - - @Override - public void stopData() { - if (graphTimer != null) { - graphTimer.cancel(); - graphTimer = null; - } - recordedAccelerometerArray.clear(); - for (AccelerometerViewFragment fragment : accelerometerViewFragments) { - fragment.clearEntry(); - } - plotAllRecordedData(); - accelerometerSensor.startedPlay = false; - accelerometerSensor.playingData = false; - turns = 0; - accelerometerSensor.invalidateOptionsMenu(); - } - - @Override - public void saveGraph() { - accelerometerSensor.csvLogger.prepareLogFile(); - accelerometerSensor.csvLogger.writeMetaData(getResources().getString(R.string.accelerometer)); - accelerometerSensor.csvLogger.writeCSVFile(CSV_HEADER); - for (AccelerometerData accelerometerData : accelerometerSensor.recordedAccelerometerData) { - accelerometerSensor.csvLogger.writeCSVFile( - new CSVDataLine() - .add(accelerometerData.getTime()) - .add(CSVLogger.FILE_NAME_FORMAT.format(new Date(accelerometerData.getTime()))) - .add(accelerometerData.getAccelerometerX()) - .add(accelerometerData.getAccelerometerY()) - .add(accelerometerData.getAccelerometerZ()) - .add(accelerometerData.getLat()) - .add(accelerometerData.getLon()) - ); - } - View view = rootView.findViewById(R.id.accelerometer_linearlayout); - view.setDrawingCacheEnabled(true); - Bitmap b = view.getDrawingCache(); - try { - b.compress(Bitmap.CompressFormat.JPEG, 100, new FileOutputStream(Environment.getExternalStorageDirectory().getAbsolutePath() + - File.separator + CSV_DIRECTORY + File.separator + accelerometerSensor.getSensorName() + - File.separator + CSVLogger.FILE_NAME_FORMAT.format(new Date()) + "_graph.jpg")); - } catch (FileNotFoundException e) { - e.printStackTrace(); - } - } - - private void setupInstruments() { - for (AccelerometerViewFragment fragment : accelerometerViewFragments) { - fragment.setUp(); - } - } - - @Override - public void onPause() { - super.onPause(); - if (graphTimer != null) { - returningFromPause = true; - graphTimer.cancel(); - graphTimer = null; - if (accelerometerSensor.playingData) { - accelerometerSensor.finish(); - } - } - } - - private void updateGraphs() { - final Handler handler = new Handler(); - if (graphTimer != null) { - graphTimer.cancel(); - } - graphTimer = new Timer(); - graphTimer.schedule(new TimerTask() { - @Override - public void run() { - handler.post(new Runnable() { - @Override - public void run() { - try { - visualizeData(); - } catch (NullPointerException e) { - /* Pass for another refresh round */ - } - } - }); - } - }, 0, updatePeriod); - } - - private void writeLogToFile(long timestamp, float readingX, float readingY, float readingZ) { - if (getActivity() != null && accelerometerSensor.isRecording) { - if (accelerometerSensor.writeHeaderToFile) { - accelerometerSensor.csvLogger.prepareLogFile(); - accelerometerSensor.csvLogger.writeMetaData(getResources().getString(R.string.accelerometer)); - accelerometerSensor.csvLogger.writeCSVFile(CSV_HEADER); - block = timestamp; - accelerometerSensor.recordSensorDataBlockID(new SensorDataBlock(timestamp, accelerometerSensor.getSensorName())); - accelerometerSensor.writeHeaderToFile = !accelerometerSensor.writeHeaderToFile; - } - if (accelerometerSensor.addLocation && accelerometerSensor.gpsLogger.isGPSEnabled()) { - Location location = accelerometerSensor.gpsLogger.getDeviceLocation(); - accelerometerSensor.csvLogger.writeCSVFile( - new CSVDataLine() - .add(timestamp) - .add(CSVLogger.FILE_NAME_FORMAT.format(new Date(timestamp))) - .add(readingX) - .add(readingY) - .add(readingZ) - .add(location.getLatitude()) - .add(location.getLongitude()) - ); - sensorData = new AccelerometerData(timestamp, block, accelerometerViewFragments.get(0).getCurrentValue(), accelerometerViewFragments.get(1).getCurrentValue(), accelerometerViewFragments.get(2).getCurrentValue(), location.getLatitude(), location.getLongitude()); - } else { - accelerometerSensor.csvLogger.writeCSVFile( - new CSVDataLine() - .add(timestamp) - .add(CSVLogger.FILE_NAME_FORMAT.format(new Date(timestamp))) - .add(readingX) - .add(readingY) - .add(readingZ) - .add(0.0) - .add(0.0) - ); - sensorData = new AccelerometerData(timestamp, block, accelerometerViewFragments.get(0).getCurrentValue(), accelerometerViewFragments.get(1).getCurrentValue(), accelerometerViewFragments.get(2).getCurrentValue(), 0.0, 0.0); - } - accelerometerSensor.recordSensorData(sensorData); - } else { - accelerometerSensor.writeHeaderToFile = true; - } - } - - private void visualizeData() { - for (int i = 0; i < accelerometerViewFragments.size(); i++) { - AccelerometerViewFragment fragment = accelerometerViewFragments.get(i); - long timeElapsed = (System.currentTimeMillis() - startTime) / 1000; - if (timeElapsed != fragment.getPreviousTimeElapsed()) { - fragment.setPreviousTimeElapsed(timeElapsed); - fragment.addEntry(new Entry((float) timeElapsed, fragment.getCurrentValue())); - - LineDataSet dataSet = new LineDataSet(fragment.getEntries(), getString(R.string.accelerometer)); - dataSet.setDrawCircles(false); - dataSet.setDrawValues(false); - dataSet.setMode(LineDataSet.Mode.CUBIC_BEZIER); - dataSet.setLineWidth(1); - dataSet.setColor(colors[i]); - LineData data = new LineData(dataSet); - - fragment.setChartData(data); - fragment.setYaxis(highLimit); - } - } - Long currentTime = System.currentTimeMillis(); - writeLogToFile(currentTime, accelerometerViewFragments.get(0).getCurrentValue(), accelerometerViewFragments.get(1).getCurrentValue(), accelerometerViewFragments.get(2).getCurrentValue()); - } - - private SensorEventListener accelerometerSensorEventListener = new SensorEventListener() { - - @Override - public void onAccuracyChanged(Sensor sensor, int accuracy) {/**/} - - @Override - public void onSensorChanged(SensorEvent event) { - if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) { - for (int i = 0; i < accelerometerViewFragments.size(); i++) { - AccelerometerViewFragment fragment = accelerometerViewFragments.get(i); - fragment.setCurrentValue(event.values[i]); - StringBuilder builder = new StringBuilder(); - builder.append(df.format(fragment.getCurrentValue())); - builder.append(" "); - builder.append(getResources().getString(R.string.acceleration_unit)); - fragment.setAccelerationValue(Html.fromHtml(builder.toString())); - - if (fragment.getCurrentValue() > fragment.getCurrentMax()) { - builder.insert(0, getResources().getString(R.string.text_max)); - builder.insert(3, " "); - fragment.setAccelerationMax(Html.fromHtml(builder.toString())); - fragment.setCurrentMax(fragment.getCurrentValue()); - } else if (fragment.getCurrentValue() < fragment.getCurrentMin()) { - builder.insert(0, getResources().getString(R.string.text_min)); - builder.insert(3, " "); - fragment.setAccelerationMin(Html.fromHtml(builder.toString())); - fragment.setCurrentMin(fragment.getCurrentValue()); - } - } - } - } - }; - - private void resetInstrumentData() { - for (AccelerometerViewFragment fragment : accelerometerViewFragments) { - fragment.clear(); - } - } - - private void initiateAccelerometerSensor() { - resetInstrumentData(); - sensorManager = (SensorManager) getContext().getSystemService(SENSOR_SERVICE); - sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); - if (sensor == null) { - CustomSnackBar.showSnackBar(getActivity().findViewById(android.R.id.content), - getResources().getString(R.string.no_accelerometer_sensor), null, null, Snackbar.LENGTH_LONG); - } else { - sensorManager.registerListener(accelerometerSensorEventListener, - sensor, SensorManager.SENSOR_DELAY_FASTEST); - } - - } -} \ No newline at end of file diff --git a/app/src/main/java/io/pslab/fragment/AccelerometerSettingsFragment.java b/app/src/main/java/io/pslab/fragment/AccelerometerSettingsFragment.java deleted file mode 100644 index 0700ad869..000000000 --- a/app/src/main/java/io/pslab/fragment/AccelerometerSettingsFragment.java +++ /dev/null @@ -1,123 +0,0 @@ -package io.pslab.fragment; - -import android.annotation.SuppressLint; -import android.content.SharedPreferences; -import android.os.Bundle; -import androidx.preference.CheckBoxPreference; -import androidx.preference.EditTextPreference; -import androidx.preference.ListPreference; -import androidx.preference.PreferenceFragmentCompat; -import androidx.preference.PreferenceManager; - -import io.pslab.R; -import io.pslab.others.PSLabPermission; - -/** - * Created by Kunal on 18-12-2018. - */ -public class AccelerometerSettingsFragment extends PreferenceFragmentCompat implements SharedPreferences.OnSharedPreferenceChangeListener { - - public static final String KEY_INCLUDE_LOCATION = "include_location_sensor_data"; - public static final String KEY_UPDATE_PERIOD = "setting_accelerometer_update_period"; - public static final String KEY_HIGH_LIMIT = "setting_accelerometer_high_limit"; - public static final String KEY_ACCELEROMETER_SENSOR_TYPE = "setting_accelerometer_sensor_type"; - public static final String KEY_ACCELEROMETER_SENSOR_GAIN = "setting_accelerometer_sensor_gain"; - - private PSLabPermission psLabPermission; - - private EditTextPreference updatePeriodPref; - private EditTextPreference higLimitPref; - private EditTextPreference sensorGainPref; - private CheckBoxPreference locationPreference; - private ListPreference sensorTypePreference; - private SharedPreferences sharedPref; - - @Override - public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { - setPreferencesFromResource(R.xml.accelerometer_settings, rootKey); - updatePeriodPref = (EditTextPreference) getPreferenceScreen().findPreference(KEY_UPDATE_PERIOD); - higLimitPref = (EditTextPreference) getPreferenceScreen().findPreference(KEY_HIGH_LIMIT); - sensorGainPref = (EditTextPreference) getPreferenceScreen().findPreference(KEY_ACCELEROMETER_SENSOR_GAIN); - locationPreference = (CheckBoxPreference) getPreferenceScreen().findPreference(KEY_INCLUDE_LOCATION); - sensorTypePreference = (ListPreference) getPreferenceScreen().findPreference(KEY_ACCELEROMETER_SENSOR_TYPE); - sharedPref = PreferenceManager.getDefaultSharedPreferences(getActivity()); - - psLabPermission = PSLabPermission.getInstance(); - if (!psLabPermission.checkPermissions(getActivity(), PSLabPermission.MAP_PERMISSION)) { - SharedPreferences.Editor editor = sharedPref.edit(); - editor.putBoolean(LuxMeterSettingFragment.KEY_INCLUDE_LOCATION, true); - editor.apply(); - } - } - - @Override - public void onResume() { - super.onResume(); - locationPreference.setChecked(sharedPref.getBoolean(KEY_INCLUDE_LOCATION, true)); - updatePeriodPref.setSummary(updatePeriodPref.getText() + " ms"); - higLimitPref.setSummary(higLimitPref.getText() + " m/s²"); - sensorTypePreference.setSummary(sensorTypePreference.getEntry()); - sensorGainPref.setSummary(sensorGainPref.getText()); - getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this); - } - - @Override - public void onPause() { - super.onPause(); - getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this); - } - - @SuppressLint("ApplySharedPref") - @Override - public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String s) { - switch (s) { - case KEY_INCLUDE_LOCATION: - if (locationPreference.isChecked()) { - psLabPermission.checkPermissions( - getActivity(), PSLabPermission.MAP_PERMISSION); - } - break; - case KEY_UPDATE_PERIOD: - try { - Integer updatePeriod = Integer.valueOf(updatePeriodPref.getText()); - updatePeriodPref.setSummary(updatePeriod + " ms"); - } catch (NumberFormatException e) { - updatePeriodPref.setSummary("1000 ms"); - updatePeriodPref.setText("1000"); - SharedPreferences.Editor editor = sharedPref.edit(); - editor.putString(s, "1000"); - editor.commit(); - } - break; - case KEY_ACCELEROMETER_SENSOR_GAIN: - try { - Integer gain = Integer.valueOf(sensorGainPref.getText()); - sensorGainPref.setSummary(String.valueOf(gain)); - } catch (NumberFormatException e) { - sensorGainPref.setSummary("1"); - sensorGainPref.setText("1"); - SharedPreferences.Editor editor = sharedPref.edit(); - editor.putString(KEY_ACCELEROMETER_SENSOR_GAIN, "1"); - editor.commit(); - } - break; - case KEY_HIGH_LIMIT: - try { - Integer highLimit = Integer.valueOf(higLimitPref.getText()); - higLimitPref.setSummary(String.valueOf(highLimit)); - } catch (NumberFormatException e) { - higLimitPref.setSummary("2000 Lx"); - higLimitPref.setText("2000"); - SharedPreferences.Editor editor = sharedPref.edit(); - editor.putString(KEY_HIGH_LIMIT, "2000"); - editor.commit(); - } - break; - case KEY_ACCELEROMETER_SENSOR_TYPE: - sensorTypePreference.setSummary(sensorTypePreference.getEntry()); - break; - default: - break; - } - } -} diff --git a/app/src/main/java/io/pslab/fragment/AccelerometerViewFragment.java b/app/src/main/java/io/pslab/fragment/AccelerometerViewFragment.java deleted file mode 100644 index 9af1d239c..000000000 --- a/app/src/main/java/io/pslab/fragment/AccelerometerViewFragment.java +++ /dev/null @@ -1,188 +0,0 @@ -package io.pslab.fragment; - -import android.content.Context; -import android.graphics.Color; -import android.os.Bundle; -import androidx.fragment.app.Fragment; - -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; - -import com.github.mikephil.charting.charts.LineChart; -import com.github.mikephil.charting.components.Legend; -import com.github.mikephil.charting.components.XAxis; -import com.github.mikephil.charting.components.YAxis; -import com.github.mikephil.charting.data.Entry; -import com.github.mikephil.charting.data.LineData; - -import java.util.ArrayList; - -import io.pslab.R; - -public class AccelerometerViewFragment extends Fragment { - - private TextView accelerationValue, accelerationMin, accelerationMax; - private LineChart accelerationChart; - private ImageView accelerationAxisImage; - private YAxis y; - private float currentMax = Integer.MIN_VALUE; - private float currentMin = Integer.MAX_VALUE; - private float currentValue = 0; - private ArrayList entries; - private long startTime; - private static int updatePeriod = 100; - private long previousTimeElapsed = (System.currentTimeMillis() - startTime) / updatePeriod; - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - } - - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { - View rootView = inflater.inflate(R.layout.accelerometer_list_item, container, false); - - this.accelerationValue = rootView.findViewById(R.id.acceleration_value); - this.accelerationMax = rootView.findViewById(R.id.acceleration_max_text); - this.accelerationMin = rootView.findViewById(R.id.acceleration_min_text); - this.accelerationChart = rootView.findViewById(R.id.chart_accelerometer); - this.accelerationAxisImage = rootView.findViewById(R.id.acceleration_axis_image); - this.entries = new ArrayList<>(); - return rootView; - } - - @Override - public void onAttach(Context context) { - super.onAttach(context); - } - - @Override - public void onDetach() { - super.onDetach(); - } - - public ImageView getAccelerationAxisImage() { - return accelerationAxisImage; - } - - public float getCurrentMax() { - return currentMax; - } - - public void setCurrentMax(float currentMax) { - this.currentMax = currentMax; - } - - public float getCurrentMin() { - return currentMin; - } - - public void setCurrentMin(float currentMin) { - this.currentMin = currentMin; - } - - public float getCurrentValue() { - return currentValue; - } - - public void setCurrentValue(float currentValue) { - this.currentValue = currentValue; - } - - public void setUp() { - XAxis x = this.accelerationChart.getXAxis(); - this.y = this.accelerationChart.getAxisLeft(); - YAxis y2 = this.accelerationChart.getAxisRight(); - - this.accelerationChart.setTouchEnabled(true); - this.accelerationChart.setHighlightPerDragEnabled(true); - this.accelerationChart.setDragEnabled(true); - this.accelerationChart.setScaleEnabled(true); - this.accelerationChart.setDrawGridBackground(false); - this.accelerationChart.setPinchZoom(true); - this.accelerationChart.setScaleYEnabled(true); - this.accelerationChart.setBackgroundColor(Color.BLACK); - this.accelerationChart.getDescription().setEnabled(false); - - LineData data = new LineData(); - this.accelerationChart.setData(data); - - Legend l = this.accelerationChart.getLegend(); - l.setForm(Legend.LegendForm.LINE); - l.setTextColor(Color.WHITE); - - x.setTextColor(Color.WHITE); - x.setDrawGridLines(true); - x.setAvoidFirstLastClipping(true); - x.setDrawLabels(false); - - this.y.setTextColor(Color.WHITE); - this.y.setAxisMaximum(currentMax); - this.y.setAxisMinimum(currentMin); - this.y.setDrawGridLines(true); - this.y.setLabelCount(10); - - y2.setDrawGridLines(false); - y2.setMaxWidth(0); - } - - public void addEntry(Entry entry) { - this.entries.add(entry); - } - - public ArrayList getEntries() { - return this.entries; - } - - public void clearEntry() { - this.entries.clear(); - } - - public void setAccelerationValue(CharSequence value) { - this.accelerationValue.setText(value); - } - - public void setAccelerationMax(CharSequence value) { - this.accelerationMax.setText(value); - } - - public void setAccelerationMin(CharSequence value) { - this.accelerationMin.setText(value); - } - - public void setYaxis(float maxLimit) { - this.y.setAxisMaximum(maxLimit); - this.y.setAxisMinimum(-maxLimit); - this.y.setLabelCount(5); - } - - public void setChartData(LineData data) { - this.accelerationChart.setData(data); - this.accelerationChart.notifyDataSetChanged(); - this.accelerationChart.setVisibleXRangeMaximum(3); - this.accelerationChart.moveViewToX(data.getEntryCount()); - this.accelerationChart.invalidate(); - } - - public void clear() { - this.currentMax = Integer.MIN_VALUE; - this.currentMin = Integer.MAX_VALUE; - this.entries.clear(); - this.accelerationChart.clear(); - this.accelerationChart.invalidate(); - this.startTime = System.currentTimeMillis(); - } - - public long getPreviousTimeElapsed() { - return previousTimeElapsed; - } - - public void setPreviousTimeElapsed(long previousTimeElapsed) { - this.previousTimeElapsed = previousTimeElapsed; - } -} diff --git a/app/src/main/java/io/pslab/fragment/BaroMeterDataFragment.java b/app/src/main/java/io/pslab/fragment/BaroMeterDataFragment.java deleted file mode 100644 index 6238e1c88..000000000 --- a/app/src/main/java/io/pslab/fragment/BaroMeterDataFragment.java +++ /dev/null @@ -1,666 +0,0 @@ -package io.pslab.fragment; - -import android.graphics.Bitmap; -import android.graphics.Color; -import android.hardware.Sensor; -import android.hardware.SensorEvent; -import android.hardware.SensorEventListener; -import android.hardware.SensorManager; -import android.location.Location; -import android.os.Bundle; -import android.os.Environment; -import android.os.Handler; -import androidx.annotation.NonNull; - -import com.google.android.material.snackbar.Snackbar; -import androidx.fragment.app.Fragment; - -import androidx.preference.PreferenceManager; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.TextView; - -import com.github.anastr.speedviewlib.PointerSpeedometer; -import com.github.mikephil.charting.charts.LineChart; -import com.github.mikephil.charting.components.Legend; -import com.github.mikephil.charting.components.XAxis; -import com.github.mikephil.charting.components.YAxis; -import com.github.mikephil.charting.data.Entry; -import com.github.mikephil.charting.data.LineData; -import com.github.mikephil.charting.data.LineDataSet; -import com.github.mikephil.charting.interfaces.datasets.ILineDataSet; - -import java.io.File; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Locale; -import java.util.Timer; -import java.util.TimerTask; - -import butterknife.BindView; -import butterknife.ButterKnife; -import butterknife.Unbinder; -import io.pslab.DataFormatter; -import io.pslab.R; -import io.pslab.activity.BarometerActivity; -import io.pslab.communication.ScienceLab; -import io.pslab.communication.peripherals.I2C; -import io.pslab.communication.sensors.BMP180; -import io.pslab.interfaces.OperationCallback; -import io.pslab.models.BaroData; -import io.pslab.models.PSLabSensor; -import io.pslab.models.SensorDataBlock; -import io.pslab.others.CSVDataLine; -import io.pslab.others.CSVLogger; -import io.pslab.others.CustomSnackBar; -import io.pslab.others.ScienceLabCommon; - -import static android.content.Context.SENSOR_SERVICE; -import static io.pslab.others.CSVLogger.CSV_DIRECTORY; - -/** - * Created by Padmal on 12/13/18. - */ - -public class BaroMeterDataFragment extends Fragment implements OperationCallback { - - private static final CSVDataLine CSV_HEADER = new CSVDataLine() - .add("Timestamp") - .add("DateTime") - .add("Pressure") - .add("Altitude") - .add("Latitude") - .add("Longitude"); - - private static int sensorType = 0; - private static float highLimit = 1.2f; - private static int updatePeriod = 1000; - private long timeElapsed; - private int count = 0, turns = 0; - private float sum = 0; - private boolean returningFromPause = false; - - private float baroValue = -1; - - private enum BARO_SENSOR {INBUILT_SENSOR, BMP180_SENSOR} - - @BindView(R.id.baro_max) - TextView statMax; - @BindView(R.id.baro_min) - TextView statMin; - @BindView(R.id.baro_avg) - TextView statMean; - @BindView(R.id.label_baro_sensor) - TextView sensorLabel; - @BindView(R.id.chart_baro_meter) - LineChart mChart; - @BindView(R.id.baro_meter) - PointerSpeedometer baroMeter; - @BindView(R.id.alti_value) - TextView altiValue; - - private Timer graphTimer; - private SensorManager sensorManager; - private Sensor sensor; - private long startTime, block; - private ArrayList pressureEntries; - private ArrayList altitudeEntries; - private ArrayList recordedBaroArray; - private BaroData sensorData; - private float currentMin = 2; - private float currentMax = 0.5f; - private YAxis y; - private YAxis y2; - private Unbinder unbinder; - private long previousTimeElapsed = (System.currentTimeMillis() - startTime) / updatePeriod; - private BarometerActivity baroSensor; - private View rootView; - - public static BaroMeterDataFragment newInstance() { - return new BaroMeterDataFragment(); - } - - public static void setParameters(float highLimit, int updatePeriod, String type) { - BaroMeterDataFragment.highLimit = highLimit; - BaroMeterDataFragment.updatePeriod = updatePeriod; - BaroMeterDataFragment.sensorType = Integer.valueOf(type); - } - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - startTime = System.currentTimeMillis(); - pressureEntries = new ArrayList<>(); - altitudeEntries = new ArrayList<>(); - baroSensor = (BarometerActivity) getActivity(); - } - - @Override - public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { - rootView = inflater.inflate(R.layout.fragment_barometer_data, container, false); - unbinder = ButterKnife.bind(this, rootView); - setupInstruments(); - return rootView; - } - - @Override - public void onResume() { - super.onResume(); - if (baroSensor.playingData) { - sensorLabel.setText(getResources().getString(R.string.baro_meter)); - recordedBaroArray = new ArrayList<>(); - resetInstrumentData(); - playRecordedData(); - } else if (baroSensor.viewingData) { - sensorLabel.setText(getResources().getString(R.string.baro_meter)); - recordedBaroArray = new ArrayList<>(); - resetInstrumentData(); - plotAllRecordedData(); - } else if (!baroSensor.isRecording) { - updateGraphs(); - sum = 0; - count = 0; - currentMin = 2; - currentMax = 0.5f; - pressureEntries.clear(); - altitudeEntries.clear(); - mChart.clear(); - mChart.invalidate(); - initiateBaroSensor(sensorType); - } else if (returningFromPause) { - updateGraphs(); - } - } - - @Override - public void onDestroyView() { - super.onDestroyView(); - if (graphTimer != null) { - graphTimer.cancel(); - } - if (sensorManager != null) { - sensorManager.unregisterListener(baroSensorEventListener); - } - unbinder.unbind(); - } - - private void plotAllRecordedData() { - recordedBaroArray.addAll(baroSensor.recordedBaroData); - if (recordedBaroArray.size() != 0) { - for (BaroData d : recordedBaroArray) { - if (currentMax < d.getBaro()) { - currentMax = d.getBaro(); - } - if (currentMin > d.getBaro()) { - currentMin = d.getBaro(); - } - Entry entry = new Entry((float) (d.getTime() - d.getBlock()) / 1000, d.getBaro()); - pressureEntries.add(entry); - altitudeEntries.add(new Entry((float) (d.getTime() - d.getBlock()) / 1000, d.getAltitude())); - altiValue.setText(String.format(Locale.getDefault(), PSLabSensor.BAROMETER_DATA_FORMAT, d.getAltitude())); - baroMeter.setWithTremble(false); - baroMeter.setSpeedAt(d.getBaro()); - sum += entry.getY(); - } - y.setAxisMaximum(currentMax); - y.setAxisMinimum(currentMin); - y.setLabelCount(10); - y2.setAxisMaximum(getAltitude(currentMax)); - y2.setAxisMinimum(getAltitude(currentMin)); - y2.setLabelCount(10); - statMax.setText(String.format(Locale.getDefault(), PSLabSensor.BAROMETER_DATA_FORMAT, currentMax)); - statMin.setText(String.format(Locale.getDefault(), PSLabSensor.BAROMETER_DATA_FORMAT, currentMin)); - statMean.setText(String.format(Locale.getDefault(), PSLabSensor.BAROMETER_DATA_FORMAT, (sum / recordedBaroArray.size()))); - - List dataSets = new ArrayList<>(); - LineDataSet dataSet = new LineDataSet(pressureEntries, getString(R.string.baro_unit)); - dataSet.setDrawCircles(false); - dataSet.setDrawValues(false); - dataSet.setLineWidth(2); - dataSets.add(dataSet); - - dataSet = new LineDataSet(altitudeEntries, getString(R.string.alti_unit)); - dataSet.setDrawCircles(false); - dataSet.setDrawValues(false); - dataSet.setLineWidth(2); - dataSet.setColor(Color.YELLOW); - dataSets.add(dataSet); - LineData data = new LineData(dataSets); - - mChart.setData(data); - mChart.notifyDataSetChanged(); - mChart.setVisibleXRangeMaximum(80); - mChart.moveViewToX(data.getEntryCount()); - mChart.invalidate(); - } - } - - private void playRecordedData() { - recordedBaroArray.addAll(baroSensor.recordedBaroData); - try { - if (recordedBaroArray.size() > 1) { - BaroData i = recordedBaroArray.get(1); - long timeGap = i.getTime() - i.getBlock(); - processRecordedData(timeGap); - } else { - processRecordedData(0); - } - } catch (IllegalArgumentException e) { - CustomSnackBar.showSnackBar(getActivity().findViewById(android.R.id.content), - getActivity().getResources().getString(R.string.no_data_fetched), null, null, Snackbar.LENGTH_SHORT); - } - } - - private void processRecordedData(long timeGap) { - final Handler handler = new Handler(); - if (graphTimer != null) { - graphTimer.cancel(); - } else { - graphTimer = new Timer(); - } - graphTimer.schedule(new TimerTask() { - @Override - public void run() { - handler.post(new Runnable() { - @Override - public void run() { - if (baroSensor.playingData) { - try { - BaroData d = recordedBaroArray.get(turns); - turns++; - if (currentMax < d.getBaro()) { - currentMax = d.getBaro(); - statMax.setText(String.format(Locale.getDefault(), PSLabSensor.BAROMETER_DATA_FORMAT, d.getBaro())); - } - if (currentMin > d.getBaro()) { - currentMin = d.getBaro(); - statMin.setText(String.format(Locale.getDefault(), PSLabSensor.BAROMETER_DATA_FORMAT, d.getBaro())); - } - y.setAxisMaximum(currentMax); - y.setAxisMinimum(currentMin); - y.setLabelCount(10); - y2.setAxisMaximum(getAltitude(currentMax)); - y2.setAxisMinimum(getAltitude(currentMin)); - y2.setLabelCount(10); - baroMeter.setWithTremble(false); - baroMeter.setSpeedAt(d.getBaro()); - - Entry entry = new Entry((float) (d.getTime() - d.getBlock()) / 1000, d.getBaro()); - pressureEntries.add(entry); - altitudeEntries.add(new Entry((float) (d.getTime() - d.getBlock()) / 1000, d.getAltitude())); - count++; - sum += entry.getY(); - statMean.setText(DataFormatter.formatDouble((sum / count), PSLabSensor.BAROMETER_DATA_FORMAT)); - altiValue.setText(String.format(Locale.getDefault(), PSLabSensor.BAROMETER_DATA_FORMAT, d.getAltitude())); - - List dataSets = new ArrayList<>(); - LineDataSet dataSet = new LineDataSet(pressureEntries, getString(R.string.baro_unit)); - dataSet.setDrawCircles(false); - dataSet.setDrawValues(false); - dataSet.setLineWidth(2); - dataSets.add(dataSet); - - dataSet = new LineDataSet(altitudeEntries, getString(R.string.alti_unit)); - dataSet.setDrawCircles(false); - dataSet.setDrawValues(false); - dataSet.setLineWidth(2); - dataSet.setColor(Color.YELLOW); - dataSets.add(dataSet); - LineData data = new LineData(dataSets); - - mChart.setData(data); - mChart.notifyDataSetChanged(); - mChart.setVisibleXRangeMaximum(80); - mChart.moveViewToX(data.getEntryCount()); - mChart.invalidate(); - } catch (IndexOutOfBoundsException e) { - graphTimer.cancel(); - graphTimer = null; - turns = 0; - baroSensor.playingData = false; - baroSensor.startedPlay = false; - baroSensor.invalidateOptionsMenu(); - } - } - } - }); - } - }, 0, timeGap); - } - - @Override - public void playData() { - resetInstrumentData(); - baroSensor.startedPlay = true; - try { - if (recordedBaroArray.size() > 1) { - BaroData i = recordedBaroArray.get(1); - long timeGap = i.getTime() - i.getBlock(); - processRecordedData(timeGap); - } else { - processRecordedData(0); - } - } catch (IllegalArgumentException e) { - CustomSnackBar.showSnackBar(getActivity().findViewById(android.R.id.content), - getActivity().getResources().getString(R.string.no_data_fetched), null, null, Snackbar.LENGTH_SHORT); - } - } - - @Override - public void stopData() { - if (graphTimer != null) { - graphTimer.cancel(); - graphTimer = null; - } - recordedBaroArray.clear(); - pressureEntries.clear(); - plotAllRecordedData(); - baroSensor.startedPlay = false; - baroSensor.playingData = false; - turns = 0; - baroSensor.invalidateOptionsMenu(); - } - - @Override - public void saveGraph() { - baroSensor.csvLogger.prepareLogFile(); - baroSensor.csvLogger.writeMetaData(getResources().getString(R.string.baro_meter)); - baroSensor.csvLogger.writeCSVFile(CSV_HEADER); - for (BaroData baroData : baroSensor.recordedBaroData) { - baroSensor.csvLogger.writeCSVFile( - new CSVDataLine() - .add(baroData.getTime()) - .add(CSVLogger.FILE_NAME_FORMAT.format(new Date(baroData.getTime()))) - .add(baroData.getBaro()) - .add(baroData.getAltitude()) - .add(baroData.getLat()) - .add(baroData.getLon()) - ); - } - View view = rootView.findViewById(R.id.barometer_linearlayout); - view.setDrawingCacheEnabled(true); - Bitmap b = view.getDrawingCache(); - try { - b.compress(Bitmap.CompressFormat.JPEG, 100, new FileOutputStream(Environment.getExternalStorageDirectory().getAbsolutePath() + - File.separator + CSV_DIRECTORY + File.separator + baroSensor.getSensorName() + - File.separator + CSVLogger.FILE_NAME_FORMAT.format(new Date()) + "_graph.jpg")); - } catch (FileNotFoundException e) { - e.printStackTrace(); - } - } - - private void setupInstruments() { - baroMeter.setMaxSpeed(PreferenceManager.getDefaultSharedPreferences(getActivity()).getFloat(baroSensor.BAROMETER_LIMIT, 2)); - XAxis x = mChart.getXAxis(); - this.y = mChart.getAxisLeft(); - this.y2 = mChart.getAxisRight(); - - mChart.setTouchEnabled(true); - mChart.setHighlightPerDragEnabled(true); - mChart.setDragEnabled(true); - mChart.setScaleEnabled(true); - mChart.setDrawGridBackground(false); - mChart.setPinchZoom(true); - mChart.setScaleYEnabled(true); - mChart.setBackgroundColor(Color.BLACK); - mChart.getDescription().setEnabled(false); - - LineData data = new LineData(); - mChart.setData(data); - - Legend l = mChart.getLegend(); - l.setForm(Legend.LegendForm.LINE); - l.setTextColor(Color.WHITE); - - x.setTextColor(Color.WHITE); - x.setDrawGridLines(true); - x.setAvoidFirstLastClipping(true); - - y.setTextColor(Color.WHITE); - y.setAxisMaximum(currentMax); - y.setAxisMinimum(currentMin); - y.setDrawGridLines(true); - y.setLabelCount(10); - - y2.setTextColor(Color.WHITE); - y2.setAxisMinimum(getAltitude(currentMin)); - y2.setAxisMaximum(getAltitude(currentMax)); - y2.setDrawGridLines(true); - y2.setLabelCount(10); - } - - @Override - public void onPause() { - super.onPause(); - if (graphTimer != null) { - returningFromPause = true; - graphTimer.cancel(); - graphTimer = null; - if (baroSensor.playingData) { - baroSensor.finish(); - } - } - } - - private void updateGraphs() { - final Handler handler = new Handler(); - if (graphTimer != null) { - graphTimer.cancel(); - } - graphTimer = new Timer(); - graphTimer.schedule(new TimerTask() { - @Override - public void run() { - handler.post(new Runnable() { - @Override - public void run() { - try { - visualizeData(); - } catch (NullPointerException e) { - /* Pass for another refresh round */ - } - } - }); - } - }, 0, updatePeriod); - } - - private void writeLogToFile(long timestamp, float sensorReading) { - if (getActivity() != null && baroSensor.isRecording) { - if (baroSensor.writeHeaderToFile) { - baroSensor.csvLogger.prepareLogFile(); - baroSensor.csvLogger.writeCSVFile(CSV_HEADER); - block = timestamp; - baroSensor.recordSensorDataBlockID(new SensorDataBlock(timestamp, baroSensor.getSensorName())); - baroSensor.writeHeaderToFile = !baroSensor.writeHeaderToFile; - } - if (baroSensor.addLocation && baroSensor.gpsLogger.isGPSEnabled()) { - Location location = baroSensor.gpsLogger.getDeviceLocation(); - baroSensor.csvLogger.writeCSVFile( - new CSVDataLine() - .add(timestamp) - .add(CSVLogger.FILE_NAME_FORMAT.format(new Date(timestamp))) - .add(sensorReading) - .add(getAltitude(sensorReading)) - .add(location.getLatitude()) - .add(location.getLongitude()) - ); - sensorData = new BaroData(timestamp, block, baroValue, getAltitude(baroValue), location.getLatitude(), location.getLongitude()); - } else { - baroSensor.csvLogger.writeCSVFile( - new CSVDataLine() - .add(timestamp) - .add(CSVLogger.FILE_NAME_FORMAT.format(new Date(timestamp))) - .add(sensorReading) - .add(getAltitude(sensorReading)) - .add(0.0) - .add(0.0) - ); - sensorData = new BaroData(timestamp, block, baroValue, getAltitude(baroValue), 0.0, 0.0); - } - baroSensor.recordSensorData(sensorData); - } else { - baroSensor.writeHeaderToFile = true; - } - } - - private void visualizeData() { - if (currentMax < baroValue) { - currentMax = baroValue; - statMax.setText(String.format(Locale.getDefault(), PSLabSensor.BAROMETER_DATA_FORMAT, baroValue)); - } - if (currentMin > baroValue) { - currentMin = baroValue; - statMin.setText(String.format(Locale.getDefault(), PSLabSensor.BAROMETER_DATA_FORMAT, baroValue)); - } - y.setAxisMaximum(currentMax); - y.setAxisMinimum(currentMin); - y.setLabelCount(10); - y2.setAxisMaximum(getAltitude(currentMax)); - y2.setAxisMinimum(getAltitude(currentMin)); - y2.setLabelCount(10); - if (baroValue >= 0) { - baroMeter.setWithTremble(false); - baroMeter.setSpeedAt(baroValue); - if (baroValue > highLimit) - baroMeter.setPointerColor(Color.RED); - else - baroMeter.setPointerColor(Color.WHITE); - - timeElapsed = ((System.currentTimeMillis() - startTime) / updatePeriod); - if (timeElapsed != previousTimeElapsed) { - previousTimeElapsed = timeElapsed; - Entry entry = new Entry((float) timeElapsed, baroValue); - Long currentTime = System.currentTimeMillis(); - writeLogToFile(currentTime, baroValue); - pressureEntries.add(entry); - altitudeEntries.add(new Entry((float) timeElapsed, getAltitude(baroValue))); - - count++; - sum += entry.getY(); - statMean.setText(DataFormatter.formatDouble((sum / count), PSLabSensor.BAROMETER_DATA_FORMAT)); - altiValue.setText(String.format(Locale.getDefault(), PSLabSensor.BAROMETER_DATA_FORMAT, getAltitude(baroValue))); - - List dataSets = new ArrayList<>(); - LineDataSet dataSet = new LineDataSet(pressureEntries, getString(R.string.baro_unit)); - dataSet.setDrawCircles(false); - dataSet.setDrawValues(false); - dataSet.setLineWidth(2); - dataSets.add(dataSet); - - dataSet = new LineDataSet(altitudeEntries, getString(R.string.alti_unit)); - dataSet.setDrawCircles(false); - dataSet.setDrawValues(false); - dataSet.setLineWidth(2); - dataSet.setColor(Color.YELLOW); - dataSets.add(dataSet); - LineData data = new LineData(dataSets); - - mChart.setData(data); - mChart.notifyDataSetChanged(); - mChart.setVisibleXRangeMaximum(80); - mChart.moveViewToX(data.getEntryCount()); - mChart.invalidate(); - } - } - } - - private SensorEventListener baroSensorEventListener = new SensorEventListener() { - - @Override - public void onAccuracyChanged(Sensor sensor, int accuracy) {/**/} - - @Override - public void onSensorChanged(SensorEvent event) { - if (event.sensor.getType() == Sensor.TYPE_PRESSURE) { - baroValue = Float.valueOf(String.format(Locale.ROOT, PSLabSensor.BAROMETER_DATA_FORMAT, event.values[0] / 1000)); - } - } - }; - - private void resetInstrumentData() { - baroValue = 0; - count = 0; - currentMin = 2; - currentMax = 0.5f; - sum = 0; - sensor = null; - if (sensorManager != null) { - sensorManager.unregisterListener(baroSensorEventListener); - } - startTime = System.currentTimeMillis(); - statMax.setText(DataFormatter.formatDouble(0, DataFormatter.LOW_PRECISION_FORMAT)); - statMin.setText(DataFormatter.formatDouble(0, DataFormatter.LOW_PRECISION_FORMAT)); - statMean.setText(DataFormatter.formatDouble(0, DataFormatter.LOW_PRECISION_FORMAT)); - altiValue.setText(DataFormatter.formatDouble(0, DataFormatter.LOW_PRECISION_FORMAT)); - baroMeter.setSpeedAt(0); - baroMeter.setWithTremble(false); - pressureEntries.clear(); - altitudeEntries.clear(); - } - - private void initiateBaroSensor(int type) { - BaroMeterDataFragment.BARO_SENSOR s = BaroMeterDataFragment.BARO_SENSOR.values()[type]; - resetInstrumentData(); - ScienceLab scienceLab; - switch (s) { - case INBUILT_SENSOR: - sensorLabel.setText(getResources().getStringArray(R.array.baro_sensors)[0]); - sensorManager = (SensorManager) getContext().getSystemService(SENSOR_SERVICE); - sensor = sensorManager.getDefaultSensor(Sensor.TYPE_PRESSURE); - if (sensor == null) { - CustomSnackBar.showSnackBar(getActivity().findViewById(android.R.id.content), - getResources().getString(R.string.no_baro_sensor), null, null, Snackbar.LENGTH_LONG); - } else { - float max = sensor.getMaximumRange() / 1000; - PreferenceManager.getDefaultSharedPreferences(getActivity()).edit().putFloat(baroSensor.BAROMETER_LIMIT, max).apply(); - baroMeter.setMaxSpeed(max); - sensorManager.registerListener(baroSensorEventListener, - sensor, SensorManager.SENSOR_DELAY_FASTEST); - } - break; - case BMP180_SENSOR: - sensorLabel.setText(getResources().getStringArray(R.array.baro_sensors)[1]); - scienceLab = ScienceLabCommon.scienceLab; - if (scienceLab.isConnected()) { - ArrayList data; - try { - I2C i2c = scienceLab.i2c; - data = i2c.scan(null); - if (data.contains(0x23)) { - BMP180 sensorBMP180 = new BMP180(i2c, scienceLab); - sensorBMP180.setOversampling(10); - sensorType = 0; - } else { - CustomSnackBar.showSnackBar(getActivity().findViewById(android.R.id.content), - getString(R.string.sensor_not_connected_tls), null, null, Snackbar.LENGTH_SHORT); - sensorType = 0; - } - } catch (IOException | InterruptedException e) { - e.printStackTrace(); - } - } else { - CustomSnackBar.showSnackBar(getActivity().findViewById(android.R.id.content), - getString(R.string.device_not_found), null, null, Snackbar.LENGTH_SHORT); - sensorType = 0; - } - break; - default: - break; - } - } - - private float getAltitude(float pressure) { - if (pressure <= 0.0) { - return 0; - } else { - return (float) (44330 * (1 - Math.pow(pressure, 1.0 / 5.255))); - } - } -} \ No newline at end of file diff --git a/app/src/main/java/io/pslab/fragment/BaroMeterSettingsFragment.java b/app/src/main/java/io/pslab/fragment/BaroMeterSettingsFragment.java deleted file mode 100644 index 8f3f850f4..000000000 --- a/app/src/main/java/io/pslab/fragment/BaroMeterSettingsFragment.java +++ /dev/null @@ -1,119 +0,0 @@ -package io.pslab.fragment; - -import android.annotation.SuppressLint; -import android.content.SharedPreferences; -import android.os.Bundle; -import com.google.android.material.snackbar.Snackbar; -import androidx.preference.CheckBoxPreference; -import androidx.preference.EditTextPreference; -import androidx.preference.ListPreference; -import androidx.preference.PreferenceFragmentCompat; -import androidx.preference.PreferenceManager; - -import io.pslab.DataFormatter; -import io.pslab.R; -import io.pslab.others.CustomSnackBar; -import io.pslab.others.PSLabPermission; - -public class BaroMeterSettingsFragment extends PreferenceFragmentCompat implements SharedPreferences.OnSharedPreferenceChangeListener { - - public static final String KEY_INCLUDE_LOCATION = "include_location_sensor_data"; - public static final String KEY_UPDATE_PERIOD = "setting_baro_update_period"; - public static final String KEY_HIGH_LIMIT = "setting_baro_high_limit"; - public static final String KEY_BARO_SENSOR_TYPE = "setting_baro_sensor_type"; - - private PSLabPermission psLabPermission; - - private EditTextPreference updatePeriodPref; - private EditTextPreference highLimitPref; - private CheckBoxPreference locationPreference; - private ListPreference sensorTypePreference; - private SharedPreferences sharedPref; - - @Override - public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { - setPreferencesFromResource(R.xml.baro_meter_settings, rootKey); - updatePeriodPref = (EditTextPreference) getPreferenceScreen().findPreference(KEY_UPDATE_PERIOD); - highLimitPref = (EditTextPreference) getPreferenceScreen().findPreference(KEY_HIGH_LIMIT); - locationPreference = (CheckBoxPreference) getPreferenceScreen().findPreference(KEY_INCLUDE_LOCATION); - sensorTypePreference = (ListPreference) getPreferenceScreen().findPreference(KEY_BARO_SENSOR_TYPE); - sharedPref = PreferenceManager.getDefaultSharedPreferences(getActivity()); - - psLabPermission = PSLabPermission.getInstance(); - if (!psLabPermission.checkPermissions(getActivity(), PSLabPermission.MAP_PERMISSION)) { - SharedPreferences.Editor editor = sharedPref.edit(); - editor.putBoolean(BaroMeterSettingsFragment.KEY_INCLUDE_LOCATION, true); - editor.apply(); - } - } - - @Override - public void onResume() { - super.onResume(); - locationPreference.setChecked(sharedPref.getBoolean(KEY_INCLUDE_LOCATION, true)); - updatePeriodPref.setSummary(updatePeriodPref.getText() + " ms"); - highLimitPref.setSummary(highLimitPref.getText() + " atm"); - sensorTypePreference.setSummary(sensorTypePreference.getEntry()); - getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this); - } - - @Override - public void onPause() { - super.onPause(); - getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this); - } - - @SuppressLint("ApplySharedPref") - @Override - public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String s) { - switch (s) { - case KEY_INCLUDE_LOCATION: - if (locationPreference.isChecked()) { - psLabPermission.checkPermissions( - getActivity(), PSLabPermission.MAP_PERMISSION); - } - break; - case KEY_UPDATE_PERIOD: - try { - Integer updatePeriod = Integer.parseInt(updatePeriodPref.getText()); - if (updatePeriod > 2000 || updatePeriod < 100) { - throw new NumberFormatException(); - } else { - updatePeriodPref.setSummary(String.valueOf(updatePeriod) + " ms"); - } - } catch (NumberFormatException e) { - CustomSnackBar.showSnackBar(getActivity().findViewById(android.R.id.content), - getString(R.string.update_period_msg),null,null, Snackbar.LENGTH_SHORT); - updatePeriodPref.setSummary("1000 ms"); - updatePeriodPref.setText("1000"); - SharedPreferences.Editor editor = sharedPref.edit(); - editor.putString(s, "1000"); - editor.commit(); - } - break; - case KEY_HIGH_LIMIT: - try { - double highLimit = Double.parseDouble(highLimitPref.getText()); - if (highLimit > 1.10 || highLimit < 0.00) { - throw new NumberFormatException(); - } else { - highLimitPref.setSummary(DataFormatter.formatDouble(highLimit, DataFormatter.LOW_PRECISION_FORMAT) + " atm"); - } - } catch (NumberFormatException e) { - CustomSnackBar.showSnackBar(getActivity().findViewById(android.R.id.content), - getString(R.string.high_limit_msg),null,null,Snackbar.LENGTH_SHORT); - highLimitPref.setSummary("1.10 atm"); - highLimitPref.setText("1.10"); - SharedPreferences.Editor editor = sharedPref.edit(); - editor.putString(KEY_HIGH_LIMIT, "1.10"); - editor.commit(); - } - break; - case KEY_BARO_SENSOR_TYPE: - sensorTypePreference.setSummary(sensorTypePreference.getEntry()); - break; - default: - break; - } - } -} diff --git a/app/src/main/java/io/pslab/fragment/BluetoothScanFragment.java b/app/src/main/java/io/pslab/fragment/BluetoothScanFragment.java deleted file mode 100644 index d6351bbdf..000000000 --- a/app/src/main/java/io/pslab/fragment/BluetoothScanFragment.java +++ /dev/null @@ -1,162 +0,0 @@ -package io.pslab.fragment; - -import android.bluetooth.BluetoothAdapter; -import android.bluetooth.BluetoothDevice; -import android.bluetooth.BluetoothSocket; -import android.content.BroadcastReceiver; -import android.content.Context; -import android.content.DialogInterface; -import android.content.Intent; -import android.content.IntentFilter; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ArrayAdapter; -import android.widget.Button; -import android.widget.ListView; -import android.widget.ProgressBar; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.fragment.app.DialogFragment; - -import com.google.android.material.snackbar.Snackbar; - -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.util.ArrayList; -import java.util.List; -import java.util.UUID; - -import io.pslab.R; -import io.pslab.others.CustomSnackBar; - -public class BluetoothScanFragment extends DialogFragment { - private Button bluetoothScanStopButton; - private ProgressBar scanProgressBar; - private ListView scannedDevicesListView; - private ArrayAdapter deviceListAdapter; - private List deviceList; - private List bluetoothDevices; - private final BroadcastReceiver broadcastReceiver = new BroadcastReceiver() { - public void onReceive(Context context, Intent intent) { - String action = intent.getAction(); - if (BluetoothDevice.ACTION_FOUND.equals(action)) { - BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); - if (device != null && !bluetoothDevices.contains(device)) { - String deviceName = device.getName(); - deviceList.add(deviceName == null ? device.getAddress() : deviceName); - bluetoothDevices.add(device); - deviceListAdapter.notifyDataSetChanged(); - } - } - } - }; - private BluetoothAdapter bluetoothAdapter; - private boolean startScanning = false; - private BluetoothDevice bluetoothDevice; - private BluetoothSocket mSocket; - private OutputStream mOutputStream; - private InputStream mInputStream; - - @Override - public void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - } - - @Nullable - @Override - public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { - View rootView = inflater.inflate(R.layout.fragment_bluetooth_scan, container, false); - scanProgressBar = rootView.findViewById(R.id.bluetooth_scan_progressbar); - scanProgressBar.setVisibility(View.GONE); - scannedDevicesListView = rootView.findViewById(R.id.bluetooth_scanned_devices_list); - deviceList = new ArrayList<>(); - bluetoothDevices = new ArrayList<>(); - deviceListAdapter = new ArrayAdapter<>(getContext(), android.R.layout.simple_list_item_1, deviceList); - scannedDevicesListView.setAdapter(deviceListAdapter); - bluetoothScanStopButton = rootView.findViewById(R.id.bluetooth_scan_stop_button); - - - bluetoothScanStopButton.setOnClickListener(v -> { - if (startScanning) { - if (bluetoothAdapter != null) - bluetoothAdapter.cancelDiscovery(); - - scanProgressBar.setVisibility(View.GONE); - startScanning = false; - bluetoothScanStopButton.setText(getResources().getString(R.string.bluetooth_scan_text)); - scannedDevicesListView.setClickable(true); - } else - scanDevices(); - }); - - - IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND); - getContext().registerReceiver(broadcastReceiver, filter); - - scannedDevicesListView.setOnItemClickListener((parent, view, position, id) -> { - CustomSnackBar.showSnackBar(getActivity().findViewById(android.R.id.content), - bluetoothDevices.get(position).getAddress(), null, null, Snackbar.LENGTH_SHORT); - bluetoothDevice = bluetoothDevices.get(position); - getDialog().cancel(); - connectBluetooth(); - }); - scanDevices(); - return rootView; - } - - @Override - public void onCancel(DialogInterface dialog) { - super.onCancel(dialog); - } - - private void scanDevices() { - deviceList.clear(); - bluetoothDevices.clear(); - bluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); - if (bluetoothAdapter == null) { - startScanning = false; - CustomSnackBar.showSnackBar(getActivity().findViewById(android.R.id.content), - getString(R.string.bluetooth_not_supported), null, null, Snackbar.LENGTH_SHORT); - } else { - if (!bluetoothAdapter.isEnabled()) { - Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); - int BLUETOOTH_REQUEST_CODE = 100; - startActivityForResult(enableBtIntent, BLUETOOTH_REQUEST_CODE); - startScanning = false; - bluetoothScanStopButton.setText(getResources().getString(R.string.bluetooth_scan_text)); - scannedDevicesListView.setClickable(true); - } else { - startScanning = true; - scannedDevicesListView.setClickable(false); - bluetoothAdapter.startDiscovery(); - scanProgressBar.setVisibility(View.VISIBLE); - bluetoothScanStopButton.setText(getResources().getString(R.string.bluetooth_stop_text)); - } - } - } - - @Override - public void onResume() { - super.onResume(); - ViewGroup.LayoutParams params = getDialog().getWindow().getAttributes(); - params.height = ViewGroup.LayoutParams.MATCH_PARENT; - params.width = ViewGroup.LayoutParams.MATCH_PARENT; - getDialog().getWindow().setAttributes((android.view.WindowManager.LayoutParams) params); - } - - private void connectBluetooth() { - try { - UUID uuid = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"); //Standard SerialPortService ID - mSocket = bluetoothDevice.createInsecureRfcommSocketToServiceRecord(uuid); - mSocket.connect(); - mOutputStream = mSocket.getOutputStream(); - mInputStream = mSocket.getInputStream(); - } catch (IOException e) { - e.printStackTrace(); - } - } -} diff --git a/app/src/main/java/io/pslab/fragment/ChannelParametersFragment.java b/app/src/main/java/io/pslab/fragment/ChannelParametersFragment.java deleted file mode 100644 index 337d04eec..000000000 --- a/app/src/main/java/io/pslab/fragment/ChannelParametersFragment.java +++ /dev/null @@ -1,310 +0,0 @@ -package io.pslab.fragment; - -import android.Manifest; -import android.app.AlertDialog; -import android.content.DialogInterface; -import android.content.pm.PackageManager; -import android.os.Bundle; - -import androidx.annotation.NonNull; -import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; - -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.AdapterView; -import android.widget.ArrayAdapter; -import android.widget.CheckBox; -import android.widget.CompoundButton; -import android.widget.Spinner; - -import com.google.android.material.snackbar.Snackbar; - -import io.pslab.DataFormatter; -import io.pslab.R; -import io.pslab.activity.OscilloscopeActivity; -import io.pslab.others.CustomSnackBar; - -public class ChannelParametersFragment extends Fragment { - - private static final int RECORD_AUDIO_REQUEST_CODE = 1; - - private CheckBox checkBoxCH1; - private CheckBox checkBoxCH2; - private CheckBox checkBoxCH3; - private Spinner spinnerRangeCh1; - private Spinner spinnerRangeCh2; - private Spinner spinnerChannelSelect; - private CheckBox builtInMicCheckBox; - private CheckBox pslabMicCheckBox; - - public static ChannelParametersFragment newInstance() { - return new ChannelParametersFragment(); - } - - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { - - View v = inflater.inflate(R.layout.fragment_channel_parameters, container, false); - - final String[] ranges = {"+/-16V", "+/-8V", "+/-4V", "+/-3V", "+/-2V", - "+/-1" + DataFormatter.decSeparator + "5V", "+/-1V", "+/-500mV", "+/-160V"}; - final String[] channels = {"CH1", "CH2", "CH3", "MIC", "CAP", "RES", "VOL"}; - final String[] mics = {"MICROPHONE", "IN-BUILT MIC"}; - - spinnerRangeCh1 = v.findViewById(R.id.spinner_range_ch1_cp); - spinnerRangeCh2 = v.findViewById(R.id.spinner_range_ch2_cp); - spinnerChannelSelect = v.findViewById(R.id.spinner_channel_select_cp); - - boolean tabletSize = getResources().getBoolean(R.bool.isTablet); - checkBoxCH1 = v.findViewById(R.id.checkBox_ch1_cp); - checkBoxCH2 = v.findViewById(R.id.checkBox_ch2_cp); - checkBoxCH3 = v.findViewById(R.id.checkBox_ch3_cp); - checkBoxCH3.setText(getString(R.string.ch3_value, 3.3)); - - builtInMicCheckBox = v.findViewById(R.id.built_in_mic_cb); - pslabMicCheckBox = v.findViewById(R.id.pslab_mic_cb); - ArrayAdapter rangesAdapter; - ArrayAdapter channelsAdapter; - ArrayAdapter micsAdapter; - if (tabletSize) { - rangesAdapter = new ArrayAdapter<>(this.getActivity(), R.layout.custom_spinner_tablet, ranges); - channelsAdapter = new ArrayAdapter<>(this.getActivity(), R.layout.custom_spinner_tablet, channels); - micsAdapter = new ArrayAdapter<>(this.getActivity(), R.layout.custom_spinner_mic_tablet, mics); - } else { - rangesAdapter = new ArrayAdapter<>(this.getActivity(), R.layout.custom_spinner, ranges); - channelsAdapter = new ArrayAdapter<>(this.getActivity(), R.layout.custom_spinner, channels); - micsAdapter = new ArrayAdapter<>(this.getActivity(), R.layout.custom_spinner_mic, mics); - - } - rangesAdapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line); - channelsAdapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line); - micsAdapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line); - - spinnerRangeCh1.setAdapter(rangesAdapter); - spinnerRangeCh1.setSelection(rangesAdapter.getPosition("+/-16V"), true); - spinnerRangeCh2.setAdapter(rangesAdapter); - spinnerRangeCh2.setSelection(rangesAdapter.getPosition("+/-16V"), true); - spinnerChannelSelect.setAdapter(channelsAdapter); - spinnerChannelSelect.setSelection(channelsAdapter.getPosition("CH1"), true); - - spinnerRangeCh1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { - @Override - public void onItemSelected(AdapterView parent, View view, int position, long id) { - switch (position) { - case 0: - ((OscilloscopeActivity) getActivity()).setLeftYAxisScale(16, -16); - break; - case 1: - ((OscilloscopeActivity) getActivity()).setLeftYAxisScale(8, -8); - break; - case 2: - ((OscilloscopeActivity) getActivity()).setLeftYAxisScale(4, -4); - break; - case 3: - ((OscilloscopeActivity) getActivity()).setLeftYAxisScale(3, -3); - break; - case 4: - ((OscilloscopeActivity) getActivity()).setLeftYAxisScale(2, -2); - break; - case 5: - ((OscilloscopeActivity) getActivity()).setLeftYAxisScale(1.5, -1.5); - break; - case 6: - ((OscilloscopeActivity) getActivity()).setLeftYAxisScale(1, -1); - break; - case 7: - ((OscilloscopeActivity) getActivity()).setLeftYAxisScale(500, -500); - break; - case 8: - ((OscilloscopeActivity) getActivity()).setLeftYAxisScale(160, -160); - openAlertDialogBox("CH1"); - break; - } - } - - @Override - public void onNothingSelected(AdapterView parent) { - - } - }); - - spinnerRangeCh2.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { - @Override - public void onItemSelected(AdapterView parent, View view, int position, long id) { - switch (position) { - case 0: - ((OscilloscopeActivity) getActivity()).setRightYAxisScale(16, -16); - break; - case 1: - ((OscilloscopeActivity) getActivity()).setRightYAxisScale(8, -8); - break; - case 2: - ((OscilloscopeActivity) getActivity()).setRightYAxisScale(4, -4); - break; - case 3: - ((OscilloscopeActivity) getActivity()).setRightYAxisScale(3, -3); - break; - case 4: - ((OscilloscopeActivity) getActivity()).setRightYAxisScale(2, -2); - break; - case 5: - ((OscilloscopeActivity) getActivity()).setRightYAxisScale(1.5, -1.5); - break; - case 6: - ((OscilloscopeActivity) getActivity()).setRightYAxisScale(1, -1); - break; - case 7: - ((OscilloscopeActivity) getActivity()).setRightYAxisScale(500, -500); - break; - case 8: - ((OscilloscopeActivity) getActivity()).setRightYAxisScale(160, -160); - openAlertDialogBox("CH2"); - break; - } - } - - @Override - public void onNothingSelected(AdapterView parent) { - - } - }); - - spinnerChannelSelect.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { - @Override - public void onItemSelected(AdapterView parent, View view, int position, long id) { - switch (position) { - case 0: - ((OscilloscopeActivity) getActivity()).setLeftYAxisLabel(spinnerChannelSelect.getSelectedItem().toString()); - spinnerRangeCh1.setEnabled(true); - break; - case 1: - ((OscilloscopeActivity) getActivity()).setLeftYAxisScale(16, -16); - ((OscilloscopeActivity) getActivity()).setLeftYAxisLabel(spinnerChannelSelect.getSelectedItem().toString()); - spinnerRangeCh1.setEnabled(false); - break; - case 2: - ((OscilloscopeActivity) getActivity()).setLeftYAxisScale(3, -3); - ((OscilloscopeActivity) getActivity()).setLeftYAxisLabel(spinnerChannelSelect.getSelectedItem().toString()); - spinnerRangeCh1.setEnabled(false); - break; - case 3: - ((OscilloscopeActivity) getActivity()).setLeftYAxisScale(3, -3); - ((OscilloscopeActivity) getActivity()).setLeftYAxisLabel(spinnerChannelSelect.getSelectedItem().toString()); - break; - case 4: - ((OscilloscopeActivity) getActivity()).setLeftYAxisScale(3, 0); - ((OscilloscopeActivity) getActivity()).setLeftYAxisLabel(spinnerChannelSelect.getSelectedItem().toString()); - spinnerRangeCh1.setEnabled(false); - break; - case 5: - ((OscilloscopeActivity) getActivity()).setLeftYAxisScale(3, 0); - ((OscilloscopeActivity) getActivity()).setLeftYAxisLabel(spinnerChannelSelect.getSelectedItem().toString()); - spinnerRangeCh1.setEnabled(false); - break; - case 6: - ((OscilloscopeActivity) getActivity()).setLeftYAxisScale(3, 0); - ((OscilloscopeActivity) getActivity()).setLeftYAxisLabel(spinnerChannelSelect.getSelectedItem().toString()); - spinnerRangeCh1.setEnabled(false); - break; - } - } - - @Override - public void onNothingSelected(AdapterView parent) { - - } - }); - - checkBoxCH1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - ((OscilloscopeActivity) getActivity()).isCH1Selected = isChecked; - } - }); - - checkBoxCH2.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - ((OscilloscopeActivity) getActivity()).isCH2Selected = isChecked; - } - }); - - checkBoxCH3.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - ((OscilloscopeActivity) getActivity()).isCH3Selected = isChecked; - } - }); - builtInMicCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - ((OscilloscopeActivity) getActivity()).isInBuiltMicSelected = isChecked; - ((OscilloscopeActivity) getActivity()).isAudioInputSelected = isChecked; - if (isChecked) { - ((OscilloscopeActivity) getActivity()).maxTimebase = 38.4f; - if (pslabMicCheckBox.isChecked()) { - ((OscilloscopeActivity) getActivity()).isMICSelected = false; - pslabMicCheckBox.setChecked(false); - ((OscilloscopeActivity) getActivity()).isAudioInputSelected = true; - } - if (ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.RECORD_AUDIO) != PackageManager.PERMISSION_GRANTED) { - requestPermissions(new String[]{Manifest.permission.RECORD_AUDIO}, RECORD_AUDIO_REQUEST_CODE); - ((OscilloscopeActivity) getActivity()).isAudioInputSelected = false; - } - } else { - ((OscilloscopeActivity) getActivity()).maxTimebase = 102.4f; - } - } - }); - - pslabMicCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - ((OscilloscopeActivity) getActivity()).isMICSelected = isChecked; - ((OscilloscopeActivity) getActivity()).isAudioInputSelected = isChecked; - if (isChecked) { - if (builtInMicCheckBox.isChecked()) { - ((OscilloscopeActivity) getActivity()).isInBuiltMicSelected = false; - builtInMicCheckBox.setChecked(false); - ((OscilloscopeActivity) getActivity()).isAudioInputSelected = true; - } - if (ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.RECORD_AUDIO) != PackageManager.PERMISSION_GRANTED) { - requestPermissions(new String[]{Manifest.permission.RECORD_AUDIO}, RECORD_AUDIO_REQUEST_CODE); - ((OscilloscopeActivity) getActivity()).isAudioInputSelected = false; - } - } - } - }); - return v; - } - - @Override - public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { - if (requestCode == RECORD_AUDIO_REQUEST_CODE) { - if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { - ((OscilloscopeActivity) getActivity()).isInBuiltMicSelected = true; - } else { - CustomSnackBar.showSnackBar(getActivity().findViewById(android.R.id.content), - "This feature won't work.", null, null, Snackbar.LENGTH_SHORT); - if (builtInMicCheckBox.isChecked()) - builtInMicCheckBox.toggle(); - } - } - } - - private void openAlertDialogBox(String inputSource) { - new AlertDialog.Builder(getActivity()) - .setIcon(android.R.drawable.ic_dialog_alert) - .setTitle("Message") - .setMessage("Connect a 10MOhm resistor with " + inputSource) - .setPositiveButton("OK", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - } - }) - .show(); - } -} diff --git a/app/src/main/java/io/pslab/fragment/CompassDataFragment.java b/app/src/main/java/io/pslab/fragment/CompassDataFragment.java deleted file mode 100644 index e4ce08413..000000000 --- a/app/src/main/java/io/pslab/fragment/CompassDataFragment.java +++ /dev/null @@ -1,675 +0,0 @@ -package io.pslab.fragment; - -import android.graphics.Bitmap; -import android.hardware.Sensor; -import android.hardware.SensorEvent; -import android.hardware.SensorEventListener; -import android.hardware.SensorManager; -import android.location.Location; -import android.os.Bundle; -import android.os.Environment; -import android.os.Handler; -import androidx.annotation.NonNull; - -import androidx.annotation.Nullable; -import com.google.android.material.snackbar.Snackbar; -import androidx.fragment.app.Fragment; - -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.view.animation.Animation; -import android.view.animation.RotateAnimation; -import android.widget.ImageView; -import android.widget.RadioButton; -import android.widget.TextView; - -import java.io.File; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Date; -import java.util.Timer; -import java.util.TimerTask; - -import butterknife.BindView; -import butterknife.ButterKnife; -import butterknife.Unbinder; -import io.pslab.R; -import io.pslab.activity.CompassActivity; -import io.pslab.communication.ScienceLab; -import io.pslab.communication.peripherals.I2C; -import io.pslab.interfaces.OperationCallback; -import io.pslab.models.CompassData; -import io.pslab.models.SensorDataBlock; -import io.pslab.others.CSVDataLine; -import io.pslab.others.CSVLogger; -import io.pslab.others.CustomSnackBar; -import io.pslab.others.ScienceLabCommon; - -import static android.content.Context.SENSOR_SERVICE; -import static io.pslab.others.CSVLogger.CSV_DIRECTORY; - -public class CompassDataFragment extends Fragment implements OperationCallback { - - private static final CSVDataLine CSV_HEADER = new CSVDataLine() - .add("Timestamp") - .add("DateTime") - .add("X-reading") - .add("Y-reading") - .add("Z-reading") - .add("Axis") - .add("Latitude") - .add("Longitude"); - private Unbinder unbinder; - private static int sensorType = 0; - @Nullable - @BindView(R.id.compass) - ImageView compass; - @BindView(R.id.degree_indicator) - TextView degreeIndicator; - - @BindView(R.id.compass_radio_button_x_axis) - RadioButton xAxisRadioButton; - @BindView(R.id.compass_radio_button_y_axis) - RadioButton yAxisRadioButton; - @BindView(R.id.compass_radio_button_z_axis) - RadioButton zAxisRadioButton; - - @BindView(R.id.tv_sensor_hmc5883l_bx) - TextView xAxisMagneticField; - @BindView(R.id.tv_sensor_hmc5883l_by) - TextView yAxisMagneticField; - @BindView(R.id.tv_sensor_hmc5883l_bz) - TextView zAxisMagneticField; - - private enum COMPASS_SENSOR {INBUILT_SENSOR, HMC5883L_SENSOR} - - private float currentDegree = 0f; - private int direction; - private SensorManager sensorManager; - private Sensor sensor; - private Timer graphTimer; - private long startTime, block; - private ArrayList recordedCompassArray; - private CompassData compassData = new CompassData(); - private CompassActivity compassActivity; - private static int updatePeriod = 1000; - private long previousTimeElapsed = (System.currentTimeMillis() - startTime) / updatePeriod; - private int turns = 0; - private boolean returningFromPause = false; - private View rootView; - - public static CompassDataFragment newInstance() { - return new CompassDataFragment(); - } - - public static void setParameters(String type) { - CompassDataFragment.sensorType = Integer.valueOf(type); - } - - @Override - public void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - startTime = System.currentTimeMillis(); - compassActivity = (CompassActivity) getActivity(); - } - - @Override - public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - rootView = inflater.inflate(R.layout.activity_compass, container, false); - unbinder = ButterKnife.bind(this, rootView); - - xAxisRadioButton.setChecked(true); - direction = 0; - - xAxisRadioButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - xAxisRadioButton.setChecked(true); - yAxisRadioButton.setChecked(false); - zAxisRadioButton.setChecked(false); - compassData.setAxis(getContext().getResources().getString(R.string.compass_X_axis)); - direction = 0; - } - }); - - yAxisRadioButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - xAxisRadioButton.setChecked(false); - yAxisRadioButton.setChecked(true); - zAxisRadioButton.setChecked(false); - compassData.setAxis(getContext().getResources().getString(R.string.compass_Y_axis)); - direction = 1; - } - }); - - zAxisRadioButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - xAxisRadioButton.setChecked(false); - yAxisRadioButton.setChecked(false); - zAxisRadioButton.setChecked(true); - compassData.setAxis(getContext().getResources().getString(R.string.compass_Z_axis)); - direction = 2; - } - }); - compassActivity.addLocation = true; - return rootView; - } - - private SensorEventListener compassEventListner = new SensorEventListener() { - @Override - public void onSensorChanged(SensorEvent event) { - float degree; - switch (direction) { - case 0: - degree = Math.round(event.values[0]); - if (degree < 0) - degree += 360; - break; - case 1: - degree = Math.round(event.values[1]); - if (degree < 0) - degree += 360; - break; - case 2: - degree = Math.round(event.values[2]); - if (degree < 0) - degree += 360; - break; - default: - degree = Math.round(event.values[0]); - break; - } - - setCompassAnimation(degree); - - degreeIndicator.setText(String.valueOf(degree)); - currentDegree = -degree; - - degree = Math.round(event.values[0]); - if (degree < 0) - degree += 360; - compassData.setBx(degree); - xAxisMagneticField.setText(String.valueOf(degree)); - - degree = Math.round(event.values[1]); - if (degree < 0) - degree += 360; - compassData.setBy(degree); - yAxisMagneticField.setText(String.valueOf(degree)); - - degree = Math.round(event.values[2]); - if (degree < 0) - degree += 360; - compassData.setBz(degree); - zAxisMagneticField.setText(String.valueOf(degree)); - } - - @Override - public void onAccuracyChanged(Sensor sensor, int accuracy) { - - } - }; - - private void setCompassAnimation(float degree) { - - RotateAnimation ra = new RotateAnimation( - currentDegree, - -degree, - Animation.RELATIVE_TO_SELF, 0.5f, - Animation.RELATIVE_TO_SELF, - 0.5f); - - ra.setDuration(210); - ra.setFillAfter(true); - - compass.startAnimation(ra); - } - - @Override - public void onResume() { - super.onResume(); - if (compassActivity.playingData) { - recordedCompassArray = new ArrayList<>(); - resetInstrumentData(); - playRecordedData(); - } else if (compassActivity.viewingData) { - recordedCompassArray = new ArrayList<>(); - resetInstrumentData(); - plotAllRecordedData(); - } else if (!compassActivity.isRecording) { - updateData(); - initiateCompassSensor(sensorType); - } else if (returningFromPause) { - updateData(); - } - } - - @Override - public void saveGraph() { - compassActivity.csvLogger.prepareLogFile(); - compassActivity.csvLogger.writeMetaData(getResources().getString(R.string.compass)); - compassActivity.csvLogger.writeCSVFile(CSV_HEADER); - for (CompassData compassData : compassActivity.recordedCompassData) { - compassActivity.csvLogger.writeCSVFile( - new CSVDataLine() - .add(compassData.getTime()) - .add(CSVLogger.FILE_NAME_FORMAT.format(new Date(compassData.getTime()))) - .add(compassData.getBx()) - .add(compassData.getBy()) - .add(compassData.getBz()) - .add(compassData.getAxis()) - .add(compassData.getLat()) - .add(compassData.getLon()) - ); - } - View view = rootView.findViewById(R.id.compass_card); - view.setDrawingCacheEnabled(true); - Bitmap b = view.getDrawingCache(); - try { - b.compress(Bitmap.CompressFormat.JPEG, 100, new FileOutputStream(Environment.getExternalStorageDirectory().getAbsolutePath() + - File.separator + CSV_DIRECTORY + File.separator + compassActivity.getSensorName() + - File.separator + CSVLogger.FILE_NAME_FORMAT.format(new Date()) + "_graph.jpg")); - } catch (FileNotFoundException e) { - e.printStackTrace(); - } - } - - private void processRecordedData(long timeGap) { - final Handler handler = new Handler(); - if (graphTimer != null) { - graphTimer.cancel(); - } else { - graphTimer = new Timer(); - } - graphTimer.schedule(new TimerTask() { - @Override - public void run() { - handler.post(new Runnable() { - @Override - public void run() { - if (compassActivity.playingData) { - try { - CompassData d = recordedCompassArray.get(turns); - if (d.getAxis().equals(getContext().getResources().getString(R.string.compass_X_axis))) { - direction = 0; - xAxisRadioButton.setChecked(true); - yAxisRadioButton.setChecked(false); - zAxisRadioButton.setChecked(false); - } else if (d.getAxis().equals(getContext().getResources().getString(R.string.compass_Y_axis))) { - direction = 1; - xAxisRadioButton.setChecked(false); - yAxisRadioButton.setChecked(true); - zAxisRadioButton.setChecked(false); - } else if (d.getAxis().equals(getContext().getResources().getString(R.string.compass_Z_axis))) { - direction = 2; - xAxisRadioButton.setChecked(false); - yAxisRadioButton.setChecked(false); - zAxisRadioButton.setChecked(true); - } - turns++; - float degree = 0; - switch (direction) { - case 0: - if (d.getBx() != null) { - degree = Math.round(d.getBx()); - if (degree < 0) - degree += 360; - } - break; - case 1: - if (d.getBy() != null) { - degree = Math.round(d.getBy()); - if (degree < 0) - degree += 360; - } - break; - case 2: - if (d.getBz() != null) { - degree = Math.round(d.getBz()); - if (degree < 0) - degree += 360; - } - break; - default: - if (d.getBx() != null) { - degree = Math.round(d.getBx()); - } - break; - } - - setCompassAnimation(degree); - - degreeIndicator.setText(String.valueOf(degree)); - currentDegree = -degree; - - if (d.getBx() != null) { - degree = Math.round(d.getBx()); - } - if (degree < 0) - degree += 360; - compassData.setBx(degree); - xAxisMagneticField.setText(String.valueOf(degree)); - - if (d.getBy() != null) { - degree = Math.round(d.getBy()); - } - if (degree < 0) - degree += 360; - compassData.setBy(degree); - yAxisMagneticField.setText(String.valueOf(degree)); - - if (d.getBz() != null) { - degree = Math.round(d.getBz()); - } - if (degree < 0) - degree += 360; - compassData.setBz(degree); - zAxisMagneticField.setText(String.valueOf(degree)); - - } catch (IndexOutOfBoundsException e) { - graphTimer.cancel(); - graphTimer = null; - turns = 0; - compassActivity.playingData = false; - compassActivity.startedPlay = false; - compassActivity.invalidateOptionsMenu(); - } - } - } - }); - } - }, 0, timeGap); - } - - @Override - public void playData() { - resetInstrumentData(); - compassActivity.startedPlay = true; - try { - if (recordedCompassArray.size() > 1) { - CompassData i = recordedCompassArray.get(1); - long timeGap = i.getTime() - i.getBlock(); - processRecordedData(timeGap); - } else { - processRecordedData(0); - } - } catch (IllegalArgumentException e) { - CustomSnackBar.showSnackBar(getActivity().findViewById(android.R.id.content), - getString(R.string.no_data_fetched), null, null, Snackbar.LENGTH_SHORT); - } - } - - @Override - public void stopData() { - if (graphTimer != null) { - graphTimer.cancel(); - graphTimer = null; - } - recordedCompassArray.clear(); - plotAllRecordedData(); - compassActivity.startedPlay = false; - compassActivity.playingData = false; - turns = 0; - compassActivity.invalidateOptionsMenu(); - } - - private void plotAllRecordedData() { - recordedCompassArray.addAll(compassActivity.recordedCompassData); - if (recordedCompassArray.size() != 0) { - for (CompassData d : recordedCompassArray) { - float degree = 0; - switch (direction) { - case 0: - if (d.getBx() != null) { - degree = Math.round(d.getBx()); - if (degree < 0) - degree += 360; - } - break; - case 1: - if (d.getBy() != null) { - degree = Math.round(d.getBy()); - if (degree < 0) - degree += 360; - } - break; - case 2: - if (d.getBz() != null) { - degree = Math.round(d.getBz()); - if (degree < 0) - degree += 360; - } - break; - default: - if (d.getBx() != null) { - degree = Math.round(d.getBx()); - } - break; - } - - setCompassAnimation(degree); - - degreeIndicator.setText(String.valueOf(degree)); - currentDegree = -degree; - - if (d.getBx() != null) { - degree = Math.round(d.getBx()); - } - if (degree < 0) - degree += 360; - compassData.setBx(degree); - xAxisMagneticField.setText(String.valueOf(degree)); - - if (d.getBy() != null) { - degree = Math.round(d.getBy()); - } - if (degree < 0) - degree += 360; - compassData.setBy(degree); - yAxisMagneticField.setText(String.valueOf(degree)); - - if (d.getBz() != null) { - degree = Math.round(d.getBz()); - } - if (degree < 0) - degree += 360; - compassData.setBz(degree); - zAxisMagneticField.setText(String.valueOf(degree)); - - if (d.getAxis().equals(getContext().getResources().getString(R.string.compass_X_axis))) { - xAxisRadioButton.setChecked(true); - yAxisRadioButton.setChecked(false); - zAxisRadioButton.setChecked(false); - } else if (d.getAxis().equals(getContext().getResources().getString(R.string.compass_Y_axis))) { - xAxisRadioButton.setChecked(false); - yAxisRadioButton.setChecked(true); - zAxisRadioButton.setChecked(false); - } else if (d.getAxis().equals(getContext().getResources().getString(R.string.compass_Z_axis))) { - xAxisRadioButton.setChecked(false); - yAxisRadioButton.setChecked(false); - zAxisRadioButton.setChecked(true); - } - } - } - } - - private void playRecordedData() { - recordedCompassArray.addAll(compassActivity.recordedCompassData); - try { - if (recordedCompassArray.size() > 1) { - CompassData i = recordedCompassArray.get(1); - long timeGap = i.getTime() - i.getBlock(); - processRecordedData(timeGap); - } else { - processRecordedData(0); - } - } catch (IllegalArgumentException e) { - CustomSnackBar.showSnackBar(getActivity().findViewById(android.R.id.content), - getString(R.string.no_data_fetched), null, null, Snackbar.LENGTH_SHORT); - } - } - - @Override - public void onDestroyView() { - super.onDestroyView(); - if (graphTimer != null) { - graphTimer.cancel(); - } - if (sensorManager != null) { - sensorManager.unregisterListener(compassEventListner); - } - unbinder.unbind(); - } - - @Override - public void onPause() { - super.onPause(); - if (graphTimer != null) { - returningFromPause = true; - graphTimer.cancel(); - graphTimer = null; - if (compassActivity.playingData) { - compassActivity.finish(); - } - } - } - - private void updateData() { - final Handler handler = new Handler(); - if (graphTimer != null) { - graphTimer.cancel(); - } - graphTimer = new Timer(); - graphTimer.schedule(new TimerTask() { - @Override - public void run() { - handler.post(new Runnable() { - @Override - public void run() { - try { - visualizeData(); - } catch (NullPointerException e) { - /* Pass for another refresh round */ - } - } - }); - } - }, 0, updatePeriod); - } - - private void visualizeData() { - long timeElapsed = ((System.currentTimeMillis() - startTime) / updatePeriod); - if (timeElapsed != previousTimeElapsed) { - previousTimeElapsed = timeElapsed; - long currentTime = System.currentTimeMillis(); - writeLogToFile(currentTime, compassData.getBx(), compassData.getBy(), compassData.getBz(), compassData.getAxis()); - } - } - - private void writeLogToFile(long timestamp, Float compassXvalue, Float compassYvalue, Float compassZvalue, String compassAxis) { - if (getActivity() != null && compassActivity.isRecording) { - if (compassActivity.writeHeaderToFile) { - compassActivity.csvLogger.prepareLogFile(); - compassActivity.csvLogger.writeMetaData(getResources().getString(R.string.compass)); - compassActivity.csvLogger.writeCSVFile(CSV_HEADER); - block = timestamp; - compassActivity.recordSensorDataBlockID(new SensorDataBlock(timestamp, compassActivity.getSensorName())); - compassActivity.writeHeaderToFile = !compassActivity.writeHeaderToFile; - } - if (compassActivity.addLocation && compassActivity.gpsLogger.isGPSEnabled()) { - Location location = compassActivity.gpsLogger.getDeviceLocation(); - compassActivity.csvLogger.writeCSVFile( - new CSVDataLine() - .add(timestamp) - .add(CSVLogger.FILE_NAME_FORMAT.format(new Date(timestamp))) - .add(compassXvalue) - .add(compassYvalue) - .add(compassZvalue) - .add(compassAxis) - .add(location.getLatitude()) - .add(location.getLongitude()) - ); - compassData = new CompassData(timestamp, block, compassXvalue, compassYvalue, compassZvalue, compassAxis, location.getLatitude(), location.getLongitude()); - } else { - compassActivity.csvLogger.writeCSVFile( - new CSVDataLine() - .add(timestamp) - .add(CSVLogger.FILE_NAME_FORMAT.format(new Date(timestamp))) - .add(compassXvalue) - .add(compassYvalue) - .add(compassZvalue) - .add(compassAxis) - .add(0.0) - .add(0.0) - ); - compassData = new CompassData(timestamp, block, compassXvalue, compassYvalue, compassZvalue, compassAxis, 0.0, 0.0); - } - compassActivity.recordSensorData(compassData); - } else { - compassActivity.writeHeaderToFile = true; - } - } - - private void resetInstrumentData() { - sensor = null; - if (sensorManager != null) { - sensorManager.unregisterListener(compassEventListner); - } - startTime = System.currentTimeMillis(); - xAxisMagneticField.setText(getResources().getString(R.string.value_null)); - yAxisMagneticField.setText(getResources().getString(R.string.value_null)); - zAxisMagneticField.setText(getResources().getString(R.string.value_null)); - } - - private void initiateCompassSensor(int type) { - - CompassDataFragment.COMPASS_SENSOR s = CompassDataFragment.COMPASS_SENSOR.values()[type]; - resetInstrumentData(); - ScienceLab scienceLab; - switch (s) { - case INBUILT_SENSOR: - degreeIndicator.setText(getResources().getStringArray(R.array.compass_sensors)[0]); - sensorManager = (SensorManager) getContext().getSystemService(SENSOR_SERVICE); - sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION); - if (sensor == null) { - CustomSnackBar.showSnackBar(getActivity().findViewById(android.R.id.content), - getString(R.string.no_compass_sensor), null, null, Snackbar.LENGTH_LONG); - } else { - sensorManager.registerListener(compassEventListner, sensor, SensorManager.SENSOR_DELAY_GAME); - } - break; - case HMC5883L_SENSOR: - degreeIndicator.setText(getResources().getStringArray(R.array.compass_sensors)[1]); - scienceLab = ScienceLabCommon.scienceLab; - if (scienceLab.isConnected()) { - try { - I2C i2c = scienceLab.i2c; - ArrayList data; - data = i2c.scan(null); - if (data.contains(0x39)) { - sensorType = 1; - } else { - CustomSnackBar.showSnackBar(getActivity().findViewById(android.R.id.content), - getString(R.string.sensor_not_connected_tls), null, null, Snackbar.LENGTH_SHORT); - sensorType = 0; - } - } catch (IOException e) { - e.printStackTrace(); - } - } else { - CustomSnackBar.showSnackBar(getActivity().findViewById(android.R.id.content), - getString(R.string.device_not_found), null, null, Snackbar.LENGTH_SHORT); - sensorType = 0; - } - break; - default: - break; - } - - } -} \ No newline at end of file diff --git a/app/src/main/java/io/pslab/fragment/CompassSettingsFragment.java b/app/src/main/java/io/pslab/fragment/CompassSettingsFragment.java deleted file mode 100644 index 8562b21a4..000000000 --- a/app/src/main/java/io/pslab/fragment/CompassSettingsFragment.java +++ /dev/null @@ -1,62 +0,0 @@ -package io.pslab.fragment; - -import android.annotation.SuppressLint; -import android.content.SharedPreferences; -import android.os.Bundle; -import androidx.preference.ListPreference; -import androidx.preference.PreferenceFragmentCompat; -import androidx.preference.PreferenceManager; - -import io.pslab.R; -import io.pslab.others.PSLabPermission; - -public class CompassSettingsFragment extends PreferenceFragmentCompat implements SharedPreferences.OnSharedPreferenceChangeListener { - - public static final String KEY_COMPASS_SENSOR_TYPE = "setting_compass_sensor_type"; - public static final String KEY_INCLUDE_LOCATION = "include_location_sensor_data"; - - private PSLabPermission psLabPermission; - - private ListPreference sensorTypePreference; - private SharedPreferences sharedPref; - - @Override - public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { - setPreferencesFromResource(R.xml.compass_settings, rootKey); - sensorTypePreference = (ListPreference) getPreferenceScreen().findPreference(KEY_COMPASS_SENSOR_TYPE); - sharedPref = PreferenceManager.getDefaultSharedPreferences(getActivity()); - - psLabPermission = PSLabPermission.getInstance(); - if (!psLabPermission.checkPermissions(getActivity(), PSLabPermission.MAP_PERMISSION)) { - SharedPreferences.Editor editor = sharedPref.edit(); - editor.putBoolean(CompassSettingsFragment.KEY_INCLUDE_LOCATION, true); - editor.apply(); - } - } - - @Override - public void onResume() { - super.onResume(); - sensorTypePreference.setSummary(sensorTypePreference.getEntry()); - getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this); - } - - @Override - public void onPause() { - super.onPause(); - getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this); - } - - @SuppressLint("ApplySharedPref") - @Override - public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String s) { - switch (s) { - case KEY_COMPASS_SENSOR_TYPE: - sensorTypePreference.setSummary(sensorTypePreference.getEntry()); - break; - default: - break; - } - } -} - diff --git a/app/src/main/java/io/pslab/fragment/ControlFragmentAdvanced.java b/app/src/main/java/io/pslab/fragment/ControlFragmentAdvanced.java deleted file mode 100644 index a9c3317c8..000000000 --- a/app/src/main/java/io/pslab/fragment/ControlFragmentAdvanced.java +++ /dev/null @@ -1,447 +0,0 @@ -package io.pslab.fragment; - -import android.content.DialogInterface; -import android.os.Bundle; -import android.text.InputType; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.Button; -import android.widget.CheckBox; -import android.widget.CompoundButton; -import android.widget.EditText; -import android.widget.Spinner; - -import androidx.annotation.Nullable; -import androidx.appcompat.app.AlertDialog; -import androidx.fragment.app.Fragment; - -import com.google.android.material.snackbar.Snackbar; - -import io.pslab.DataFormatter; -import io.pslab.R; -import io.pslab.communication.ScienceLab; -import io.pslab.others.CustomSnackBar; -import io.pslab.others.EditTextWidget; -import io.pslab.others.ScienceLabCommon; - -import java.util.HashMap; -import java.util.Map; - - -public class ControlFragmentAdvanced extends Fragment { - - private ScienceLab scienceLab; - private Map state = new HashMap<>(); - - public static ControlFragmentAdvanced newInstance() { - return new ControlFragmentAdvanced(); - } - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - scienceLab = ScienceLabCommon.scienceLab; - state.put("SQR1", 0); - state.put("SQR2", 0); - state.put("SQR3", 0); - state.put("SQR4", 0); - } - - @Override - public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { - View view = inflater.inflate(R.layout.fragment_control_advanced, container, false); - - Button buttonControlAdvanced1 = view.findViewById(R.id.button_control_advanced1); - Button buttonControlAdvanced2 = view.findViewById(R.id.button_control_advanced2); - - final EditText etWidgetControlAdvanced1 = view.findViewById(R.id.etwidget_control_advanced1); - final EditText etWidgetControlAdvanced2 = view.findViewById(R.id.etwidget_control_advanced2); - final EditText etWidgetControlAdvanced3 = view.findViewById(R.id.etwidget_control_advanced3); - final EditText etWidgetControlAdvanced4 = view.findViewById(R.id.etwidget_control_advanced4); - final EditText etWidgetControlAdvanced5 = view.findViewById(R.id.etwidget_control_advanced5); - final EditText etWidgetControlAdvanced6 = view.findViewById(R.id.etwidget_control_advanced6); - final EditText etWidgetControlAdvanced7 = view.findViewById(R.id.etwidget_control_advanced7); - final EditText etWidgetControlAdvanced8 = view.findViewById(R.id.etwidget_control_advanced8); - final EditText etWidgetControlAdvanced9 = view.findViewById(R.id.etwidget_control_advanced9); - final EditText etWidgetControlAdvanced10 = view.findViewById(R.id.etwidget_control_advanced10); - final EditText etWidgetControlAdvanced11 = view.findViewById(R.id.etwidget_control_advanced11); - final Spinner spinnerControlAdvanced1 = view.findViewById(R.id.spinner_control_advanced1); - final Spinner spinnerControlAdvanced2 = view.findViewById(R.id.spinner_control_advanced2); - - CheckBox checkBoxControlAdvanced1 = view.findViewById(R.id.checkbox_control_advanced1); - CheckBox checkBoxControlAdvanced2 = view.findViewById(R.id.checkbox_control_advanced2); - CheckBox checkBoxControlAdvanced3 = view.findViewById(R.id.checkbox_control_advanced3); - CheckBox checkBoxControlAdvanced4 = view.findViewById(R.id.checkbox_control_advanced4); - - etWidgetControlAdvanced1.setInputType(InputType.TYPE_NULL); - etWidgetControlAdvanced2.setInputType(InputType.TYPE_NULL); - etWidgetControlAdvanced3.setInputType(InputType.TYPE_NULL); - etWidgetControlAdvanced4.setInputType(InputType.TYPE_NULL); - etWidgetControlAdvanced5.setInputType(InputType.TYPE_NULL); - etWidgetControlAdvanced6.setInputType(InputType.TYPE_NULL); - etWidgetControlAdvanced7.setInputType(InputType.TYPE_NULL); - etWidgetControlAdvanced8.setInputType(InputType.TYPE_NULL); - etWidgetControlAdvanced9.setInputType(InputType.TYPE_NULL); - etWidgetControlAdvanced10.setInputType(InputType.TYPE_NULL); - etWidgetControlAdvanced11.setInputType(InputType.TYPE_NULL); - - etWidgetControlAdvanced1.setText(DataFormatter.formatDouble(10, DataFormatter.MINIMAL_PRECISION_FORMAT)); - etWidgetControlAdvanced2.setText(DataFormatter.formatDouble(10, DataFormatter.MINIMAL_PRECISION_FORMAT)); - etWidgetControlAdvanced3.setText(DataFormatter.formatDouble(10, DataFormatter.MINIMAL_PRECISION_FORMAT)); - etWidgetControlAdvanced4.setText(DataFormatter.formatDouble(0, DataFormatter.MINIMAL_PRECISION_FORMAT)); - etWidgetControlAdvanced5.setText(DataFormatter.formatDouble(0, DataFormatter.MINIMAL_PRECISION_FORMAT)); - etWidgetControlAdvanced6.setText(DataFormatter.formatDouble(0, DataFormatter.MINIMAL_PRECISION_FORMAT)); - etWidgetControlAdvanced7.setText(DataFormatter.formatDouble(0, DataFormatter.MINIMAL_PRECISION_FORMAT)); - etWidgetControlAdvanced8.setText(DataFormatter.formatDouble(0, DataFormatter.MINIMAL_PRECISION_FORMAT)); - etWidgetControlAdvanced9.setText(DataFormatter.formatDouble(0, DataFormatter.MINIMAL_PRECISION_FORMAT)); - etWidgetControlAdvanced10.setText(DataFormatter.formatDouble(0, DataFormatter.MINIMAL_PRECISION_FORMAT)); - etWidgetControlAdvanced11.setText(DataFormatter.formatDouble(0, DataFormatter.MINIMAL_PRECISION_FORMAT)); - etWidgetControlAdvanced1.setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View arg0) { - showInputDialog(etWidgetControlAdvanced1, 1.0, 10.0, 5000.0); - } - }); - - etWidgetControlAdvanced1.setOnFocusChangeListener(new View.OnFocusChangeListener() { - @Override - public void onFocusChange(View v, boolean hasFocus) { - if (hasFocus) { - showInputDialog(etWidgetControlAdvanced1, 1.0, 10.0, 5000.0); - } - } - }); - - etWidgetControlAdvanced2.setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View arg0) { - - showInputDialog(etWidgetControlAdvanced2, 1.0, 10.0, 5000.0); - - } - }); - - etWidgetControlAdvanced2.setOnFocusChangeListener(new View.OnFocusChangeListener() { - @Override - public void onFocusChange(View v, boolean hasFocus) { - if (hasFocus) { - showInputDialog(etWidgetControlAdvanced2, 1.0, 10.0, 5000.0); - } - } - }); - - etWidgetControlAdvanced3.setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View arg0) { - showInputDialog(etWidgetControlAdvanced3, 1.0, 0.0, 360.0); - - } - }); - - etWidgetControlAdvanced3.setOnFocusChangeListener(new View.OnFocusChangeListener() { - @Override - public void onFocusChange(View v, boolean hasFocus) { - if (hasFocus) { - showInputDialog(etWidgetControlAdvanced3, 1.0, 0.0, 360.0); - } - } - }); - - etWidgetControlAdvanced4.setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View arg0) { - showInputDialog(etWidgetControlAdvanced4, 0.1, 0.0, 1.0); - } - }); - - etWidgetControlAdvanced4.setOnFocusChangeListener(new View.OnFocusChangeListener() { - @Override - public void onFocusChange(View v, boolean hasFocus) { - if (hasFocus) { - showInputDialog(etWidgetControlAdvanced4, 0.1, 0.0, 1.0); - } - } - }); - - etWidgetControlAdvanced5.setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View arg0) { - showInputDialog(etWidgetControlAdvanced5, 1.0, 0.0, 360.0); - } - }); - - etWidgetControlAdvanced5.setOnFocusChangeListener(new View.OnFocusChangeListener() { - @Override - public void onFocusChange(View v, boolean hasFocus) { - if (hasFocus) { - showInputDialog(etWidgetControlAdvanced5, 1.0, 0.0, 360.0); - } - } - }); - - etWidgetControlAdvanced6.setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View arg0) { - - showInputDialog(etWidgetControlAdvanced6, 0.1, 0.0, 1.0); - - } - }); - - etWidgetControlAdvanced6.setOnFocusChangeListener(new View.OnFocusChangeListener() { - @Override - public void onFocusChange(View v, boolean hasFocus) { - if (hasFocus) { - showInputDialog(etWidgetControlAdvanced6, 0.1, 0.0, 1.0); - } - } - }); - - etWidgetControlAdvanced7.setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View arg0) { - - showInputDialog(etWidgetControlAdvanced7, 1.0, 0.0, 360.0); - - } - }); - - etWidgetControlAdvanced7.setOnFocusChangeListener(new View.OnFocusChangeListener() { - @Override - public void onFocusChange(View v, boolean hasFocus) { - if (hasFocus) { - showInputDialog(etWidgetControlAdvanced7, 1.0, 0.0, 360.0); - } - } - }); - - etWidgetControlAdvanced8.setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View arg0) { - - showInputDialog(etWidgetControlAdvanced8, 0.1, 0.0, 1.0); - - } - }); - - etWidgetControlAdvanced8.setOnFocusChangeListener(new View.OnFocusChangeListener() { - @Override - public void onFocusChange(View v, boolean hasFocus) { - if (hasFocus) { - showInputDialog(etWidgetControlAdvanced8, 0.1, 0.0, 1.0); - } - } - }); - - etWidgetControlAdvanced9.setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View arg0) { - - showInputDialog(etWidgetControlAdvanced9, 1.0, 0.0, 360.0); - - } - }); - - etWidgetControlAdvanced9.setOnFocusChangeListener(new View.OnFocusChangeListener() { - @Override - public void onFocusChange(View v, boolean hasFocus) { - if (hasFocus) { - showInputDialog(etWidgetControlAdvanced9, 1.0, 0.0, 360.0); - } - } - }); - - etWidgetControlAdvanced10.setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View arg0) { - - showInputDialog(etWidgetControlAdvanced10, 0.1, 0.0, 1.0); - - } - }); - - etWidgetControlAdvanced10.setOnFocusChangeListener(new View.OnFocusChangeListener() { - @Override - public void onFocusChange(View v, boolean hasFocus) { - if (hasFocus) { - showInputDialog(etWidgetControlAdvanced10, 0.1, 0.0, 1.0); - } - } - }); - - etWidgetControlAdvanced11.setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View arg0) { - - showInputDialog(etWidgetControlAdvanced11, 1.0, 10.0, 5000.0); - - } - }); - - etWidgetControlAdvanced11.setOnFocusChangeListener(new View.OnFocusChangeListener() { - @Override - public void onFocusChange(View v, boolean hasFocus) { - if (hasFocus) { - showInputDialog(etWidgetControlAdvanced11, 1.0, 10.0, 5000.0); - } - } - }); - - buttonControlAdvanced1.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - try { - Double frequencySI1 = Double.parseDouble(etWidgetControlAdvanced1.getText().toString()); - Double frequencySI2 = Double.parseDouble(etWidgetControlAdvanced2.getText().toString()); - float phase = Float.parseFloat(etWidgetControlAdvanced3.getText().toString()); - - String wavetypeSI1 = spinnerControlAdvanced1.getSelectedItem().toString(); - String wavetypeSI2 = spinnerControlAdvanced2.getSelectedItem().toString(); - - if ("SINE".equals(wavetypeSI1) && scienceLab.isConnected()) - scienceLab.setSine1(frequencySI1); - else if ("SQUARE".equals(wavetypeSI1) && scienceLab.isConnected()) - scienceLab.setSqr1(frequencySI1, -1, false); - - if ("SINE".equals(wavetypeSI2) && scienceLab.isConnected()) - scienceLab.setSine2(frequencySI2); - else if ("SQUARE".equals(wavetypeSI2) && scienceLab.isConnected()) - scienceLab.setSqr2(frequencySI2, -1); - } catch (NumberFormatException e) { - etWidgetControlAdvanced1.setText("0"); - etWidgetControlAdvanced2.setText("0"); - etWidgetControlAdvanced3.setText("0"); - } - } - }); - - buttonControlAdvanced2.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - try { - double phase2 = Double.parseDouble(etWidgetControlAdvanced5.getText().toString()); - double phase3 = Double.parseDouble(etWidgetControlAdvanced7.getText().toString()); - double phase4 = Double.parseDouble(etWidgetControlAdvanced9.getText().toString()); - - double dutyCycle1 = Double.parseDouble(etWidgetControlAdvanced4.getText().toString()); - double dutyCycle2 = Double.parseDouble(etWidgetControlAdvanced6.getText().toString()); - double dutyCycle3 = Double.parseDouble(etWidgetControlAdvanced8.getText().toString()); - double dutyCycle4 = Double.parseDouble(etWidgetControlAdvanced10.getText().toString()); - - double frequency = Double.parseDouble(etWidgetControlAdvanced11.getText().toString()); - - if (scienceLab.isConnected()) - scienceLab.sqrPWM(frequency, dutyCycle1, phase2, dutyCycle2, phase3, dutyCycle3, - phase4, dutyCycle4, true); - } catch (NumberFormatException e) { - etWidgetControlAdvanced4.setText("0"); - etWidgetControlAdvanced5.setText("0"); - etWidgetControlAdvanced6.setText("0"); - etWidgetControlAdvanced7.setText("0"); - etWidgetControlAdvanced8.setText("0"); - etWidgetControlAdvanced9.setText("0"); - etWidgetControlAdvanced10.setText("0"); - etWidgetControlAdvanced11.setText("0"); - } - } - }); - - checkBoxControlAdvanced1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - if (isChecked) state.put("SQR1", 1); - else state.put("SQR1", 0); - if (scienceLab.isConnected()) - scienceLab.setState(state); - } - }); - - checkBoxControlAdvanced2.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - if (isChecked) state.put("SQR2", 1); - else state.put("SQR2", 0); - if (scienceLab.isConnected()) - scienceLab.setState(state); - } - }); - - checkBoxControlAdvanced3.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - if (isChecked) state.put("SQR3", 1); - else state.put("SQR3", 0); - if (scienceLab.isConnected()) - scienceLab.setState(state); - } - }); - - checkBoxControlAdvanced4.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - if (isChecked) state.put("SQR4", 1); - else state.put("SQR4", 0); - if (scienceLab.isConnected()) - scienceLab.setState(state); - } - }); - - return view; - } - - private void showInputDialog(final EditText et, final double leastCount, final double minima, final double maxima) { - LayoutInflater li = LayoutInflater.from(getContext()); - View promptsView = li.inflate(R.layout.dialog_input_edit_text_widget, null); - - AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(getContext()); - - alertDialogBuilder.setView(promptsView); - final EditTextWidget userInput = - promptsView.findViewById(R.id.editTextDialogUserInput); - - userInput.init(getContext(), leastCount, minima, maxima); - userInput.setText(et.getText().toString()); - - alertDialogBuilder - .setPositiveButton("OK", - new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int id) { - // get user input and set it to result - // edit text - String input = userInput.getText(); - - if (Double.parseDouble(input) > maxima) { - input = DataFormatter.formatDouble(maxima, DataFormatter.LOW_PRECISION_FORMAT); - CustomSnackBar.showSnackBar(getActivity().findViewById(android.R.id.content), - "The Maximum value for this field is " + maxima,null,null, Snackbar.LENGTH_SHORT); - } - if (Double.parseDouble(input) < minima) { - input = DataFormatter.formatDouble(minima, DataFormatter.MEDIUM_PRECISION_FORMAT); - CustomSnackBar.showSnackBar(getActivity().findViewById(android.R.id.content), - "The Minimum value for this field is " + minima,null,null, Snackbar.LENGTH_SHORT); - } - et.setText(input); - } - }) - .setNegativeButton("Cancel", - new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int id) { - dialog.cancel(); - } - }); - AlertDialog alertDialog = alertDialogBuilder.create(); - alertDialog.show(); - } -} diff --git a/app/src/main/java/io/pslab/fragment/ControlFragmentMain.java b/app/src/main/java/io/pslab/fragment/ControlFragmentMain.java deleted file mode 100644 index 40df5345c..000000000 --- a/app/src/main/java/io/pslab/fragment/ControlFragmentMain.java +++ /dev/null @@ -1,44 +0,0 @@ -package io.pslab.fragment; - -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; - -import androidx.annotation.Nullable; -import androidx.fragment.app.Fragment; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import io.pslab.R; -import io.pslab.adapters.ControlMainAdapter; - - -public class ControlFragmentMain extends Fragment { - - private ControlMainAdapter mAdapter; - - public static ControlFragmentMain newInstance() { - return new ControlFragmentMain(); - } - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - mAdapter = new ControlMainAdapter(new String[]{"PV1", "PV2", "PV3", "PCS", "WAVE 1" , "WAVE 2" , "SQUARE"}); - setRetainInstance(true); - } - - @Override - public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { - View view = inflater.inflate(R.layout.fragment_control_main, container, false); - RecyclerView mRecyclerView = view.findViewById(R.id.control_main_recycler_view); - mRecyclerView.setHasFixedSize(false); - - LinearLayoutManager mLayoutManager = new LinearLayoutManager(getActivity()); - mRecyclerView.setLayoutManager(mLayoutManager); - mRecyclerView.setAdapter(mAdapter); - return view; - - } -} diff --git a/app/src/main/java/io/pslab/fragment/ControlFragmentRead.java b/app/src/main/java/io/pslab/fragment/ControlFragmentRead.java deleted file mode 100644 index 3a650d921..000000000 --- a/app/src/main/java/io/pslab/fragment/ControlFragmentRead.java +++ /dev/null @@ -1,150 +0,0 @@ -package io.pslab.fragment; - -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.Button; -import android.widget.Spinner; -import android.widget.TextView; - -import androidx.annotation.Nullable; -import androidx.fragment.app.Fragment; - -import io.pslab.DataFormatter; -import io.pslab.R; -import io.pslab.communication.ScienceLab; -import io.pslab.others.ScienceLabCommon; - -import java.text.DecimalFormat; - -public class ControlFragmentRead extends Fragment { - - private ScienceLab scienceLab; - - private TextView tvControlRead1; - private TextView tvControlRead2; - private TextView tvControlRead3; - private TextView tvControlRead4; - private TextView tvControlRead5; - private TextView tvControlRead6; - private TextView tvControlRead7; - private TextView tvControlRead8; - private TextView tvControlRead9; - private TextView tvControlRead10; - private Spinner spinnerControlRead1; - private Spinner spinnerControlRead2; - - public static ControlFragmentRead newInstance() { - return new ControlFragmentRead(); - } - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - scienceLab = ScienceLabCommon.scienceLab; - } - - @Override - public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { - View view = inflater.inflate(R.layout.fragment_control_read, container, false); - - tvControlRead1 = view.findViewById(R.id.tv_control_read1); - tvControlRead2 = view.findViewById(R.id.tv_control_read2); - tvControlRead3 = view.findViewById(R.id.tv_control_read3); - tvControlRead4 = view.findViewById(R.id.tv_control_read4); - tvControlRead5 = view.findViewById(R.id.tv_control_read5); - tvControlRead6 = view.findViewById(R.id.tv_control_read6); - tvControlRead7 = view.findViewById(R.id.tv_control_read7); - tvControlRead8 = view.findViewById(R.id.tv_control_read8); - tvControlRead9 = view.findViewById(R.id.tv_control_read9); - tvControlRead10 = view.findViewById(R.id.tv_control_read10); - Button buttonControlRead1 = view.findViewById(R.id.button_control_read1); - Button buttonControlRead2 = view.findViewById(R.id.button_control_read2); - Button buttonControlRead3 = view.findViewById(R.id.button_control_read3); - Button buttonControlRead4 = view.findViewById(R.id.button_control_read4); - Button buttonControlRead5 = view.findViewById(R.id.button_control_read5); - Button buttonControlRead6 = view.findViewById(R.id.button_control_read6); - spinnerControlRead1 = view.findViewById(R.id.spinner_control_read1); - spinnerControlRead2 = view.findViewById(R.id.spinner_control_read2); - - buttonControlRead1.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - if (scienceLab.isConnected()) { - DecimalFormat resistanceFormat = new DecimalFormat("#.##"); - Double resistance = scienceLab.getResistance(); - String Resistance = ""; - if (resistance == null) { - Resistance = "Infinity"; - } else { - if (resistance > 10e5) { - Resistance = resistanceFormat.format((resistance / 10e5)) + " MOhms"; - } else if (resistance > 10e2) { - Resistance = resistanceFormat.format((resistance / 10e2)) + " kOhms"; - } else if (resistance > 1) { - Resistance = resistanceFormat.format(resistance) + " Ohms"; - } else { - Resistance = "Cannot measure!"; - } - } - tvControlRead1.setText(Resistance); - } - } - }); - buttonControlRead2.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - if (scienceLab.isConnected()) { - Double capacitance = scienceLab.getCapacitance(); - tvControlRead2.setText(String.valueOf(capacitance)); - } - } - }); - buttonControlRead3.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - String channel = spinnerControlRead1.getSelectedItem().toString(); - if (scienceLab.isConnected()) { - Double frequency = scienceLab.getFrequency(channel); - tvControlRead3.setText(DataFormatter.formatDouble(frequency, DataFormatter.MEDIUM_PRECISION_FORMAT)); - } - } - }); - buttonControlRead4.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - String channel = spinnerControlRead2.getSelectedItem().toString(); - if (scienceLab.isConnected()) { - scienceLab.countPulses(channel); - double pulseCount = scienceLab.readPulseCount(); - tvControlRead4.setText(DataFormatter.formatDouble(pulseCount, DataFormatter.MEDIUM_PRECISION_FORMAT)); - } - } - }); - buttonControlRead5.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - tvControlRead1.setText(""); - tvControlRead2.setText(""); - tvControlRead3.setText(""); - tvControlRead4.setText(""); - } - }); - buttonControlRead6.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - if (scienceLab.isConnected()) { - tvControlRead5.setText(DataFormatter.formatDouble(scienceLab.getVoltage("CH1", 1), DataFormatter.LOW_PRECISION_FORMAT)); - tvControlRead6.setText(DataFormatter.formatDouble(scienceLab.getVoltage("CAP", 1), DataFormatter.LOW_PRECISION_FORMAT)); - tvControlRead7.setText(DataFormatter.formatDouble(scienceLab.getVoltage("CH2", 1), DataFormatter.LOW_PRECISION_FORMAT)); - tvControlRead8.setText(DataFormatter.formatDouble(scienceLab.getVoltage("RES", 1), DataFormatter.LOW_PRECISION_FORMAT)); - tvControlRead9.setText(DataFormatter.formatDouble(scienceLab.getVoltage("CH3", 1), DataFormatter.LOW_PRECISION_FORMAT)); - tvControlRead10.setText(DataFormatter.formatDouble(scienceLab.getVoltage("VOL", 1), DataFormatter.LOW_PRECISION_FORMAT)); - } - - } - }); - return view; - } -} \ No newline at end of file diff --git a/app/src/main/java/io/pslab/fragment/DataAnalysisFragment.java b/app/src/main/java/io/pslab/fragment/DataAnalysisFragment.java deleted file mode 100644 index e42ae8dba..000000000 --- a/app/src/main/java/io/pslab/fragment/DataAnalysisFragment.java +++ /dev/null @@ -1,289 +0,0 @@ -package io.pslab.fragment; - -import android.os.Bundle; -import android.view.KeyEvent; -import android.view.LayoutInflater; -import android.view.MotionEvent; -import android.view.View; -import android.view.ViewGroup; -import android.view.inputmethod.EditorInfo; -import android.widget.AdapterView; -import android.widget.ArrayAdapter; -import android.widget.CheckBox; -import android.widget.CompoundButton; -import android.widget.EditText; -import android.widget.SeekBar; -import android.widget.Spinner; -import android.widget.TextView; - -import androidx.fragment.app.Fragment; - -import io.pslab.R; -import io.pslab.activity.OscilloscopeActivity; -import io.pslab.others.FloatSeekBar; - -public class DataAnalysisFragment extends Fragment { - - private Spinner spinnerCurveFit; - private Spinner spinnerChannelSelect1; - private Spinner spinnerChannelSelect2; - private CheckBox checkBoxFouierTransform; - private Spinner spinnerChannelSelectHorizontalOffset; - private Spinner spinnerChannelSelectVerticalOffset; - private FloatSeekBar seekBarHorizontalOffset; - private FloatSeekBar seekBarVerticalOffset; - private EditText editTextHorizontalOffset; - private EditText editTextVerticalOffset; - boolean _ignore = false; - - public static DataAnalysisFragment newInstance() { - return new DataAnalysisFragment(); - } - - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { - View v = inflater.inflate(R.layout.fragment_data_analysis_main, container, false); - String[] curveFits = {"Sine Fit", "Square Fit"}; - String[] channels = {"None", "CH1", "CH2", "CH3", "MIC"}; - - spinnerCurveFit = v.findViewById(R.id.spinner_curve_fit_da); - spinnerChannelSelect1 = v.findViewById(R.id.spinner_channel_select_da1); - spinnerChannelSelect2 = v.findViewById(R.id.spinner_channel_select_da2); - spinnerChannelSelectHorizontalOffset = v.findViewById(R.id.spinner_channel_select_horizontal_offset); - spinnerChannelSelectVerticalOffset = v.findViewById(R.id.spinner_channel_select_vertical_offset); - seekBarHorizontalOffset = v.findViewById(R.id.seekbar_horizontal_offset); - seekBarVerticalOffset = v.findViewById(R.id.seekbar_vertical_offset); - editTextHorizontalOffset = v.findViewById(R.id.edittext_horizontal_offset); - editTextVerticalOffset = v.findViewById(R.id.edittext_vertical_offset); - checkBoxFouierTransform = v.findViewById(R.id.checkBox_fourier_da); - boolean tabletSize = getResources().getBoolean(R.bool.isTablet); - ArrayAdapter curveFitAdapter; - ArrayAdapter adapter; - - if (tabletSize) { - curveFitAdapter = new ArrayAdapter<>(this.getActivity(), R.layout.custom_spinner_tablet, curveFits); - adapter = new ArrayAdapter<>(this.getActivity(), R.layout.custom_spinner_tablet, channels); - } else { - curveFitAdapter = new ArrayAdapter<>(this.getActivity(), R.layout.custom_spinner, curveFits); - adapter = new ArrayAdapter<>(this.getActivity(), R.layout.custom_spinner, channels); - } - - curveFitAdapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line); - adapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line); - - spinnerCurveFit.setAdapter(curveFitAdapter); - spinnerChannelSelect1.setAdapter(adapter); - spinnerChannelSelect2.setAdapter(adapter); - spinnerChannelSelectHorizontalOffset.setAdapter(adapter); - spinnerChannelSelectVerticalOffset.setAdapter(adapter); - - spinnerCurveFit.setSelection(curveFitAdapter.getPosition("Sine Fit"), true); - spinnerChannelSelect1.setSelection(adapter.getPosition("None"), true); - spinnerChannelSelect2.setSelection(adapter.getPosition("None"), true); - spinnerChannelSelectHorizontalOffset.setSelection(adapter.getPosition("None"), true); - spinnerChannelSelectVerticalOffset.setSelection(adapter.getPosition("None"), true); - - spinnerCurveFit.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { - @Override - public void onItemSelected(AdapterView parent, View view, int position, long id) { - if (position == 0) { - ((OscilloscopeActivity) getActivity()).sineFit = true; - ((OscilloscopeActivity) getActivity()).squareFit = false; - } else { - ((OscilloscopeActivity) getActivity()).sineFit = false; - ((OscilloscopeActivity) getActivity()).squareFit = true; - } - } - - @Override - public void onNothingSelected(AdapterView parent) { - - } - }); - - spinnerChannelSelect1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { - @Override - public void onItemSelected(AdapterView parent, View view, int position, long id) { - ((OscilloscopeActivity) getActivity()).curveFittingChannel1 = spinnerChannelSelect1.getItemAtPosition(position).toString(); - } - - @Override - public void onNothingSelected(AdapterView parent) { - - } - }); - - spinnerChannelSelect2.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { - @Override - public void onItemSelected(AdapterView parent, View view, int position, long id) { - ((OscilloscopeActivity) getActivity()).curveFittingChannel2 = spinnerChannelSelect2.getItemAtPosition(position).toString(); - } - - @Override - public void onNothingSelected(AdapterView parent) { - - } - }); - - spinnerChannelSelectHorizontalOffset.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { - @Override - public void onItemSelected(AdapterView adapterView, View view, int i, long l) { - if (spinnerChannelSelectHorizontalOffset.getSelectedItem() != "None") { - seekBarHorizontalOffset.setValue(((OscilloscopeActivity) getActivity()).xOffsets.get(spinnerChannelSelectHorizontalOffset.getSelectedItem().toString())); - } - } - - @Override - public void onNothingSelected(AdapterView adapterView) { - // Do nothing - } - }); - - spinnerChannelSelectVerticalOffset.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { - @Override - public void onItemSelected(AdapterView adapterView, View view, int i, long l) { - if (spinnerChannelSelectVerticalOffset.getSelectedItem() != "None") { - seekBarVerticalOffset.setValue(((OscilloscopeActivity) getActivity()).yOffsets.get(spinnerChannelSelectVerticalOffset.getSelectedItem().toString())); - } - } - - @Override - public void onNothingSelected(AdapterView adapterView) { - // Do nothing - } - }); - - if (((OscilloscopeActivity) getActivity()).xAxisScale == 875) { - seekBarHorizontalOffset.setters(0, ((OscilloscopeActivity) getActivity()).xAxisScale / 1000.0); - } else { - seekBarHorizontalOffset.setters(0, ((OscilloscopeActivity) getActivity()).xAxisScale); - } - seekBarHorizontalOffset.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { - @Override - public void onProgressChanged(SeekBar seekBar, int i, boolean b) { - if (!_ignore) { - editTextHorizontalOffset.setText(String.format("%s", seekBarHorizontalOffset.getValue())); - ((OscilloscopeActivity) getActivity()).xOffsets.put(spinnerChannelSelectHorizontalOffset.getSelectedItem().toString(), seekBarHorizontalOffset.getValue()); - } - } - - @Override - public void onStartTrackingTouch(SeekBar seekBar) { - // Do nothing - } - - @Override - public void onStopTrackingTouch(SeekBar seekBar) { - // Do nothing - } - }); - seekBarHorizontalOffset.setProgress(100); - seekBarHorizontalOffset.setProgress(0); - - seekBarVerticalOffset.setters(-1 * ((OscilloscopeActivity) getActivity()).yAxisScale, ((OscilloscopeActivity) getActivity()).yAxisScale); - seekBarVerticalOffset.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { - @Override - public void onProgressChanged(SeekBar seekBar, int i, boolean b) { - if (!_ignore) { - editTextVerticalOffset.setText(String.format("%s", seekBarVerticalOffset.getValue())); - ((OscilloscopeActivity) getActivity()).yOffsets.put(spinnerChannelSelectVerticalOffset.getSelectedItem().toString(), seekBarVerticalOffset.getValue()); - } - } - - @Override - public void onStartTrackingTouch(SeekBar seekBar) { - // Do nothing - } - - @Override - public void onStopTrackingTouch(SeekBar seekBar) { - // Do nothing - } - }); - seekBarVerticalOffset.setProgress(50); - - editTextHorizontalOffset.setOnTouchListener(new View.OnTouchListener() { - @Override - public boolean onTouch(View v, MotionEvent event) { - editTextHorizontalOffset.setCursorVisible(true); - return false; - } - }); - - editTextHorizontalOffset.setOnEditorActionListener(new EditText.OnEditorActionListener() { - @Override - public boolean onEditorAction(TextView textView, int i, KeyEvent keyEvent) { - if (i == EditorInfo.IME_ACTION_DONE) { - if (!editTextHorizontalOffset.getText().toString().isEmpty() && !editTextHorizontalOffset.getText().toString().equals("-") && !editTextHorizontalOffset.getText().toString().equals(".") && !editTextVerticalOffset.getText().toString().equals("-.")) { - double xAxisScale = (((OscilloscopeActivity) getActivity()).xAxisScale == 875) ? ((OscilloscopeActivity) getActivity()).xAxisScale / 1000.0 : ((OscilloscopeActivity) getActivity()).xAxisScale; - _ignore = true; - if (Double.parseDouble(editTextHorizontalOffset.getText().toString()) > xAxisScale) { - editTextHorizontalOffset.setText(String.format("%s", xAxisScale)); - seekBarHorizontalOffset.setValue(xAxisScale); - ((OscilloscopeActivity) getActivity()).xOffsets.put(spinnerChannelSelectHorizontalOffset.getSelectedItem().toString(), seekBarHorizontalOffset.getValue()); - _ignore = false; - } else { - seekBarHorizontalOffset.setValue(Double.parseDouble(editTextHorizontalOffset.getText().toString())); - editTextHorizontalOffset.setText(String.format("%s", Double.parseDouble(editTextHorizontalOffset.getText().toString()))); - ((OscilloscopeActivity) getActivity()).xOffsets.put(spinnerChannelSelectHorizontalOffset.getSelectedItem().toString(), seekBarHorizontalOffset.getValue()); - _ignore = false; - } - } else { - seekBarHorizontalOffset.setProgress(0); - } - } - editTextHorizontalOffset.setCursorVisible(false); - return false; - } - }); - - editTextVerticalOffset.setOnTouchListener(new View.OnTouchListener() { - @Override - public boolean onTouch(View v, MotionEvent event) { - editTextVerticalOffset.setCursorVisible(true); - return false; - } - }); - - editTextVerticalOffset.setOnEditorActionListener(new EditText.OnEditorActionListener() { - @Override - public boolean onEditorAction(TextView textView, int i, KeyEvent keyEvent) { - if (i == EditorInfo.IME_ACTION_DONE) { - if (!editTextVerticalOffset.getText().toString().isEmpty() && !editTextVerticalOffset.getText().toString().equals("-") && !editTextVerticalOffset.getText().toString().equals(".") && !editTextVerticalOffset.getText().toString().equals("-.")) { - _ignore = true; - if (Double.parseDouble(editTextVerticalOffset.getText().toString()) > ((OscilloscopeActivity) getActivity()).yAxisScale) { - editTextVerticalOffset.setText(String.format("%s", ((OscilloscopeActivity) getActivity()).yAxisScale)); - seekBarVerticalOffset.setValue(((OscilloscopeActivity) getActivity()).yAxisScale); - ((OscilloscopeActivity) getActivity()).yOffsets.put(spinnerChannelSelectVerticalOffset.getSelectedItem().toString(), seekBarVerticalOffset.getValue()); - _ignore = false; - } else if (Double.parseDouble(editTextVerticalOffset.getText().toString()) < -((OscilloscopeActivity) getActivity()).yAxisScale) { - editTextVerticalOffset.setText(String.format("%s", -((OscilloscopeActivity) getActivity()).yAxisScale)); - seekBarVerticalOffset.setValue(-((OscilloscopeActivity) getActivity()).yAxisScale); - ((OscilloscopeActivity) getActivity()).yOffsets.put(spinnerChannelSelectVerticalOffset.getSelectedItem().toString(), seekBarVerticalOffset.getValue()); - _ignore = false; - } else { - seekBarVerticalOffset.setValue(Double.parseDouble(editTextVerticalOffset.getText().toString())); - editTextVerticalOffset.setText(String.format("%s", Double.parseDouble(editTextVerticalOffset.getText().toString()))); - ((OscilloscopeActivity) getActivity()).yOffsets.put(spinnerChannelSelectVerticalOffset.getSelectedItem().toString(), seekBarVerticalOffset.getValue()); - _ignore = false; - } - } else { - seekBarVerticalOffset.setProgress(50); - } - } - editTextVerticalOffset.setCursorVisible(false); - - return false; - } - }); - - checkBoxFouierTransform.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - ((OscilloscopeActivity) getActivity()).isFourierTransformSelected = isChecked; - } - }); - return v; - } -} diff --git a/app/src/main/java/io/pslab/fragment/DustSensorDataFragment.java b/app/src/main/java/io/pslab/fragment/DustSensorDataFragment.java deleted file mode 100644 index dfcc5367e..000000000 --- a/app/src/main/java/io/pslab/fragment/DustSensorDataFragment.java +++ /dev/null @@ -1,471 +0,0 @@ -package io.pslab.fragment; - -import android.graphics.Bitmap; -import android.graphics.Color; -import android.location.Location; -import android.os.Bundle; -import android.os.Environment; -import android.os.Handler; -import androidx.annotation.NonNull; - -import androidx.annotation.Nullable; -import com.google.android.material.snackbar.Snackbar; -import androidx.fragment.app.Fragment; - -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.TextView; - -import com.github.anastr.speedviewlib.PointerSpeedometer; -import com.github.mikephil.charting.charts.LineChart; -import com.github.mikephil.charting.components.Legend; -import com.github.mikephil.charting.components.XAxis; -import com.github.mikephil.charting.components.YAxis; -import com.github.mikephil.charting.data.Entry; -import com.github.mikephil.charting.data.LineData; -import com.github.mikephil.charting.data.LineDataSet; - -import java.io.File; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.util.ArrayList; -import java.util.Date; -import java.util.Locale; -import java.util.Timer; -import java.util.TimerTask; - -import butterknife.BindView; -import butterknife.ButterKnife; -import butterknife.Unbinder; -import io.pslab.DataFormatter; -import io.pslab.R; -import io.pslab.activity.DustSensorActivity; -import io.pslab.communication.ScienceLab; -import io.pslab.interfaces.OperationCallback; -import io.pslab.models.DustSensorData; -import io.pslab.models.GasSensorData; -import io.pslab.models.SensorDataBlock; -import io.pslab.others.CSVDataLine; -import io.pslab.others.CSVLogger; -import io.pslab.others.CustomSnackBar; -import io.pslab.others.ScienceLabCommon; - -import static io.pslab.others.CSVLogger.CSV_DIRECTORY; - -public class DustSensorDataFragment extends Fragment implements OperationCallback { - - private static final CSVDataLine CSV_HEADER = - new CSVDataLine() - .add("Timestamp") - .add("DateTime") - .add("ppmValue") - .add("Latitude") - .add("Longitude"); - - @BindView(R.id.dust_sensor_value) - TextView dustValue; - @BindView(R.id.dust_sensor_status) - TextView dustStatus; - @BindView(R.id.label_dust_sensor) - TextView sensorLabel; - @BindView(R.id.chart_dust_sensor) - LineChart mChart; - @BindView(R.id.dust_sensor) - PointerSpeedometer dustSensorMeter; - - // TODO: Support multiple kinds of dust sensors - private static int sensorType = 0; - private static double highLimit = 4.0; - private static int updatePeriod = 1000; - - private DustSensorActivity dustSensorActivity; - private View rootView; - private Unbinder unbinder; - private ScienceLab scienceLab; - private YAxis y; - private Timer graphTimer; - private ArrayList entries; - private long startTime; - private long timeElapsed; - private long previousTimeElapsed = (System.currentTimeMillis() - startTime) / updatePeriod; - private long block; - private GasSensorData sensorData; - private boolean returningFromPause = false; - private int turns = 0; - private ArrayList recordedDustSensorArray; - - public static DustSensorDataFragment newInstance() { - return new DustSensorDataFragment(); - } - - @Override - public void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - startTime = System.currentTimeMillis(); - dustSensorActivity = (DustSensorActivity) getActivity(); - } - - public static void setParameters(double highLimit, int updatePeriod, String type) { - DustSensorDataFragment.highLimit = highLimit; - DustSensorDataFragment.updatePeriod = updatePeriod; - DustSensorDataFragment.sensorType = Integer.valueOf(type); - } - - @Nullable - @Override - public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { - rootView = inflater.inflate(R.layout.fragment_dust_sensor, container, false); - unbinder = ButterKnife.bind(this, rootView); - scienceLab = ScienceLabCommon.scienceLab; - entries = new ArrayList<>(); - setupInstruments(); - if (!scienceLab.isConnected()) - CustomSnackBar.showSnackBar(getActivity().findViewById(android.R.id.content), getString(R.string.not_connected), null, null, Snackbar.LENGTH_SHORT); - return rootView; - } - - @Override - public void onResume() { - super.onResume(); - if (dustSensorActivity.playingData) { - sensorLabel.setText(getResources().getString(R.string.baro_meter)); - recordedDustSensorArray = new ArrayList<>(); - resetInstrumentData(); - playRecordedData(); - } else if (dustSensorActivity.viewingData) { - sensorLabel.setText(getResources().getString(R.string.baro_meter)); - recordedDustSensorArray = new ArrayList<>(); - resetInstrumentData(); - plotAllRecordedData(); - } else if (!dustSensorActivity.isRecording) { - updateGraphs(); - entries.clear(); - mChart.clear(); - mChart.invalidate(); - } else if (returningFromPause) { - updateGraphs(); - } - } - - @Override - public void onDestroyView() { - super.onDestroyView(); - if (graphTimer != null) { - graphTimer.cancel(); - } - unbinder.unbind(); - } - - private void plotAllRecordedData() { - recordedDustSensorArray.addAll(dustSensorActivity.recordedDustSensorData); - if (recordedDustSensorArray.size() != 0) { - for (DustSensorData d : recordedDustSensorArray) { - Entry entry = new Entry((float) (d.getTime() - d.getBlock()) / 1000, d.getPpmValue()); - entries.add(entry); - dustSensorMeter.setWithTremble(false); - float ppm = d.getPpmValue(); - dustSensorMeter.setSpeedAt(ppm); - dustSensorMeter.setPointerColor(ppm > highLimit ? Color.WHITE : Color.RED); - dustValue.setText(String.format(Locale.getDefault(), "%.2f", ppm)); - String status = ppm > highLimit ? "Good" : "Bad"; - dustStatus.setText(status); - } - y.setAxisMaximum(5); - y.setAxisMinimum(0); - y.setLabelCount(10); - - LineDataSet dataSet = new LineDataSet(entries, getString(R.string.baro_unit)); - dataSet.setDrawCircles(false); - dataSet.setDrawValues(false); - dataSet.setLineWidth(2); - LineData data = new LineData(dataSet); - - mChart.setData(data); - mChart.notifyDataSetChanged(); - mChart.setVisibleXRangeMaximum(80); - mChart.moveViewToX(data.getEntryCount()); - mChart.invalidate(); - } - } - - private void playRecordedData() { - recordedDustSensorArray.addAll(dustSensorActivity.recordedDustSensorData); - try { - if (recordedDustSensorArray.size() > 1) { - DustSensorData i = recordedDustSensorArray.get(1); - long timeGap = i.getTime() - i.getBlock(); - processRecordedData(timeGap); - } else { - processRecordedData(0); - } - } catch (IllegalArgumentException e) { - CustomSnackBar.showSnackBar(getActivity().findViewById(android.R.id.content), - getString(R.string.no_data_fetched), null, null, Snackbar.LENGTH_SHORT); - } - } - - private void processRecordedData(long timeGap) { - final Handler handler = new Handler(); - if (graphTimer != null) { - graphTimer.cancel(); - } else { - graphTimer = new Timer(); - } - graphTimer.schedule(new TimerTask() { - @Override - public void run() { - handler.post(new Runnable() { - @Override - public void run() { - if (dustSensorActivity.playingData) { - try { - DustSensorData d = recordedDustSensorArray.get(turns); - turns++; - float ppm = d.getPpmValue(); - dustSensorMeter.setPointerColor(ppm > highLimit ? Color.WHITE : Color.RED); - dustValue.setText(String.format(Locale.getDefault(), "%.2f", ppm)); - String status = ppm > highLimit ? "Good" : "Bad"; - dustStatus.setText(status); - - y.setAxisMaximum(5); - y.setAxisMinimum(0); - y.setLabelCount(10); - dustSensorMeter.setWithTremble(false); - dustSensorMeter.setSpeedAt(ppm); - - Entry entry = new Entry((float) (d.getTime() - d.getBlock()) / 1000, d.getPpmValue()); - entries.add(entry); - - LineDataSet dataSet = new LineDataSet(entries, getString(R.string.baro_unit)); - dataSet.setDrawCircles(false); - dataSet.setDrawValues(false); - dataSet.setLineWidth(2); - LineData data = new LineData(dataSet); - - mChart.setData(data); - mChart.notifyDataSetChanged(); - mChart.setVisibleXRangeMaximum(80); - mChart.moveViewToX(data.getEntryCount()); - mChart.invalidate(); - } catch (IndexOutOfBoundsException e) { - graphTimer.cancel(); - graphTimer = null; - turns = 0; - dustSensorActivity.playingData = false; - dustSensorActivity.startedPlay = false; - dustSensorActivity.invalidateOptionsMenu(); - } - } - } - }); - } - }, 0, timeGap); - } - - @Override - public void playData() { - resetInstrumentData(); - dustSensorActivity.startedPlay = true; - try { - if (recordedDustSensorArray.size() > 1) { - DustSensorData i = recordedDustSensorArray.get(1); - long timeGap = i.getTime() - i.getBlock(); - processRecordedData(timeGap); - } else { - processRecordedData(0); - } - } catch (IllegalArgumentException e) { - CustomSnackBar.showSnackBar(getActivity().findViewById(android.R.id.content), - getString(R.string.no_data_fetched), null, null, Snackbar.LENGTH_SHORT); - } - } - - @Override - public void stopData() { - if (graphTimer != null) { - graphTimer.cancel(); - graphTimer = null; - } - recordedDustSensorArray.clear(); - entries.clear(); - plotAllRecordedData(); - dustSensorActivity.startedPlay = false; - dustSensorActivity.playingData = false; - turns = 0; - dustSensorActivity.invalidateOptionsMenu(); - } - - @Override - public void saveGraph() { - dustSensorActivity.csvLogger.prepareLogFile(); - dustSensorActivity.csvLogger.writeMetaData(getResources().getString(R.string.gas_sensor)); - dustSensorActivity.csvLogger.writeCSVFile(CSV_HEADER); - for (DustSensorData dustSensorData : dustSensorActivity.recordedDustSensorData) { - dustSensorActivity.csvLogger.writeCSVFile( - new CSVDataLine() - .add(dustSensorData.getTime()) - .add(CSVLogger.FILE_NAME_FORMAT.format(new Date(dustSensorData.getTime()))) - .add(dustSensorData.getPpmValue()) - .add(dustSensorData.getLat()) - .add(dustSensorData.getLon()) - ); - } - View view = rootView.findViewById(R.id.gas_sensor_linearlayout); - view.setDrawingCacheEnabled(true); - Bitmap b = view.getDrawingCache(); - try { - b.compress(Bitmap.CompressFormat.JPEG, 100, new FileOutputStream(Environment.getExternalStorageDirectory().getAbsolutePath() + - File.separator + CSV_DIRECTORY + File.separator + dustSensorActivity.getSensorName() + - File.separator + CSVLogger.FILE_NAME_FORMAT.format(new Date()) + "_graph.jpg")); - } catch (FileNotFoundException e) { - e.printStackTrace(); - } - } - - @Override - public void onPause() { - super.onPause(); - if (graphTimer != null) { - returningFromPause = true; - graphTimer.cancel(); - graphTimer = null; - if (dustSensorActivity.playingData) { - dustSensorActivity.finish(); - } - } - } - - private void updateGraphs() { - final Handler handler = new Handler(); - if (graphTimer != null) { - graphTimer.cancel(); - } - graphTimer = new Timer(); - graphTimer.schedule(new TimerTask() { - @Override - public void run() { - handler.post(() -> { - try { - visualizeData(); - } catch (NullPointerException e) { - } - }); - } - }, 0, 1000); - } - - private void writeLogToFile(long timestamp, float ppmValue) { - if (getActivity() != null && dustSensorActivity.isRecording) { - if (dustSensorActivity.writeHeaderToFile) { - dustSensorActivity.csvLogger.prepareLogFile(); - dustSensorActivity.csvLogger.writeCSVFile(CSV_HEADER); - block = timestamp; - dustSensorActivity.recordSensorDataBlockID(new SensorDataBlock(timestamp, dustSensorActivity.getSensorName())); - dustSensorActivity.writeHeaderToFile = !dustSensorActivity.writeHeaderToFile; - } - if (dustSensorActivity.addLocation && dustSensorActivity.gpsLogger.isGPSEnabled()) { - Location location = dustSensorActivity.gpsLogger.getDeviceLocation(); - dustSensorActivity.csvLogger.writeCSVFile( - new CSVDataLine() - .add(timestamp) - .add(CSVLogger.FILE_NAME_FORMAT.format(new Date(timestamp))) - .add(ppmValue) - .add(location.getLatitude()) - .add(location.getLongitude()) - ); - sensorData = new GasSensorData(timestamp, block, ppmValue, location.getLatitude(), location.getLongitude()); - } else { - dustSensorActivity.csvLogger.writeCSVFile( - new CSVDataLine() - .add(timestamp) - .add(CSVLogger.FILE_NAME_FORMAT.format(new Date(timestamp))) - .add(ppmValue) - .add(0.0) - .add(0.0) - ); - sensorData = new GasSensorData(timestamp, block, ppmValue, 0.0, 0.0); - } - dustSensorActivity.recordSensorData(sensorData); - } else { - dustSensorActivity.writeHeaderToFile = true; - } - } - - private void visualizeData() { - if (scienceLab.isConnected()) { - double ppm = scienceLab.getVoltage("CH1", 1); - dustSensorMeter.setPointerColor(ppm > highLimit ? Color.WHITE : Color.RED); - dustValue.setText(String.format(Locale.getDefault(), "%.2f", ppm)); - String status = ppm > highLimit ? "Good" : "Bad"; - dustStatus.setText(status); - dustSensorMeter.setWithTremble(false); - dustSensorMeter.setSpeedAt((float) ppm); - timeElapsed = ((System.currentTimeMillis() - startTime) / updatePeriod); - if (timeElapsed != previousTimeElapsed) { - previousTimeElapsed = timeElapsed; - Entry entry = new Entry((float) timeElapsed, (float) ppm); - entries.add(entry); - writeLogToFile(System.currentTimeMillis(), (float) ppm); - LineDataSet dataSet = new LineDataSet(entries, getString(R.string.gas_sensor_unit)); - dataSet.setDrawCircles(false); - dataSet.setDrawValues(false); - dataSet.setLineWidth(2); - LineData data = new LineData(dataSet); - - mChart.setData(data); - mChart.notifyDataSetChanged(); - mChart.setVisibleXRangeMaximum(80); - mChart.moveViewToX(data.getEntryCount()); - mChart.invalidate(); - } - } - } - - private void setupInstruments() { - dustSensorMeter.setMaxSpeed(5); - XAxis x = mChart.getXAxis(); - this.y = mChart.getAxisLeft(); - YAxis y2 = mChart.getAxisRight(); - - mChart.setTouchEnabled(true); - mChart.setHighlightPerDragEnabled(true); - mChart.setDragEnabled(true); - mChart.setScaleEnabled(true); - mChart.setDrawGridBackground(false); - mChart.setPinchZoom(true); - mChart.setScaleYEnabled(true); - mChart.setBackgroundColor(Color.BLACK); - mChart.getDescription().setEnabled(false); - - LineData data = new LineData(); - mChart.setData(data); - - Legend l = mChart.getLegend(); - l.setForm(Legend.LegendForm.LINE); - l.setTextColor(Color.WHITE); - - x.setTextColor(Color.WHITE); - x.setDrawGridLines(true); - x.setAvoidFirstLastClipping(true); - - y.setTextColor(Color.WHITE); - y.setAxisMaximum(5); - y.setAxisMinimum(0); - y.setDrawGridLines(true); - y.setLabelCount(10); - - y2.setDrawGridLines(false); - y2.setMaxWidth(0); - } - - private void resetInstrumentData() { - startTime = System.currentTimeMillis(); - dustValue.setText(DataFormatter.formatDouble(0, DataFormatter.LOW_PRECISION_FORMAT)); - dustStatus.setText(getString(R.string.unknown)); - dustSensorMeter.setSpeedAt(0); - dustSensorMeter.setWithTremble(false); - entries.clear(); - } - -} diff --git a/app/src/main/java/io/pslab/fragment/DustSensorSettingsFragment.java b/app/src/main/java/io/pslab/fragment/DustSensorSettingsFragment.java deleted file mode 100644 index d2848ef63..000000000 --- a/app/src/main/java/io/pslab/fragment/DustSensorSettingsFragment.java +++ /dev/null @@ -1,118 +0,0 @@ -package io.pslab.fragment; - -import android.annotation.SuppressLint; -import android.content.SharedPreferences; -import android.os.Bundle; -import com.google.android.material.snackbar.Snackbar; -import androidx.preference.CheckBoxPreference; -import androidx.preference.EditTextPreference; -import androidx.preference.ListPreference; -import androidx.preference.PreferenceFragmentCompat; -import androidx.preference.PreferenceManager; - -import io.pslab.R; -import io.pslab.others.CustomSnackBar; -import io.pslab.others.PSLabPermission; - -public class DustSensorSettingsFragment extends PreferenceFragmentCompat implements SharedPreferences.OnSharedPreferenceChangeListener { - - public static final String KEY_INCLUDE_LOCATION = "include_location_sensor_data"; - public static final String KEY_UPDATE_PERIOD = "setting_dust_update_period"; - public static final String KEY_HIGH_LIMIT = "setting_dust_high_limit"; - public static final String KEY_DUST_SENSOR_TYPE = "setting_dust_sensor_type"; - - private PSLabPermission psLabPermission; - - private EditTextPreference updatePeriodPref; - private EditTextPreference highLimitPref; - private CheckBoxPreference locationPreference; - private ListPreference sensorTypePreference; - private SharedPreferences sharedPref; - - @Override - public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { - setPreferencesFromResource(R.xml.dust_sensor_settings, rootKey); - updatePeriodPref = (EditTextPreference) getPreferenceScreen().findPreference(KEY_UPDATE_PERIOD); - highLimitPref = (EditTextPreference) getPreferenceScreen().findPreference(KEY_HIGH_LIMIT); - locationPreference = (CheckBoxPreference) getPreferenceScreen().findPreference(KEY_INCLUDE_LOCATION); - sensorTypePreference = (ListPreference) getPreferenceScreen().findPreference(KEY_DUST_SENSOR_TYPE); - sharedPref = PreferenceManager.getDefaultSharedPreferences(getActivity()); - - psLabPermission = PSLabPermission.getInstance(); - if (!psLabPermission.checkPermissions(getActivity(), PSLabPermission.MAP_PERMISSION)) { - SharedPreferences.Editor editor = sharedPref.edit(); - editor.putBoolean(DustSensorSettingsFragment.KEY_INCLUDE_LOCATION, true); - editor.apply(); - } - } - - @Override - public void onResume() { - super.onResume(); - locationPreference.setChecked(sharedPref.getBoolean(KEY_INCLUDE_LOCATION, true)); - updatePeriodPref.setSummary(updatePeriodPref.getText() + " ms"); - highLimitPref.setSummary(highLimitPref.getText() + " PPM"); - sensorTypePreference.setSummary(sensorTypePreference.getEntry()); - getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this); - } - - @Override - public void onPause() { - super.onPause(); - getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this); - } - - @SuppressLint("ApplySharedPref") - @Override - public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String s) { - switch (s) { - case KEY_INCLUDE_LOCATION: - if (locationPreference.isChecked()) { - psLabPermission.checkPermissions( - getActivity(), PSLabPermission.MAP_PERMISSION); - } - break; - case KEY_UPDATE_PERIOD: - try { - int updatePeriod = Integer.parseInt(updatePeriodPref.getText()); - if (updatePeriod > 1000 || updatePeriod < 100) { - throw new NumberFormatException(); - } else { - updatePeriodPref.setSummary(updatePeriod + " ms"); - } - } catch (NumberFormatException e) { - CustomSnackBar.showSnackBar(getActivity().findViewById(android.R.id.content), - getString(R.string.update_period_msg),null,null, Snackbar.LENGTH_SHORT); - updatePeriodPref.setSummary("1000 ms"); - updatePeriodPref.setText("1000"); - SharedPreferences.Editor editor = sharedPref.edit(); - editor.putString(s, "1000"); - editor.commit(); - } - break; - case KEY_HIGH_LIMIT: - try { - double highLimit = Double.parseDouble(highLimitPref.getText()); - if (highLimit > 5.0 || highLimit < 0.0) { - throw new NumberFormatException(); - } else { - highLimitPref.setSummary(String.valueOf(highLimit) + " PPM"); - } - } catch (NumberFormatException e) { - CustomSnackBar.showSnackBar(getActivity().findViewById(android.R.id.content), - getString(R.string.high_limit_msg),null,null,Snackbar.LENGTH_SHORT); - highLimitPref.setSummary("4.0 V"); - highLimitPref.setText("4.0"); - SharedPreferences.Editor editor = sharedPref.edit(); - editor.putString(KEY_HIGH_LIMIT, "4.0"); - editor.commit(); - } - break; - case KEY_DUST_SENSOR_TYPE: - sensorTypePreference.setSummary(sensorTypePreference.getEntry()); - break; - default: - break; - } - } -} diff --git a/app/src/main/java/io/pslab/fragment/ESPFragment.java b/app/src/main/java/io/pslab/fragment/ESPFragment.java deleted file mode 100644 index 3c13b32ae..000000000 --- a/app/src/main/java/io/pslab/fragment/ESPFragment.java +++ /dev/null @@ -1,128 +0,0 @@ -package io.pslab.fragment; - -import android.app.Activity; -import android.os.AsyncTask; -import android.os.Bundle; -import android.util.Log; -import android.view.KeyEvent; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.view.inputmethod.EditorInfo; -import android.widget.Button; -import android.widget.EditText; -import android.widget.ProgressBar; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.fragment.app.DialogFragment; - -import com.google.android.material.snackbar.Snackbar; - -import java.io.IOException; - -import io.pslab.R; -import io.pslab.others.CustomSnackBar; -import io.pslab.others.ScienceLabCommon; -import okhttp3.OkHttpClient; -import okhttp3.Request; -import okhttp3.Response; - -public class ESPFragment extends DialogFragment { - private String espIPAddress = ""; - private ProgressBar espConnectProgressBar; - private Button espConnectBtn; - - @Override - public void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - } - - @Nullable - @Override - public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { - View rootView = inflater.inflate(R.layout.fragment_esp, container, false); - EditText espIPEditText = rootView.findViewById(R.id.esp_ip_edit_text); - espConnectBtn = rootView.findViewById(R.id.esp_connect_btn); - espConnectProgressBar = rootView.findViewById(R.id.esp_connect_progressbar); - espConnectBtn.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - espIPAddress = espIPEditText.getText().toString(); - espConnectBtn.onEditorAction(EditorInfo.IME_ACTION_DONE); - Activity activity; - if (espIPAddress.isEmpty() && ((activity = getActivity()) != null)) { - CustomSnackBar.showSnackBar(activity.findViewById(android.R.id.content), - getString(R.string.incorrect_IP_address_message), null, null, Snackbar.LENGTH_SHORT); - - } else { - new ESPTask().execute(); - } - } - - }); - espIPEditText.setOnEditorActionListener(new TextView.OnEditorActionListener() { - @Override - public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { - if (actionId == EditorInfo.IME_ACTION_DONE) { - espConnectBtn.performClick(); - return true; - } - return false; - } - }); - return rootView; - } - - @Override - public void onResume() { - super.onResume(); - ViewGroup.LayoutParams params = getDialog().getWindow().getAttributes(); - params.height = ViewGroup.LayoutParams.WRAP_CONTENT; - params.width = ViewGroup.LayoutParams.MATCH_PARENT; - getDialog().getWindow().setAttributes((android.view.WindowManager.LayoutParams) params); - } - - private class ESPTask extends AsyncTask { - - @Override - protected void onPreExecute() { - espConnectBtn.setVisibility(View.GONE); - espConnectProgressBar.setVisibility(View.VISIBLE); - } - - @Override - protected String doInBackground(Void... voids) { - String result = ""; - try { - OkHttpClient client = new OkHttpClient(); - Request request = new Request.Builder() - .url("http://" + espIPAddress) - .build(); - Response response = client.newCall(request).execute(); - if (response.code() == 200) { - ScienceLabCommon.setIsWifiConnected(true); - ScienceLabCommon.setEspBaseIP(espIPAddress); - } - result = response.body().string(); - } catch (IOException e) { - e.printStackTrace(); - } - return result; - } - - @Override - protected void onPostExecute(String result) { - espConnectProgressBar.setVisibility(View.GONE); - espConnectBtn.setVisibility(View.VISIBLE); - Activity activity; - if (result.isEmpty() && ((activity = getActivity()) != null)) { - CustomSnackBar.showSnackBar(activity.findViewById(android.R.id.content), - getString(R.string.incorrect_IP_address_message), null, null, Snackbar.LENGTH_SHORT); - } else { - Log.v("Response", result); - } - } - } -} \ No newline at end of file diff --git a/app/src/main/java/io/pslab/fragment/FAQFragment.java b/app/src/main/java/io/pslab/fragment/FAQFragment.java deleted file mode 100644 index 49c3755db..000000000 --- a/app/src/main/java/io/pslab/fragment/FAQFragment.java +++ /dev/null @@ -1,153 +0,0 @@ -package io.pslab.fragment; - -import android.os.Bundle; -import android.text.Html; -import android.text.method.LinkMovementMethod; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.BaseExpandableListAdapter; -import android.widget.ExpandableListView; -import android.widget.TextView; - -import androidx.fragment.app.Fragment; - -import io.pslab.R; - -public class FAQFragment extends Fragment { - - private String[] questions; - private String[][] answers; - - public static FAQFragment newInstance() { - return new FAQFragment(); - } - - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - questions = getResources().getStringArray(R.array.faq_questions); - - String[] ans = getResources().getStringArray(R.array.faq_answers); - answers = new String[ans.length][]; - for (int i = 0; i < ans.length; i++) { - answers[i] = new String[]{ans[i]}; - } - } - - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - View rootView; - rootView = inflater.inflate(R.layout.fragment_faq, container, false); - return rootView; - } - - @Override - public void onViewCreated(View view, Bundle savedInstanceState) { - super.onViewCreated(view, savedInstanceState); - ExpandableListView listView; - - listView = (ExpandableListView) view.findViewById(R.id.expListView); - listView.setAdapter(new ExpandableListAdapter(questions, answers)); - listView.setGroupIndicator(null); - - } - - public class ExpandableListAdapter extends BaseExpandableListAdapter { - - private final LayoutInflater inf; - private String[] questions; - private String[][] answers; - - public ExpandableListAdapter(String[] questions, String[][] answers) { - this.questions = questions; - this.answers = answers; - inf = LayoutInflater.from(getActivity()); - } - - @Override - public int getGroupCount() { - return questions.length; - } - - @Override - public int getChildrenCount(int questionPosition) { - return answers[questionPosition].length; - } - - @Override - public Object getGroup(int questionPosition) { - return questions[questionPosition]; - } - - @Override - public Object getChild(int questionPosition, int answerPosition) { - return answers[questionPosition][answerPosition]; - } - - @Override - public long getGroupId(int questionPosition) { - return questionPosition; - } - - @Override - public long getChildId(int questionPosition, int answerPosition) { - return answerPosition; - } - - @Override - public boolean hasStableIds() { - return true; - } - - @Override - public View getChildView(int questionPosition, final int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { - - ViewHolder holder; - View v = convertView; - if (v == null) { - v = inf.inflate(R.layout.list_item, parent, false); - holder = new ViewHolder(); - - holder.text = (TextView) v.findViewById(R.id.lblListItem); - v.setTag(holder); - } else { - holder = (ViewHolder) v.getTag(); - } - - holder.text.setClickable(true); - holder.text.setMovementMethod(LinkMovementMethod.getInstance()); - holder.text.setText(Html.fromHtml(getChild(questionPosition, childPosition).toString())); - - return v; - } - - @Override - public View getGroupView(int questionPosition, boolean isExpanded, View convertView, ViewGroup parent) { - ViewHolder holder; - View v = convertView; - if (v == null) { - v = inf.inflate(R.layout.list_group, parent, false); - - holder = new ViewHolder(); - holder.text = (TextView) v.findViewById(R.id.lblListHeader); - v.setTag(holder); - } else { - holder = (ViewHolder) v.getTag(); - } - - holder.text.setText(getGroup(questionPosition).toString()); - - return v; - } - - @Override - public boolean isChildSelectable(int questionPosition, int answerPosition) { - return true; - } - - private class ViewHolder { - private TextView text; - } - } -} diff --git a/app/src/main/java/io/pslab/fragment/GasSensorDataFragment.java b/app/src/main/java/io/pslab/fragment/GasSensorDataFragment.java deleted file mode 100644 index b1bd70482..000000000 --- a/app/src/main/java/io/pslab/fragment/GasSensorDataFragment.java +++ /dev/null @@ -1,449 +0,0 @@ -package io.pslab.fragment; - -import android.graphics.Bitmap; -import android.graphics.Color; -import android.location.Location; -import android.os.Bundle; -import android.os.Environment; -import android.os.Handler; -import androidx.annotation.NonNull; - -import androidx.annotation.Nullable; -import com.google.android.material.snackbar.Snackbar; -import androidx.fragment.app.Fragment; - -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.TextView; - -import com.github.anastr.speedviewlib.PointerSpeedometer; -import com.github.mikephil.charting.charts.LineChart; -import com.github.mikephil.charting.components.Legend; -import com.github.mikephil.charting.components.XAxis; -import com.github.mikephil.charting.components.YAxis; -import com.github.mikephil.charting.data.Entry; -import com.github.mikephil.charting.data.LineData; -import com.github.mikephil.charting.data.LineDataSet; - -import java.io.File; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.util.ArrayList; -import java.util.Date; -import java.util.Locale; -import java.util.Timer; -import java.util.TimerTask; - -import butterknife.BindView; -import butterknife.ButterKnife; -import butterknife.Unbinder; -import io.pslab.DataFormatter; -import io.pslab.R; -import io.pslab.activity.GasSensorActivity; -import io.pslab.communication.ScienceLab; -import io.pslab.interfaces.OperationCallback; -import io.pslab.models.GasSensorData; -import io.pslab.models.SensorDataBlock; -import io.pslab.others.CSVDataLine; -import io.pslab.others.CSVLogger; -import io.pslab.others.CustomSnackBar; -import io.pslab.others.ScienceLabCommon; - -import static io.pslab.others.CSVLogger.CSV_DIRECTORY; - -public class GasSensorDataFragment extends Fragment implements OperationCallback { - - private static final CSVDataLine CSV_HEADER = new CSVDataLine() - .add("Timestamp") - .add("DateTime") - .add("ppmValue") - .add("Latitude") - .add("Longitude"); - @BindView(R.id.gas_sensor_value) - TextView gasValue; - @BindView(R.id.label_gas_sensor) - TextView sensorLabel; - @BindView(R.id.chart_gas_sensor) - LineChart mChart; - @BindView(R.id.gas_sensor) - PointerSpeedometer gasSensorMeter; - private GasSensorActivity gasSensorActivity; - private View rootView; - private Unbinder unbinder; - private ScienceLab scienceLab; - private YAxis y; - private Timer graphTimer; - private ArrayList entries; - private long updatePeriod = 1000; - private long startTime; - private long timeElapsed; - private long previousTimeElapsed = (System.currentTimeMillis() - startTime) / updatePeriod; - private long block; - private GasSensorData sensorData; - private boolean returningFromPause = false; - private int turns = 0; - private ArrayList recordedGasSensorArray; - - - public static GasSensorDataFragment newInstance() { - return new GasSensorDataFragment(); - } - - @Override - public void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - startTime = System.currentTimeMillis(); - gasSensorActivity = (GasSensorActivity) getActivity(); - } - - @Nullable - @Override - public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { - rootView = inflater.inflate(R.layout.fragment_gas_sensor, container, false); - unbinder = ButterKnife.bind(this, rootView); - scienceLab = ScienceLabCommon.scienceLab; - if (!scienceLab.isConnected()) { - CustomSnackBar.showSnackBar(getActivity().findViewById(android.R.id.content), - getString(R.string.not_connected), null, null, Snackbar.LENGTH_SHORT); - } - entries = new ArrayList<>(); - setupInstruments(); - return rootView; - } - - @Override - public void onResume() { - super.onResume(); - if (gasSensorActivity.playingData) { - sensorLabel.setText(getResources().getString(R.string.baro_meter)); - recordedGasSensorArray = new ArrayList<>(); - resetInstrumentData(); - playRecordedData(); - } else if (gasSensorActivity.viewingData) { - sensorLabel.setText(getResources().getString(R.string.baro_meter)); - recordedGasSensorArray = new ArrayList<>(); - resetInstrumentData(); - plotAllRecordedData(); - } else if (!gasSensorActivity.isRecording) { - updateGraphs(); - entries.clear(); - mChart.clear(); - mChart.invalidate(); - } else if (returningFromPause) { - updateGraphs(); - } - } - - @Override - public void onDestroyView() { - super.onDestroyView(); - if (graphTimer != null) { - graphTimer.cancel(); - } - unbinder.unbind(); - } - - private void plotAllRecordedData() { - recordedGasSensorArray.addAll(gasSensorActivity.recordedGasSensorData); - if (recordedGasSensorArray.size() != 0) { - for (GasSensorData d : recordedGasSensorArray) { - Entry entry = new Entry((float) (d.getTime() - d.getBlock()) / 1000, d.getPpmValue()); - entries.add(entry); - gasSensorMeter.setWithTremble(false); - gasSensorMeter.setSpeedAt(d.getPpmValue()); - gasValue.setText(String.format(Locale.getDefault(), "%.2f", d.getPpmValue())); - } - y.setAxisMaximum(1024); - y.setAxisMinimum(0); - y.setLabelCount(10); - - LineDataSet dataSet = new LineDataSet(entries, getString(R.string.baro_unit)); - dataSet.setDrawCircles(false); - dataSet.setDrawValues(false); - dataSet.setLineWidth(2); - LineData data = new LineData(dataSet); - - mChart.setData(data); - mChart.notifyDataSetChanged(); - mChart.setVisibleXRangeMaximum(80); - mChart.moveViewToX(data.getEntryCount()); - mChart.invalidate(); - } - } - - private void playRecordedData() { - recordedGasSensorArray.addAll(gasSensorActivity.recordedGasSensorData); - try { - if (recordedGasSensorArray.size() > 1) { - GasSensorData i = recordedGasSensorArray.get(1); - long timeGap = i.getTime() - i.getBlock(); - processRecordedData(timeGap); - } else { - processRecordedData(0); - } - } catch (IllegalArgumentException e) { - CustomSnackBar.showSnackBar(getActivity().findViewById(android.R.id.content), - getString(R.string.no_data_fetched), null, null, Snackbar.LENGTH_SHORT); - } - } - - private void processRecordedData(long timeGap) { - final Handler handler = new Handler(); - if (graphTimer != null) { - graphTimer.cancel(); - } else { - graphTimer = new Timer(); - } - graphTimer.schedule(new TimerTask() { - @Override - public void run() { - handler.post(new Runnable() { - @Override - public void run() { - if (gasSensorActivity.playingData) { - try { - GasSensorData d = recordedGasSensorArray.get(turns); - turns++; - gasValue.setText(String.format(Locale.getDefault(), "%.2f", d.getPpmValue())); - y.setAxisMaximum(1024); - y.setAxisMinimum(0); - y.setLabelCount(10); - gasSensorMeter.setWithTremble(false); - gasSensorMeter.setSpeedAt(d.getPpmValue()); - - Entry entry = new Entry((float) (d.getTime() - d.getBlock()) / 1000, d.getPpmValue()); - entries.add(entry); - - LineDataSet dataSet = new LineDataSet(entries, getString(R.string.baro_unit)); - dataSet.setDrawCircles(false); - dataSet.setDrawValues(false); - dataSet.setLineWidth(2); - LineData data = new LineData(dataSet); - - mChart.setData(data); - mChart.notifyDataSetChanged(); - mChart.setVisibleXRangeMaximum(80); - mChart.moveViewToX(data.getEntryCount()); - mChart.invalidate(); - } catch (IndexOutOfBoundsException e) { - graphTimer.cancel(); - graphTimer = null; - turns = 0; - gasSensorActivity.playingData = false; - gasSensorActivity.startedPlay = false; - gasSensorActivity.invalidateOptionsMenu(); - } - } - } - }); - } - }, 0, timeGap); - } - - @Override - public void playData() { - resetInstrumentData(); - gasSensorActivity.startedPlay = true; - try { - if (recordedGasSensorArray.size() > 1) { - GasSensorData i = recordedGasSensorArray.get(1); - long timeGap = i.getTime() - i.getBlock(); - processRecordedData(timeGap); - } else { - processRecordedData(0); - } - } catch (IllegalArgumentException e) { - CustomSnackBar.showSnackBar(getActivity().findViewById(android.R.id.content), - getString(R.string.no_data_fetched), null, null, Snackbar.LENGTH_SHORT); - } - } - - @Override - public void stopData() { - if (graphTimer != null) { - graphTimer.cancel(); - graphTimer = null; - } - recordedGasSensorArray.clear(); - entries.clear(); - plotAllRecordedData(); - gasSensorActivity.startedPlay = false; - gasSensorActivity.playingData = false; - turns = 0; - gasSensorActivity.invalidateOptionsMenu(); - } - - @Override - public void saveGraph() { - gasSensorActivity.csvLogger.prepareLogFile(); - gasSensorActivity.csvLogger.writeMetaData(getResources().getString(R.string.gas_sensor)); - gasSensorActivity.csvLogger.writeCSVFile(CSV_HEADER); - for (GasSensorData baroData : gasSensorActivity.recordedGasSensorData) { - gasSensorActivity.csvLogger.writeCSVFile( - new CSVDataLine() - .add(baroData.getTime()) - .add(CSVLogger.FILE_NAME_FORMAT.format(new Date(baroData.getTime()))) - .add(baroData.getPpmValue()) - .add(baroData.getLat()) - .add(baroData.getLon()) - ); - } - View view = rootView.findViewById(R.id.gas_sensor_linearlayout); - view.setDrawingCacheEnabled(true); - Bitmap b = view.getDrawingCache(); - try { - b.compress(Bitmap.CompressFormat.JPEG, 100, new FileOutputStream(Environment.getExternalStorageDirectory().getAbsolutePath() + - File.separator + CSV_DIRECTORY + File.separator + gasSensorActivity.getSensorName() + - File.separator + CSVLogger.FILE_NAME_FORMAT.format(new Date()) + "_graph.jpg")); - } catch (FileNotFoundException e) { - e.printStackTrace(); - } - } - - @Override - public void onPause() { - super.onPause(); - if (graphTimer != null) { - returningFromPause = true; - graphTimer.cancel(); - graphTimer = null; - if (gasSensorActivity.playingData) { - gasSensorActivity.finish(); - } - } - } - - private void updateGraphs() { - final Handler handler = new Handler(); - if (graphTimer != null) { - graphTimer.cancel(); - } - graphTimer = new Timer(); - graphTimer.schedule(new TimerTask() { - @Override - public void run() { - handler.post(new Runnable() { - @Override - public void run() { - try { - visualizeData(); - } catch (NullPointerException e) { - } - } - }); - } - }, 0, 1000); - } - - private void writeLogToFile(long timestamp, float ppmValue) { - if (getActivity() != null && gasSensorActivity.isRecording) { - if (gasSensorActivity.writeHeaderToFile) { - gasSensorActivity.csvLogger.prepareLogFile(); - gasSensorActivity.csvLogger.writeCSVFile(CSV_HEADER); - block = timestamp; - gasSensorActivity.recordSensorDataBlockID(new SensorDataBlock(timestamp, gasSensorActivity.getSensorName())); - gasSensorActivity.writeHeaderToFile = !gasSensorActivity.writeHeaderToFile; - } - if (gasSensorActivity.addLocation && gasSensorActivity.gpsLogger.isGPSEnabled()) { - Location location = gasSensorActivity.gpsLogger.getDeviceLocation(); - gasSensorActivity.csvLogger.writeCSVFile( - new CSVDataLine() - .add(timestamp) - .add(CSVLogger.FILE_NAME_FORMAT.format(new Date(timestamp))) - .add(ppmValue) - .add(location.getLatitude()) - .add(location.getLongitude()) - ); - sensorData = new GasSensorData(timestamp, block, ppmValue, location.getLatitude(), location.getLongitude()); - } else { - gasSensorActivity.csvLogger.writeCSVFile( - new CSVDataLine() - .add(timestamp) - .add(CSVLogger.FILE_NAME_FORMAT.format(new Date(timestamp))) - .add(ppmValue) - .add(0.0) - .add(0.0) - ); - sensorData = new GasSensorData(timestamp, block, ppmValue, 0.0, 0.0); - } - gasSensorActivity.recordSensorData(sensorData); - } else { - gasSensorActivity.writeHeaderToFile = true; - } - } - - private void visualizeData() { - double ppmValue = 0d; - if (scienceLab.isConnected()) { - double volt = scienceLab.getVoltage("CH1", 1); - ppmValue = (volt / 3.3) * 1024.0; - gasValue.setText(String.format(Locale.getDefault(), "%.2f", ppmValue)); - gasSensorMeter.setWithTremble(false); - gasSensorMeter.setSpeedAt((float) ppmValue); - timeElapsed = ((System.currentTimeMillis() - startTime) / updatePeriod); - if (timeElapsed != previousTimeElapsed) { - previousTimeElapsed = timeElapsed; - Entry entry = new Entry((float) timeElapsed, (float) ppmValue); - entries.add(entry); - LineDataSet dataSet = new LineDataSet(entries, getString(R.string.gas_sensor_unit)); - dataSet.setDrawCircles(false); - dataSet.setDrawValues(false); - dataSet.setLineWidth(2); - LineData data = new LineData(dataSet); - - mChart.setData(data); - mChart.notifyDataSetChanged(); - mChart.setVisibleXRangeMaximum(80); - mChart.moveViewToX(data.getEntryCount()); - mChart.invalidate(); - } - } - writeLogToFile(System.currentTimeMillis(), (float) ppmValue); - } - - private void setupInstruments() { - gasSensorMeter.setMaxSpeed(1024); - XAxis x = mChart.getXAxis(); - this.y = mChart.getAxisLeft(); - YAxis y2 = mChart.getAxisRight(); - - mChart.setTouchEnabled(true); - mChart.setHighlightPerDragEnabled(true); - mChart.setDragEnabled(true); - mChart.setScaleEnabled(true); - mChart.setDrawGridBackground(false); - mChart.setPinchZoom(true); - mChart.setScaleYEnabled(true); - mChart.setBackgroundColor(Color.BLACK); - mChart.getDescription().setEnabled(false); - - LineData data = new LineData(); - mChart.setData(data); - - Legend l = mChart.getLegend(); - l.setForm(Legend.LegendForm.LINE); - l.setTextColor(Color.WHITE); - - x.setTextColor(Color.WHITE); - x.setDrawGridLines(true); - x.setAvoidFirstLastClipping(true); - - y.setTextColor(Color.WHITE); - y.setAxisMaximum(1024); - y.setAxisMinimum(0); - y.setDrawGridLines(true); - y.setLabelCount(10); - - y2.setDrawGridLines(false); - y2.setMaxWidth(0); - } - - private void resetInstrumentData() { - startTime = System.currentTimeMillis(); - gasValue.setText(DataFormatter.formatDouble(0, DataFormatter.LOW_PRECISION_FORMAT)); - gasSensorMeter.setSpeedAt(0); - gasSensorMeter.setWithTremble(false); - entries.clear(); - } -} diff --git a/app/src/main/java/io/pslab/fragment/GyroscopeDataFragment.java b/app/src/main/java/io/pslab/fragment/GyroscopeDataFragment.java deleted file mode 100644 index 68de4b1e1..000000000 --- a/app/src/main/java/io/pslab/fragment/GyroscopeDataFragment.java +++ /dev/null @@ -1,516 +0,0 @@ -package io.pslab.fragment; - -import android.graphics.Bitmap; -import android.graphics.Color; -import android.hardware.Sensor; -import android.hardware.SensorEvent; -import android.hardware.SensorEventListener; -import android.hardware.SensorManager; -import android.location.Location; -import android.os.Bundle; -import android.os.Environment; -import android.os.Handler; -import androidx.annotation.NonNull; - -import com.google.android.material.snackbar.Snackbar; -import androidx.fragment.app.Fragment; - -import android.text.Html; -import android.util.Pair; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.LinearLayout; -import android.widget.TextView; - -import com.github.mikephil.charting.data.Entry; -import com.github.mikephil.charting.data.LineData; -import com.github.mikephil.charting.data.LineDataSet; - -import java.io.File; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.text.DecimalFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.Timer; -import java.util.TimerTask; - -import io.pslab.R; -import io.pslab.activity.GyroscopeActivity; -import io.pslab.interfaces.OperationCallback; -import io.pslab.models.GyroData; -import io.pslab.models.SensorDataBlock; -import io.pslab.others.CSVDataLine; -import io.pslab.others.CSVLogger; -import io.pslab.others.CustomSnackBar; - -import static android.content.Context.SENSOR_SERVICE; -import static io.pslab.others.CSVLogger.CSV_DIRECTORY; - -public class GyroscopeDataFragment extends Fragment implements OperationCallback { - - private static final CSVDataLine CSV_HEADER = new CSVDataLine() - .add("Timestamp") - .add("DateTime") - .add("ReadingsX") - .add("ReadingsY") - .add("ReadingsZ") - .add("Latitude") - .add("Longitude"); - private static int updatePeriod = 1000; - private static float highLimit = 1.2f; - private static float gain = 1; - private int turns = 0; - private boolean returningFromPause = false; - private Timer graphTimer; - private SensorManager sensorManager; - private Sensor sensor; - private long startTime, block; - private GyroData sensorData; - private ArrayList recordedGyroArray; - private GyroscopeActivity gyroSensor; - private ArrayList gyroscopeViewFragments = new ArrayList<>(); - private int[] colors = {Color.YELLOW, Color.MAGENTA, Color.GREEN}; - private DecimalFormat df = new DecimalFormat("+#0.0;-#0.0"); - private View rootView; - private TextView noSensorText; - private LinearLayout gyroLinearLayout; - - public static GyroscopeDataFragment newInstance() { - return new GyroscopeDataFragment(); - } - - public static void setParameters(float highLimit, int updatePeriod, String gain) { - GyroscopeDataFragment.highLimit = highLimit; - GyroscopeDataFragment.updatePeriod = updatePeriod; - GyroscopeDataFragment.gain = Integer.valueOf(gain); - } - - public static Pair> getParameters() { - return new Pair<>(updatePeriod, new Pair<>(highLimit, gain)); - } - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - startTime = System.currentTimeMillis(); - gyroSensor = (GyroscopeActivity) getActivity(); - for (GyroscopeViewFragment fragment : gyroscopeViewFragments) { - fragment.clear(); - } - } - - @Override - public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { - rootView = inflater.inflate(R.layout.fragment_gyroscope_data, container, false); - gyroscopeViewFragments.clear(); - gyroscopeViewFragments.add((GyroscopeViewFragment) getChildFragmentManager().findFragmentById(R.id.gyroscope_x_axis_fragment)); - gyroscopeViewFragments.add((GyroscopeViewFragment) getChildFragmentManager().findFragmentById(R.id.gyroscope_y_axis_fragment)); - gyroscopeViewFragments.add((GyroscopeViewFragment) getChildFragmentManager().findFragmentById(R.id.gyroscope_z_axis_fragment)); - - gyroscopeViewFragments.get(1).getGyroAxisImage().setImageResource(R.drawable.phone_y_axis); - gyroscopeViewFragments.get(2).getGyroAxisImage().setImageResource(R.drawable.phone_z_axis); - gyroLinearLayout = rootView.findViewById(R.id.gyro_linearlayout); - noSensorText = new TextView(getContext()); - - setupInstruments(); - return rootView; - } - - @Override - public void onResume() { - super.onResume(); - if (gyroSensor.playingData) { - recordedGyroArray = new ArrayList<>(); - resetInstrumentData(); - playRecordedData(); - } else if (gyroSensor.viewingData) { - recordedGyroArray = new ArrayList<>(); - resetInstrumentData(); - plotAllRecordedData(); - - } else if (!gyroSensor.isRecording) { - updateGraphs(); - initiateGyroSensor(); - } else if (returningFromPause) { - updateGraphs(); - } - } - - @Override - public void onDestroyView() { - super.onDestroyView(); - if (graphTimer != null) { - graphTimer.cancel(); - } - if (sensorManager != null) { - sensorManager.unregisterListener(gyroScopeSensorEventListener); - } else { - gyroLinearLayout.removeView(noSensorText); - } - } - - private void plotAllRecordedData() { - recordedGyroArray.addAll(gyroSensor.recordedGyroData); - if (recordedGyroArray.size() != 0) { - for (int i = 0; i < gyroscopeViewFragments.size(); i++) { - GyroscopeViewFragment fragment = gyroscopeViewFragments.get(i); - for (GyroData d : recordedGyroArray) { - if (fragment.getCurrentMax() < d.getGyro()[i]) { - fragment.setCurrentMax(d.getGyro()[i]); - } - if (fragment.getCurrentMin() < d.getGyro()[i]) { - fragment.setCurrentMin(d.getGyro()[i]); - } - Entry entry = new Entry((float) (d.getTime() - d.getBlock()) / 1000, d.getGyro()[i]); - fragment.addEntry(entry); - } - - fragment.setYaxis(highLimit); - - LineDataSet dataSet = new LineDataSet(fragment.getEntries(), getString(R.string.gyroscope)); - dataSet.setDrawCircles(false); - dataSet.setDrawValues(false); - dataSet.setLineWidth(2); - - dataSet.setDrawCircles(false); - dataSet.setDrawValues(false); - dataSet.setMode(LineDataSet.Mode.CUBIC_BEZIER); - dataSet.setLineWidth(1); - dataSet.setColor(colors[i]); - LineData data = new LineData(dataSet); - fragment.setChartData(data); - } - } - } - - private void playRecordedData() { - recordedGyroArray.addAll(gyroSensor.recordedGyroData); - try { - if (recordedGyroArray.size() > 1) { - GyroData i = recordedGyroArray.get(1); - long timeGap = i.getTime() - i.getBlock(); - processRecordedData(timeGap); - } else { - processRecordedData(0); - } - } catch (IllegalArgumentException e) { - CustomSnackBar.showSnackBar(getActivity().findViewById(android.R.id.content), - getString(R.string.no_data_fetched), null, null, Snackbar.LENGTH_SHORT); - } - } - - private void processRecordedData(long timeGap) { - final Handler handler = new Handler(); - if (graphTimer != null) { - graphTimer.cancel(); - } else { - graphTimer = new Timer(); - } - graphTimer.schedule(new TimerTask() { - @Override - public void run() { - handler.post(new Runnable() { - @Override - public void run() { - if (gyroSensor.playingData) { - try { - GyroData d = recordedGyroArray.get(turns); - turns++; - for (int i = 0; i < gyroscopeViewFragments.size(); i++) { - GyroscopeViewFragment fragment = gyroscopeViewFragments.get(i); - StringBuilder builder = new StringBuilder(); - builder.append(df.format(d.getGyro()[i])); - builder.append(" "); - builder.append(getResources().getString(R.string.radian_per_sec_text)); - fragment.setGyroValue(Html.fromHtml(builder.toString())); - - if (fragment.getCurrentMax() < d.getGyro()[i]) { - fragment.setCurrentMax(d.getGyro()[i]); - StringBuilder max_builder = new StringBuilder(); - max_builder.append("Max: "); - max_builder.append(df.format(fragment.getCurrentMax())); - max_builder.append(" "); - max_builder.append(getResources().getString(R.string.radian_per_sec_text)); - fragment.setGyroMax(Html.fromHtml(max_builder.toString())); - } - if (fragment.getCurrentMin() < d.getGyro()[i]) { - fragment.setCurrentMin(d.getGyro()[i]); - StringBuilder min_builder = new StringBuilder(); - min_builder.append("Min: "); - min_builder.append(df.format(fragment.getCurrentMax())); - min_builder.append(" "); - min_builder.append(getResources().getString(R.string.radian_per_sec_text)); - fragment.setGyroMin(Html.fromHtml(min_builder.toString())); - } - - fragment.setYaxis(highLimit); - Entry entryX = new Entry((float) (d.getTime() - d.getBlock()) / 1000, d.getGyro()[i]); - fragment.addEntry(entryX); - - LineDataSet dataSet = new LineDataSet(fragment.getEntries(), getString(R.string.gyroscope)); - dataSet.setDrawCircles(false); - dataSet.setDrawValues(false); - dataSet.setMode(LineDataSet.Mode.CUBIC_BEZIER); - dataSet.setLineWidth(1); - dataSet.setColor(colors[i]); - LineData data = new LineData(dataSet); - - fragment.setChartData(data); - } - } catch (IndexOutOfBoundsException e) { - graphTimer.cancel(); - graphTimer = null; - turns = 0; - gyroSensor.playingData = false; - gyroSensor.startedPlay = false; - gyroSensor.invalidateOptionsMenu(); - } - } - } - }); - } - }, 0, timeGap); - } - - @Override - public void playData() { - resetInstrumentData(); - gyroSensor.startedPlay = true; - try { - if (recordedGyroArray.size() > 1) { - GyroData i = recordedGyroArray.get(1); - long timeGap = i.getTime() - i.getBlock(); - processRecordedData(timeGap); - } else { - processRecordedData(0); - } - } catch (IllegalArgumentException e) { - CustomSnackBar.showSnackBar(getActivity().findViewById(android.R.id.content), - getString(R.string.no_data_fetched), null, null, Snackbar.LENGTH_SHORT); - } - } - - @Override - public void stopData() { - if (graphTimer != null) { - graphTimer.cancel(); - graphTimer = null; - } - recordedGyroArray.clear(); - for (GyroscopeViewFragment fragment : gyroscopeViewFragments) { - fragment.clearEntry(); - } - plotAllRecordedData(); - gyroSensor.startedPlay = false; - gyroSensor.playingData = false; - turns = 0; - gyroSensor.invalidateOptionsMenu(); - } - - @Override - public void saveGraph() { - gyroSensor.csvLogger.prepareLogFile(); - gyroSensor.csvLogger.writeMetaData(getResources().getString(R.string.gyroscope)); - gyroSensor.csvLogger.writeCSVFile(CSV_HEADER); - for (GyroData gyroData : gyroSensor.recordedGyroData) { - gyroSensor.csvLogger.writeCSVFile( - new CSVDataLine() - .add(gyroData.getTime()) - .add(CSVLogger.FILE_NAME_FORMAT.format(new Date(gyroData.getTime()))) - .add(gyroData.getGyroX()) - .add(gyroData.getGyroY()) - .add(gyroData.getGyroZ()) - .add(gyroData.getLat()) - .add(gyroData.getLon()) - ); - } - View view = rootView.findViewById(R.id.gyro_linearlayout); - view.setDrawingCacheEnabled(true); - Bitmap b = view.getDrawingCache(); - try { - b.compress(Bitmap.CompressFormat.JPEG, 100, new FileOutputStream(Environment.getExternalStorageDirectory().getAbsolutePath() + - File.separator + CSV_DIRECTORY + File.separator + gyroSensor.getSensorName() + - File.separator + CSVLogger.FILE_NAME_FORMAT.format(new Date()) + "_graph.jpg")); - } catch (FileNotFoundException e) { - e.printStackTrace(); - } - } - - private void setupInstruments() { - for (GyroscopeViewFragment fragment : gyroscopeViewFragments) { - fragment.setUp(); - } - } - - @Override - public void onPause() { - super.onPause(); - if (graphTimer != null) { - returningFromPause = true; - graphTimer.cancel(); - graphTimer = null; - if (gyroSensor.playingData) { - gyroSensor.finish(); - } - } - } - - private void updateGraphs() { - final Handler handler = new Handler(); - if (graphTimer != null) { - graphTimer.cancel(); - } - graphTimer = new Timer(); - graphTimer.schedule(new TimerTask() { - @Override - public void run() { - handler.post(new Runnable() { - @Override - public void run() { - try { - visualizeData(); - } catch (NullPointerException e) { - /* Pass for another refresh round */ - } - } - }); - } - }, 0, updatePeriod); - } - - private void writeLogToFile(long timestamp, float readingX, float readingY, float readingZ) { - if (getActivity() != null && gyroSensor.isRecording) { - if (gyroSensor.writeHeaderToFile) { - gyroSensor.csvLogger.prepareLogFile(); - gyroSensor.csvLogger.writeMetaData(getResources().getString(R.string.gyroscope)); - gyroSensor.csvLogger.writeCSVFile(CSV_HEADER); - gyroSensor.csvLogger.writeCSVFile(CSV_HEADER); - block = timestamp; - gyroSensor.recordSensorDataBlockID(new SensorDataBlock(timestamp, gyroSensor.getSensorName())); - gyroSensor.writeHeaderToFile = !gyroSensor.writeHeaderToFile; - } - if (gyroSensor.addLocation && gyroSensor.gpsLogger.isGPSEnabled()) { - Location location = gyroSensor.gpsLogger.getDeviceLocation(); - gyroSensor.csvLogger.writeCSVFile( - new CSVDataLine() - .add(timestamp) - .add(CSVLogger.FILE_NAME_FORMAT.format(new Date(timestamp))) - .add(readingX) - .add(readingY) - .add(readingZ) - .add(location.getLatitude()) - .add(location.getLongitude()) - ); - sensorData = new GyroData(timestamp, block, gyroscopeViewFragments.get(0).getCurrentValue(), gyroscopeViewFragments.get(1).getCurrentValue(), gyroscopeViewFragments.get(2).getCurrentValue(), location.getLatitude(), location.getLongitude()); - } else { - gyroSensor.csvLogger.writeCSVFile( - new CSVDataLine() - .add(timestamp) - .add(CSVLogger.FILE_NAME_FORMAT.format(new Date(timestamp))) - .add(readingX) - .add(readingY) - .add(readingZ) - .add(0.0) - .add(0.0) - ); - sensorData = new GyroData(timestamp, block, gyroscopeViewFragments.get(0).getCurrentValue(), gyroscopeViewFragments.get(1).getCurrentValue(), gyroscopeViewFragments.get(2).getCurrentValue(), 0.0, 0.0); - } - gyroSensor.recordSensorData(sensorData); - } else { - gyroSensor.writeHeaderToFile = true; - } - } - - private void visualizeData() { - for (int i = 0; i < gyroscopeViewFragments.size(); i++) { - GyroscopeViewFragment fragment = gyroscopeViewFragments.get(i); - long timeElapsed = (System.currentTimeMillis() - startTime) / 1000; - if (timeElapsed != fragment.getPreviousTimeElapsed()) { - fragment.setPreviousTimeElapsed(timeElapsed); - fragment.addEntry(new Entry((float) timeElapsed, fragment.getCurrentValue())); - - LineDataSet dataSet = new LineDataSet(fragment.getEntries(), getString(R.string.gyroscope)); - dataSet.setDrawCircles(false); - dataSet.setDrawValues(false); - dataSet.setMode(LineDataSet.Mode.CUBIC_BEZIER); - dataSet.setLineWidth(1); - dataSet.setColor(colors[i]); - LineData data = new LineData(dataSet); - - fragment.setChartData(data); - fragment.setYaxis(highLimit); - } - } - Long currentTime = System.currentTimeMillis(); - writeLogToFile(currentTime, gyroscopeViewFragments.get(0).getCurrentValue(), gyroscopeViewFragments.get(1).getCurrentValue(), gyroscopeViewFragments.get(2).getCurrentValue()); - } - - private SensorEventListener gyroScopeSensorEventListener = new SensorEventListener() { - - @Override - public void onAccuracyChanged(Sensor sensor, int accuracy) {/**/} - - @Override - public void onSensorChanged(SensorEvent event) { - if (event.sensor.getType() == Sensor.TYPE_GYROSCOPE) { - for (int i = 0; i < gyroscopeViewFragments.size(); i++) { - GyroscopeViewFragment fragment = gyroscopeViewFragments.get(i); - fragment.setCurrentValue(event.values[i]); - StringBuilder builder = new StringBuilder(); - builder.append(df.format(fragment.getCurrentValue())); - builder.append(" "); - builder.append(getResources().getString(R.string.radian_per_sec_text)); - fragment.setGyroValue(Html.fromHtml(builder.toString())); - - if (fragment.getCurrentValue() > fragment.getCurrentMax()) { - builder.insert(0, getResources().getString(R.string.text_max)); - builder.insert(3, " "); - fragment.setGyroMax(Html.fromHtml(builder.toString())); - fragment.setCurrentMax(fragment.getCurrentValue()); - } else if (fragment.getCurrentValue() < fragment.getCurrentMin()) { - builder.insert(0, getResources().getString(R.string.text_min)); - builder.insert(3, " "); - fragment.setGyroMin(Html.fromHtml(builder.toString())); - fragment.setCurrentMin(fragment.getCurrentValue()); - } - } - } - } - }; - - private void resetInstrumentData() { - for (GyroscopeViewFragment fragment : gyroscopeViewFragments) { - fragment.clear(); - } - } - - private void initiateGyroSensor() { - resetInstrumentData(); - sensorManager = (SensorManager) getContext().getSystemService(SENSOR_SERVICE); - if (sensorManager == null) { - noSensorLayoutUpdate(); - } else { - sensor = sensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE); - if (sensor == null) { - CustomSnackBar.showSnackBar(getActivity().findViewById(android.R.id.content), - getString(R.string.no_gyroscope_sensor), null, null, Snackbar.LENGTH_LONG); - } else { - sensorManager.registerListener(gyroScopeSensorEventListener, - sensor, SensorManager.SENSOR_DELAY_FASTEST); - } - } - } - - private void noSensorLayoutUpdate() { - gyroscopeViewFragments.clear(); - rootView.findViewById(R.id.gyroscope_x_axis_fragment).setVisibility(View.GONE); - rootView.findViewById(R.id.gyroscope_y_axis_fragment).setVisibility(View.GONE); - rootView.findViewById(R.id.gyroscope_z_axis_fragment).setVisibility(View.GONE); - noSensorText.setText(getResources().getString(R.string.no_data_recorded_gyro)); - noSensorText.setAllCaps(true); - gyroLinearLayout.addView(noSensorText); - } -} diff --git a/app/src/main/java/io/pslab/fragment/GyroscopeSettingsFragment.java b/app/src/main/java/io/pslab/fragment/GyroscopeSettingsFragment.java deleted file mode 100644 index 87a6c1e7f..000000000 --- a/app/src/main/java/io/pslab/fragment/GyroscopeSettingsFragment.java +++ /dev/null @@ -1,126 +0,0 @@ -package io.pslab.fragment; - -import android.annotation.SuppressLint; -import android.content.SharedPreferences; -import android.os.Bundle; -import com.google.android.material.snackbar.Snackbar; -import androidx.preference.CheckBoxPreference; -import androidx.preference.EditTextPreference; -import androidx.preference.PreferenceFragmentCompat; -import androidx.preference.PreferenceManager; - -import io.pslab.R; -import io.pslab.others.CustomSnackBar; -import io.pslab.others.PSLabPermission; - -public class GyroscopeSettingsFragment extends PreferenceFragmentCompat implements SharedPreferences.OnSharedPreferenceChangeListener { - - public static final String KEY_INCLUDE_LOCATION = "include_location_sensor_data"; - public static final String KEY_UPDATE_PERIOD = "setting_gyro_update_period"; - public static final String KEY_HIGH_LIMIT = "setting_gyro_high_limit"; - public static final String KEY_GYROSCOPE_SENSOR_GAIN = "setting_gyro_sensor_gain"; - - private PSLabPermission psLabPermission; - - private EditTextPreference updatePeriodPref; - private EditTextPreference higLimitPref; - private EditTextPreference sensorGainPref; - private CheckBoxPreference locationPreference; - private SharedPreferences sharedPref; - - @Override - public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { - setPreferencesFromResource(R.xml.gyro_scope_settings, rootKey); - updatePeriodPref = (EditTextPreference) getPreferenceScreen().findPreference(KEY_UPDATE_PERIOD); - higLimitPref = (EditTextPreference) getPreferenceScreen().findPreference(KEY_HIGH_LIMIT); - sensorGainPref = (EditTextPreference) getPreferenceScreen().findPreference(KEY_GYROSCOPE_SENSOR_GAIN); - locationPreference = (CheckBoxPreference) getPreferenceScreen().findPreference(KEY_INCLUDE_LOCATION); - sharedPref = PreferenceManager.getDefaultSharedPreferences(getActivity()); - - psLabPermission = PSLabPermission.getInstance(); - if (!psLabPermission.checkPermissions(getActivity(), PSLabPermission.MAP_PERMISSION)) { - SharedPreferences.Editor editor = sharedPref.edit(); - editor.putBoolean(LuxMeterSettingFragment.KEY_INCLUDE_LOCATION, true); - editor.apply(); - } - } - - @Override - public void onResume() { - super.onResume(); - locationPreference.setChecked(sharedPref.getBoolean(KEY_INCLUDE_LOCATION, true)); - updatePeriodPref.setSummary(updatePeriodPref.getText() + " ms"); - higLimitPref.setSummary(higLimitPref.getText() + " rad/s"); - sensorGainPref.setSummary(sensorGainPref.getText()); - getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this); - } - - @Override - public void onPause() { - super.onPause(); - getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this); - } - - @SuppressLint("ApplySharedPref") - @Override - public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String s) { - switch (s) { - case KEY_INCLUDE_LOCATION: - if (locationPreference.isChecked()) { - psLabPermission.checkPermissions( - getActivity(), PSLabPermission.MAP_PERMISSION); - } - break; - case KEY_UPDATE_PERIOD: - try { - Integer updatePeriod = Integer.parseInt(updatePeriodPref.getText()); - if (updatePeriod > 2000 || updatePeriod < 100) { - throw new NumberFormatException(); - } else { - updatePeriodPref.setSummary(updatePeriod + " ms"); - } - } catch (NumberFormatException e) { - CustomSnackBar.showSnackBar(getActivity().findViewById(android.R.id.content), - getString(R.string.update_period_msg),null,null, Snackbar.LENGTH_SHORT); - updatePeriodPref.setSummary("1000 ms"); - updatePeriodPref.setText("1000"); - SharedPreferences.Editor editor = sharedPref.edit(); - editor.putString(s, "1000"); - editor.commit(); - } - break; - case KEY_GYROSCOPE_SENSOR_GAIN: - try { - Integer gain = Integer.valueOf(sensorGainPref.getText()); - sensorGainPref.setSummary(String.valueOf(gain)); - } catch (NumberFormatException e) { - sensorGainPref.setSummary("1"); - sensorGainPref.setText("1"); - SharedPreferences.Editor editor = sharedPref.edit(); - editor.putString(KEY_GYROSCOPE_SENSOR_GAIN, "1"); - editor.commit(); - } - break; - case KEY_HIGH_LIMIT: - try { - Integer highLimit = Integer.parseInt(higLimitPref.getText()); - if (highLimit > 1000 || highLimit < 0) { - throw new NumberFormatException(); - } else { - higLimitPref.setSummary(String.valueOf(highLimit) + " rad/s"); - } - } catch (NumberFormatException e) { - CustomSnackBar.showSnackBar(getActivity().findViewById(android.R.id.content), - getString(R.string.high_limit_msg),null,null, Snackbar.LENGTH_SHORT); - higLimitPref.setSummary("20 " + "rad/s"); - higLimitPref.setText("20"); - SharedPreferences.Editor editor = sharedPref.edit(); - editor.putString(KEY_HIGH_LIMIT, "20"); - editor.commit(); - } - break; - default: - break; - } - } -} diff --git a/app/src/main/java/io/pslab/fragment/GyroscopeViewFragment.java b/app/src/main/java/io/pslab/fragment/GyroscopeViewFragment.java deleted file mode 100644 index 06c9b6771..000000000 --- a/app/src/main/java/io/pslab/fragment/GyroscopeViewFragment.java +++ /dev/null @@ -1,174 +0,0 @@ -package io.pslab.fragment; - -import android.graphics.Color; -import android.os.Bundle; -import androidx.annotation.NonNull; - -import androidx.annotation.Nullable; -import androidx.fragment.app.Fragment; - -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; - -import com.github.mikephil.charting.charts.LineChart; -import com.github.mikephil.charting.components.Legend; -import com.github.mikephil.charting.components.XAxis; -import com.github.mikephil.charting.components.YAxis; -import com.github.mikephil.charting.data.Entry; -import com.github.mikephil.charting.data.LineData; - -import java.util.ArrayList; - -import io.pslab.R; - -public class GyroscopeViewFragment extends Fragment { - - private TextView gyroValue, gyroMin, gyroMax; - private LineChart gyroChart; - private ImageView gyroAxisImage; - private YAxis y; - private float currentMax = Integer.MIN_VALUE; - private float currentMin = Integer.MAX_VALUE; - private float currentValue = 0; - private ArrayList entries; - private long startTime; - private static int updatePeriod = 100; - private long previousTimeElapsed = (System.currentTimeMillis() - startTime) / updatePeriod; - - @Nullable - @Override - public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { - View rootView = inflater.inflate(R.layout.gyroscope_list_item, container, false); - - this.gyroValue = rootView.findViewById(R.id.gyro_value); - this.gyroMax = rootView.findViewById(R.id.gyro_max_text); - this.gyroMin = rootView.findViewById(R.id.gyro_min_text); - this.gyroChart = rootView.findViewById(R.id.chart_gyroscope); - this.gyroAxisImage = rootView.findViewById(R.id.axis_image); - this.entries = new ArrayList<>(); - return rootView; - } - - public ImageView getGyroAxisImage() { - return gyroAxisImage; - } - - public void setUp() { - XAxis x = this.gyroChart.getXAxis(); - this.y = this.gyroChart.getAxisLeft(); - YAxis y2 = this.gyroChart.getAxisRight(); - - this.gyroChart.setTouchEnabled(true); - this.gyroChart.setHighlightPerDragEnabled(true); - this.gyroChart.setDragEnabled(true); - this.gyroChart.setScaleEnabled(true); - this.gyroChart.setDrawGridBackground(false); - this.gyroChart.setPinchZoom(true); - this.gyroChart.setScaleYEnabled(true); - this.gyroChart.setBackgroundColor(Color.BLACK); - this.gyroChart.getDescription().setEnabled(false); - - LineData data = new LineData(); - this.gyroChart.setData(data); - - Legend l = this.gyroChart.getLegend(); - l.setForm(Legend.LegendForm.LINE); - l.setTextColor(Color.WHITE); - - x.setTextColor(Color.WHITE); - x.setDrawGridLines(true); - x.setAvoidFirstLastClipping(true); - x.setDrawLabels(false); - - this.y.setTextColor(Color.WHITE); - this.y.setAxisMaximum(currentMax); - this.y.setAxisMinimum(currentMin); - this.y.setDrawGridLines(true); - this.y.setLabelCount(10); - - y2.setDrawGridLines(false); - y2.setMaxWidth(0); - } - - public void setCurrentMax(float currentMax) { - this.currentMax = currentMax; - } - - public float getCurrentMax() { - return this.currentMax; - } - - public void setCurrentMin(float currentMin) { - this.currentMin = currentMin; - } - - public float getCurrentMin() { - return this.currentMin; - } - - public void setCurrentValue(float currentValue) { - this.currentValue = currentValue; - } - - public float getCurrentValue() { - return this.currentValue; - } - - public void addEntry(Entry entry) { - this.entries.add(entry); - } - - public ArrayList getEntries() { - return this.entries; - } - - public void clearEntry() { - this.entries.clear(); - } - - public void setGyroValue(CharSequence value) { - this.gyroValue.setText(value); - } - - public void setGyroMax(CharSequence value) { - this.gyroMax.setText(value); - } - - public void setGyroMin(CharSequence value) { - this.gyroMin.setText(value); - } - - public void setYaxis(float maxLimit) { - this.y.setAxisMaximum(maxLimit); - this.y.setAxisMinimum(-maxLimit); - this.y.setLabelCount(5); - } - - public void setChartData(LineData data) { - this.gyroChart.setData(data); - this.gyroChart.notifyDataSetChanged(); - this.gyroChart.setVisibleXRangeMaximum(3); - this.gyroChart.moveViewToX(data.getEntryCount()); - this.gyroChart.invalidate(); - } - - public void clear() { - this.currentMax = Integer.MIN_VALUE; - this.currentMin = Integer.MAX_VALUE; - this.entries.clear(); - this.gyroChart.clear(); - this.gyroChart.invalidate(); - this.startTime = System.currentTimeMillis(); - } - - public long getPreviousTimeElapsed() { - return previousTimeElapsed; - } - - public void setPreviousTimeElapsed(long previousTimeElapsed) { - this.previousTimeElapsed = previousTimeElapsed; - } -} diff --git a/app/src/main/java/io/pslab/fragment/HelpAndFeedbackFragment.java b/app/src/main/java/io/pslab/fragment/HelpAndFeedbackFragment.java deleted file mode 100644 index a109a6b75..000000000 --- a/app/src/main/java/io/pslab/fragment/HelpAndFeedbackFragment.java +++ /dev/null @@ -1,49 +0,0 @@ -package io.pslab.fragment; - - -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.MenuItem; -import android.view.View; -import android.view.ViewGroup; - -import androidx.fragment.app.Fragment; - -import com.google.android.material.appbar.AppBarLayout; - -import org.jetbrains.annotations.NotNull; - -import io.pslab.R; - -import butterknife.BindView; -import butterknife.ButterKnife; - - -public class HelpAndFeedbackFragment extends Fragment { - - @BindView(R.id.appBarAnim) - AppBarLayout appBarLayout; - - public static HelpAndFeedbackFragment newInstance() { - return new HelpAndFeedbackFragment(); - } - - public HelpAndFeedbackFragment() { - } - - - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { - View view = inflater.inflate(R.layout.fragment_help_feedback, container, false); - ButterKnife.bind(this, view); - - return view; - } - - @Override - public boolean onOptionsItemSelected(@NotNull MenuItem item) { - return super.onOptionsItemSelected(item); - } - -} diff --git a/app/src/main/java/io/pslab/fragment/HomeFragment.java b/app/src/main/java/io/pslab/fragment/HomeFragment.java deleted file mode 100644 index 9574f1e58..000000000 --- a/app/src/main/java/io/pslab/fragment/HomeFragment.java +++ /dev/null @@ -1,206 +0,0 @@ -package io.pslab.fragment; - -import static io.pslab.others.ScienceLabCommon.scienceLab; - -import android.graphics.Bitmap; -import android.graphics.Paint; -import android.os.Bundle; -import android.view.KeyEvent; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.webkit.WebView; -import android.webkit.WebViewClient; -import android.widget.Button; -import android.widget.ImageView; -import android.widget.LinearLayout; -import android.widget.ProgressBar; -import android.widget.ScrollView; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.fragment.app.Fragment; - -import java.io.IOException; - -import butterknife.BindView; -import butterknife.ButterKnife; -import butterknife.Unbinder; -import io.pslab.R; -import io.pslab.others.InitializationVariable; -import io.pslab.others.ScienceLabCommon; - -public class HomeFragment extends Fragment { - - public static InitializationVariable booleanVariable; - public static boolean isWebViewShowing = false; - @BindView(R.id.tv_device_status) - TextView tvDeviceStatus; - @BindView(R.id.tv_device_version) - TextView tvVersion; - @BindView(R.id.img_device_status) - ImageView imgViewDeviceStatus; - @BindView(R.id.tv_device_description) - TextView deviceDescription; - @BindView(R.id.tv_connect_msg) - LinearLayout tvConnectMsg; - @BindView(R.id.pslab_web_view) - WebView webView; - @BindView(R.id.home_content_scroll_view) - ScrollView svHomeContent; - @BindView(R.id.web_view_progress) - ProgressBar wvProgressBar; - @BindView(R.id.steps_header_text) - TextView stepsHeader; - @BindView(R.id.bluetooth_btn) - Button bluetoothButton; - @BindView(R.id.wifi_btn) - Button wifiButton; - @BindView(R.id.bluetooth_wifi_option_tv) - TextView bluetoothWifiOption; - private boolean deviceFound = false, deviceConnected = false; - private Unbinder unbinder; - - public static HomeFragment newInstance(boolean deviceConnected, boolean deviceFound) { - HomeFragment homeFragment = new HomeFragment(); - homeFragment.deviceConnected = deviceConnected; - homeFragment.deviceFound = deviceFound; - return homeFragment; - } - - @Override - public void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - if (booleanVariable == null) { - booleanVariable = new InitializationVariable(); - } - booleanVariable.setVariable(true); - } - - @Nullable - @Override - public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { - View view = inflater.inflate(R.layout.home_fragment, container, false); - unbinder = ButterKnife.bind(this, view); - stepsHeader.setPaintFlags(Paint.UNDERLINE_TEXT_FLAG); - deviceDescription.setPaintFlags(Paint.UNDERLINE_TEXT_FLAG); - wvProgressBar = (ProgressBar) view.findViewById(R.id.web_view_progress); - - if (deviceFound & deviceConnected) { - tvConnectMsg.setVisibility(View.GONE); - try { - tvVersion.setText(scienceLab.getVersion()); - tvVersion.setVisibility(View.VISIBLE); - } catch (IOException e) { - e.printStackTrace(); - } - imgViewDeviceStatus.setImageResource(R.drawable.icons8_usb_connected_100); - tvDeviceStatus.setText(getString(R.string.device_connected_successfully)); - } else { - imgViewDeviceStatus.setImageResource(R.drawable.icons_usb_disconnected_100); - tvDeviceStatus.setText(getString(R.string.device_not_found)); - } - - /* - * The null-checks in the OnClickListener may seem unnecessary, but even though the - * respective variables are initialized before the setter is called, they may contain null - * in later phases of the lifecycle of this Fragment and cause NullPointerExceptions if not - * checked before access. - * - * See: https://github.com/fossasia/pslab-android/issues/2211 - */ - deviceDescription.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - if (webView == null) { - return; - } - - webView.loadUrl("https://pslab.io"); - webView.getSettings().setDomStorageEnabled(true); - webView.getSettings().setJavaScriptEnabled(true); - svHomeContent.setVisibility(View.GONE); - webView.setWebViewClient(new WebViewClient() { - @Override - public void onPageStarted(WebView view, String url, Bitmap favicon) { - if (wvProgressBar != null) { - wvProgressBar.setIndeterminate(true); - wvProgressBar.setVisibility(View.VISIBLE); - } - } - - public void onPageFinished(WebView view, String url) { - if (wvProgressBar != null) { - wvProgressBar.setVisibility(View.GONE); - } - if (webView != null) { - webView.setVisibility(View.VISIBLE); - } - } - }); - isWebViewShowing = true; - } - }); - - webView.setOnKeyListener(new View.OnKeyListener() { - @Override - public boolean onKey(View v, int keyCode, KeyEvent event) { - if (event.getAction() == KeyEvent.ACTION_DOWN) { - WebView webView = (WebView) v; - switch (keyCode) { - case KeyEvent.KEYCODE_BACK: - if (webView.canGoBack()) { - webView.goBack(); - return true; - } - break; - default: - return false; - } - } - return false; - } - }); - if (ScienceLabCommon.scienceLab.isConnected()) { - bluetoothButton.setVisibility(View.GONE); - wifiButton.setVisibility(View.GONE); - bluetoothWifiOption.setVisibility(View.GONE); - } else { - bluetoothButton.setVisibility(View.VISIBLE); - wifiButton.setVisibility(View.VISIBLE); - bluetoothWifiOption.setVisibility(View.VISIBLE); - } - bluetoothButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - BluetoothScanFragment bluetoothScanFragment = new BluetoothScanFragment(); - bluetoothScanFragment.show(getActivity().getSupportFragmentManager(), "bluetooth"); - bluetoothScanFragment.setCancelable(true); - } - }); - - wifiButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - ESPFragment espFragment = new ESPFragment(); - espFragment.show(getActivity().getSupportFragmentManager(), "wifi"); - espFragment.setCancelable(true); - } - }); - return view; - } - - public void hideWebView() { - webView.setVisibility(View.GONE); - svHomeContent.setVisibility(View.VISIBLE); - isWebViewShowing = false; - webView.loadUrl(""); - } - - @Override - public void onDestroyView() { - super.onDestroyView(); - unbinder.unbind(); - } -} diff --git a/app/src/main/java/io/pslab/fragment/InstrumentsFragment.java b/app/src/main/java/io/pslab/fragment/InstrumentsFragment.java deleted file mode 100644 index c60ce6643..000000000 --- a/app/src/main/java/io/pslab/fragment/InstrumentsFragment.java +++ /dev/null @@ -1,242 +0,0 @@ -package io.pslab.fragment; - -import android.content.Context; -import android.content.Intent; -import android.content.res.Configuration; -import android.os.Build; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.core.util.Supplier; -import androidx.fragment.app.Fragment; -import androidx.fragment.app.FragmentActivity; -import androidx.fragment.app.FragmentManager; -import androidx.recyclerview.widget.DefaultItemAnimator; -import androidx.recyclerview.widget.GridLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import io.pslab.R; -import io.pslab.activity.AccelerometerActivity; -import io.pslab.activity.BarometerActivity; -import io.pslab.activity.CompassActivity; -import io.pslab.activity.DustSensorActivity; -import io.pslab.activity.GasSensorActivity; -import io.pslab.activity.GyroscopeActivity; -import io.pslab.activity.LogicalAnalyzerActivity; -import io.pslab.activity.LuxMeterActivity; -import io.pslab.activity.MultimeterActivity; -import io.pslab.activity.OscilloscopeActivity; -import io.pslab.activity.PowerSourceActivity; -import io.pslab.activity.RoboticArmActivity; -import io.pslab.activity.SensorActivity; -import io.pslab.activity.SoundMeterActivity; -import io.pslab.activity.ThermometerActivity; -import io.pslab.activity.WaveGeneratorActivity; -import io.pslab.adapters.ApplicationAdapter; -import io.pslab.items.ApplicationItem; - - -/** - * Created by viveksb007 on 29/3/17. - */ - -public final class InstrumentsFragment extends Fragment { - - private Map> intentSupplierMap; - - private ApplicationAdapter applicationAdapter; - private List applicationItemList; - private Context context; - - public static InstrumentsFragment newInstance() { - return new InstrumentsFragment(); - } - - @Nullable - @Override - public View onCreateView(@NonNull final LayoutInflater inflater, @Nullable final ViewGroup container, - @Nullable final Bundle savedInstanceState) { - intentSupplierMap = generateIntentMap(); - - final View view = inflater.inflate(R.layout.applications_fragment, container, false); - context = getContext(); - applicationItemList = new ArrayList<>(); - applicationAdapter = new ApplicationAdapter(applicationItemList, - item -> { - final String applicationName = item.getApplicationName(); - final Intent intent = createIntent(applicationName); - if (intent != null) { - startActivity(intent); - } - }); - final int rows = context.getResources().getConfiguration().orientation - == Configuration.ORIENTATION_PORTRAIT ? 1 : 2; - - initiateViews(view, rows); - - return view; - } - - private Intent createIntent(@NonNull final String applicationName) { - final Supplier callable = intentSupplierMap.get(applicationName); - return callable == null ? null : callable.get(); - } - - /** - * Initiate Recycler view - */ - private void initiateViews(@NonNull final View view, final int rows) { - final RecyclerView listView = view.findViewById(R.id.applications_recycler_view); - final RecyclerView.LayoutManager mLayoutManager = new GridLayoutManager(context, rows); - listView.setLayoutManager(mLayoutManager); - new LoadList().doTask(listView); - - } - - /** - * Generate an array of Application Items and add them to the adapter - */ - private class LoadList { - - private void doTask(@NonNull final RecyclerView listView) { - - final int[] descriptions = { - R.string.oscilloscope_description, - R.string.multimeter_description, - R.string.logic_analyzer_description, - R.string.sensors_description, - R.string.wave_generator_description, - R.string.power_source_description, - R.string.lux_meter_description, - R.string.accelerometer_description, - R.string.baro_meter_description, - R.string.compass_description, - R.string.gyroscope_description, - R.string.thermometer_desc, - R.string.robotic_arm_description, - R.string.gas_sensor_description, - R.string.dust_sensor_description, - R.string.sound_meter_desc - }; - - applicationItemList.add(new ApplicationItem( - getResources().getString(R.string.oscilloscope), R.drawable.tile_icon_oscilloscope, getResources().getString(descriptions[0])) - ); - applicationItemList.add(new ApplicationItem( - getResources().getString(R.string.multimeter), R.drawable.tile_icon_multimeter, getResources().getString(descriptions[1])) - ); - applicationItemList.add(new ApplicationItem( - getResources().getString(R.string.logical_analyzer), R.drawable.tile_icon_logic_analyzer, getResources().getString(descriptions[2])) - ); - applicationItemList.add(new ApplicationItem( - getResources().getString(R.string.sensors), R.drawable.tile_icon_sensors, getResources().getString(descriptions[3])) - ); - applicationItemList.add(new ApplicationItem( - getResources().getString(R.string.wave_generator), R.drawable.tile_icon_wave_generator, getResources().getString(descriptions[4])) - ); - applicationItemList.add(new ApplicationItem( - getResources().getString(R.string.power_source), R.drawable.tile_icon_power_source, getResources().getString(descriptions[5])) - ); - applicationItemList.add(new ApplicationItem( - getResources().getString(R.string.lux_meter), R.drawable.tile_icon_lux_meter, getResources().getString(descriptions[6])) - ); - applicationItemList.add(new ApplicationItem( - getResources().getString(R.string.accelerometer), R.drawable.tile_icon_accelerometer, getResources().getString(descriptions[7])) - ); - applicationItemList.add(new ApplicationItem( - getResources().getString(R.string.baro_meter), R.drawable.tile_icon_barometer, getResources().getString(descriptions[8]) - )); - applicationItemList.add(new ApplicationItem( - getResources().getString(R.string.compass), R.drawable.tile_icon_compass, getResources().getString(descriptions[9]) - )); - applicationItemList.add(new ApplicationItem( - getResources().getString(R.string.gyroscope), R.drawable.gyroscope_logo, getResources().getString(descriptions[10]) - )); - applicationItemList.add(new ApplicationItem( - getResources().getString(R.string.thermometer), R.drawable.thermometer_logo, getResources().getString(descriptions[11]) - )); - applicationItemList.add(new ApplicationItem( - getResources().getString(R.string.robotic_arm), R.drawable.robotic_arm, getResources().getString(descriptions[12]) - )); - applicationItemList.add(new ApplicationItem( - getResources().getString(R.string.gas_sensor), R.drawable.tile_icon_gas, getResources().getString(descriptions[13]) - )); - applicationItemList.add(new ApplicationItem( - getResources().getString(R.string.dust_sensor), R.drawable.tile_icon_gas, getResources().getString(descriptions[14]) - )); - applicationItemList.add(new ApplicationItem( - getString(R.string.sound_meter), R.drawable.tile_icon_gas, getString(descriptions[15]) - )); - listView.setItemAnimator(new DefaultItemAnimator()); - listView.setAdapter(applicationAdapter); - - } - } - - @Override - public void onConfigurationChanged(@NonNull final Configuration newConfig) { - super.onConfigurationChanged(newConfig); - - final FragmentActivity activity = getActivity(); - if (activity != null) { - final FragmentManager fragmentManager = activity.getSupportFragmentManager(); - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) { - fragmentManager.beginTransaction().detach(this).attach(this).commitAllowingStateLoss(); - } else { - fragmentManager.beginTransaction().detach(this).commitNowAllowingStateLoss(); - fragmentManager.beginTransaction().attach(this).commitNowAllowingStateLoss(); - } - } - } - - private Map> generateIntentMap() { - final Map> map = new HashMap<>(); - - map.put(getString(R.string.oscilloscope), () -> { - final Intent intent = new Intent(context, OscilloscopeActivity.class); - intent.putExtra("who", "Instruments"); - return intent; - }); - map.put(getString(R.string.multimeter), () -> - new Intent(context, MultimeterActivity.class)); - map.put(getString(R.string.logical_analyzer), () -> - new Intent(context, LogicalAnalyzerActivity.class)); - map.put(getString(R.string.sensors), () -> - new Intent(context, SensorActivity.class)); - map.put(getString(R.string.wave_generator), () -> - new Intent(context, WaveGeneratorActivity.class)); - map.put(getString(R.string.power_source), () -> - new Intent(context, PowerSourceActivity.class)); - map.put(getString(R.string.lux_meter), () -> - new Intent(context, LuxMeterActivity.class)); - map.put(getString(R.string.accelerometer), () -> - new Intent(context, AccelerometerActivity.class)); - map.put(getString(R.string.baro_meter), () -> - new Intent(context, BarometerActivity.class)); - map.put(getString(R.string.compass), () -> - new Intent(context, CompassActivity.class)); - map.put(getString(R.string.gyroscope), () -> - new Intent(context, GyroscopeActivity.class)); - map.put(getString(R.string.thermometer), () -> - new Intent(context, ThermometerActivity.class)); - map.put(getString(R.string.robotic_arm), () -> - new Intent(context, RoboticArmActivity.class)); - map.put(getString(R.string.gas_sensor), () -> - new Intent(context, GasSensorActivity.class)); - map.put(getString(R.string.dust_sensor), () -> - new Intent(context, DustSensorActivity.class)); - map.put(getString(R.string.sound_meter), () -> - new Intent(context, SoundMeterActivity.class)); - - return map; - } -} diff --git a/app/src/main/java/io/pslab/fragment/LALogicLinesFragment.java b/app/src/main/java/io/pslab/fragment/LALogicLinesFragment.java deleted file mode 100644 index 1dadeba1e..000000000 --- a/app/src/main/java/io/pslab/fragment/LALogicLinesFragment.java +++ /dev/null @@ -1,1475 +0,0 @@ -package io.pslab.fragment; - -import android.app.Activity; -import android.content.Context; -import android.content.Intent; -import android.graphics.Color; -import android.location.Location; -import android.location.LocationManager; -import android.os.AsyncTask; -import android.os.Bundle; -import android.util.DisplayMetrics; -import android.util.Log; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.AdapterView; -import android.widget.ArrayAdapter; -import android.widget.Button; -import android.widget.LinearLayout; -import android.widget.ProgressBar; -import android.widget.Spinner; -import android.widget.TextView; - -import androidx.annotation.Nullable; -import androidx.appcompat.app.ActionBar; -import androidx.appcompat.app.AppCompatActivity; -import androidx.fragment.app.Fragment; -import androidx.viewpager.widget.ViewPager; - -import com.github.mikephil.charting.charts.LineChart; -import com.github.mikephil.charting.components.Legend; -import com.github.mikephil.charting.components.XAxis; -import com.github.mikephil.charting.components.YAxis; -import com.github.mikephil.charting.data.Entry; -import com.github.mikephil.charting.data.LineData; -import com.github.mikephil.charting.data.LineDataSet; -import com.github.mikephil.charting.highlight.Highlight; -import com.github.mikephil.charting.interfaces.datasets.ILineDataSet; -import com.github.mikephil.charting.listener.OnChartValueSelectedListener; -import com.google.android.material.snackbar.Snackbar; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Date; -import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.List; - -import butterknife.ButterKnife; -import in.goodiebag.carouselpicker.CarouselPicker; -import io.pslab.DataFormatter; -import io.pslab.R; -import io.pslab.activity.DataLoggerActivity; -import io.pslab.activity.LogicalAnalyzerActivity; -import io.pslab.communication.ScienceLab; -import io.pslab.communication.digitalChannel.DigitalChannel; -import io.pslab.models.LogicAnalyzerData; -import io.pslab.models.SensorDataBlock; -import io.pslab.others.CSVDataLine; -import io.pslab.others.CSVLogger; -import io.pslab.others.CustomSnackBar; -import io.pslab.others.GPSLogger; -import io.pslab.others.LocalDataLog; -import io.pslab.others.LogicAnalyzerAxisFormatter; -import io.pslab.others.ScienceLabCommon; -import io.realm.Realm; -import io.realm.RealmObject; -import io.realm.RealmResults; - -/** - * Created by viveksb007 on 9/6/17. - */ - -public class LALogicLinesFragment extends Fragment { - - private static final int EVERY_EDGE = 1; - private static final int DISABLED = 0; - private static final int EVERY_FOURTH_RISING_EDGE = 4; - private static final int EVERY_RISING_EDGE = 3; - private static final int EVERY_FALLING_EDGE = 2; - - private static final CSVDataLine CSV_HEADER = - new CSVDataLine() - .add("Timestamp") - .add("DateTime") - .add("Channel") - .add("ChannelMode") - .add("xData") - .add("yData") - .add("lat") - .add("lon"); - - private final Object lock = new Object(); - List tempInput; - DigitalChannel digitalChannel; - ArrayList digitalChannelArray; - List dataSets; - - // Graph Plot - private CarouselPicker carouselPicker; - private LinearLayout llChannel1, llChannel2, llChannel3, llChannel4; - private Spinner channelSelectSpinner1, channelSelectSpinner2, channelSelectSpinner3, channelSelectSpinner4; - private Spinner edgeSelectSpinner1, edgeSelectSpinner2, edgeSelectSpinner3, edgeSelectSpinner4; - private Button analyze_button; - private ProgressBar progressBar; - private CaptureOne captureOne; - private CaptureTwo captureTwo; - private CaptureThree captureThree; - private CaptureFour captureFour; - private int currentChannel = 0; - private int[] colors = new int[]{Color.MAGENTA, Color.GREEN, Color.CYAN, Color.YELLOW}; - private OnChartValueSelectedListener listener; - - private Activity activity; - private int channelMode; - private ScienceLab scienceLab; - private LineChart logicLinesChart; - private ArrayList channelNames = new ArrayList<>(); - private ArrayList edgesNames = new ArrayList<>(); - private TextView tvTimeUnit, xCoordinateText; - private Realm realm; - private GPSLogger gpsLogger; - private CSVLogger csvLogger; - private ArrayList recordXAxis; - private ArrayList recordYAxis; - private ArrayList recordChannelMode; - private String[] channels = new String[]{"LA1", "LA2", "LA3", "LA4"}; - private HashMap channelMap; - private ArrayList channelSelectSpinners; - private ArrayList edgeSelectSpinners; - private View rootView; - - public static LALogicLinesFragment newInstance(Activity activity) { - LALogicLinesFragment laLogicLinesFragment = new LALogicLinesFragment(); - laLogicLinesFragment.activity = activity; - return laLogicLinesFragment; - } - - @Override - public void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - ButterKnife.bind(getActivity()); - scienceLab = ScienceLabCommon.scienceLab; - realm = LocalDataLog.with().getRealm(); - gpsLogger = new GPSLogger(getContext(), (LocationManager) getContext().getSystemService(Context.LOCATION_SERVICE)); - csvLogger = new CSVLogger(getString(R.string.logical_analyzer)); - recordXAxis = new ArrayList<>(); - recordYAxis = new ArrayList<>(); - recordChannelMode = new ArrayList<>(); - channelSelectSpinners = new ArrayList<>(); - edgeSelectSpinners = new ArrayList<>(); - } - - @Nullable - @Override - public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { - rootView = inflater.inflate(R.layout.logic_analyzer_logic_lines, container, false); - - // Heading - tvTimeUnit = rootView.findViewById(R.id.la_tv_time_unit); - tvTimeUnit.setText(getString(R.string.time_unit_la)); - - // Carousel View - carouselPicker = rootView.findViewById(R.id.carouselPicker); - llChannel1 = rootView.findViewById(R.id.ll_chart_channel_1); - llChannel1.setVisibility(View.VISIBLE); - llChannel2 = rootView.findViewById(R.id.ll_chart_channel_2); - llChannel2.setVisibility(View.GONE); - llChannel3 = rootView.findViewById(R.id.ll_chart_channel_3); - llChannel3.setVisibility(View.GONE); - llChannel4 = rootView.findViewById(R.id.ll_chart_channel_4); - llChannel4.setVisibility(View.GONE); - channelSelectSpinner1 = rootView.findViewById(R.id.channel_select_spinner_1); - channelSelectSpinner2 = rootView.findViewById(R.id.channel_select_spinner_2); - channelSelectSpinner3 = rootView.findViewById(R.id.channel_select_spinner_3); - channelSelectSpinner4 = rootView.findViewById(R.id.channel_select_spinner_4); - edgeSelectSpinner1 = rootView.findViewById(R.id.edge_select_spinner_1); - edgeSelectSpinner2 = rootView.findViewById(R.id.edge_select_spinner_2); - edgeSelectSpinner3 = rootView.findViewById(R.id.edge_select_spinner_3); - edgeSelectSpinner4 = rootView.findViewById(R.id.edge_select_spinner_4); - analyze_button = rootView.findViewById(R.id.analyze_button); - channelMode = 1; - channelSelectSpinners.add(channelSelectSpinner1); - channelSelectSpinners.add(channelSelectSpinner2); - channelSelectSpinners.add(channelSelectSpinner3); - channelSelectSpinners.add(channelSelectSpinner4); - - edgeSelectSpinners.add(edgeSelectSpinner1); - edgeSelectSpinners.add(edgeSelectSpinner2); - edgeSelectSpinners.add(edgeSelectSpinner3); - edgeSelectSpinners.add(edgeSelectSpinner4); - channelMap = new HashMap<>(); - channelMap.put(channels[0], 0); - channelMap.put(channels[1], 1); - channelMap.put(channels[2], 2); - channelMap.put(channels[3], 3); - // Axis Indicator - xCoordinateText = rootView.findViewById(R.id.x_coordinate_text); - xCoordinateText.setText("Time: 0.0 mS"); - progressBar = rootView.findViewById(R.id.la_progressBar); - progressBar.setVisibility(View.GONE); - ((LogicalAnalyzerActivity) getActivity()).setStatus(false); - - // Declaring digital data set - digitalChannelArray = new ArrayList<>(); - dataSets = new ArrayList<>(); - - // Creating base layout for chart - logicLinesChart = rootView.findViewById(R.id.chart_la); - logicLinesChart.setBorderWidth(2); - Legend legend = logicLinesChart.getLegend(); - legend.setTextColor(Color.WHITE); - XAxis xAxis = logicLinesChart.getXAxis(); - xAxis.setPosition(XAxis.XAxisPosition.TOP); - xAxis.setTextColor(Color.WHITE); - - setCarouselPicker(); - setAdapters(); - LogicalAnalyzerActivity laActivity = (LogicalAnalyzerActivity) getActivity(); - if (laActivity.isPlayback) { - if (laActivity.recordedLAData.isEmpty()) { - CustomSnackBar.showSnackBar(container, getString(R.string.no_playback_data), - null, null, Snackbar.LENGTH_SHORT); - } else { - setPlayBackData(laActivity.recordedLAData); - } - } - return rootView; - } - - public void logData() { - long block = System.currentTimeMillis(); - double lat; - double lon; - if (gpsLogger.isGPSEnabled()) { - Location location = gpsLogger.getDeviceLocation(); - if (location != null) { - lat = location.getLatitude(); - lon = location.getLongitude(); - } else { - lat = 0.0; - lon = 0.0; - } - } else { - lat = 0.0; - lon = 0.0; - } - csvLogger.prepareLogFile(); - csvLogger.writeMetaData(getContext().getResources().getString(R.string.logical_analyzer)); - csvLogger.writeCSVFile(CSV_HEADER); - recordSensorDataBlockID(new SensorDataBlock(block, getResources().getString(R.string.logical_analyzer))); - long timestamp = System.currentTimeMillis(); - String timeData = timestamp + "," + CSVLogger.FILE_NAME_FORMAT.format(new Date(timestamp)); - for (int i = 0; i < recordXAxis.size(); i++) { - recordSensorData(new LogicAnalyzerData(timestamp + i, block, channels[i], recordChannelMode.get(i), recordXAxis.get(i), recordYAxis.get(i), lat, lon)); - - CSVDataLine data = new CSVDataLine() - .add(timeData) - .add(channels[i]) - .add(recordChannelMode.get(i)) - .add(recordXAxis.get(i)) - .add(recordYAxis.get(i)) - .add(lat) - .add(lon); - csvLogger.writeCSVFile(data); - } - CustomSnackBar.showSnackBar(rootView, - getString(R.string.csv_store_text) + " " + csvLogger.getCurrentFilePath() - , getString(R.string.open), new View.OnClickListener() { - @Override - public void onClick(View view) { - Intent intent = new Intent(getContext(), DataLoggerActivity.class); - intent.putExtra(DataLoggerActivity.CALLER_ACTIVITY, getResources().getString(R.string.logical_analyzer)); - startActivity(intent); - } - }, Snackbar.LENGTH_SHORT); - } - - private void setPlayBackData(RealmResults data) { - analyze_button.setVisibility(View.GONE); - currentChannel = 0; - setViewVisibility(data.size() - 1); - channelNames.clear(); - disableSpinners(); - carouselPicker.setCurrentItem(data.size() - 1); - for (int i = 0; i < data.size(); i++) { - LogicAnalyzerData laData = data.get(i); - channelNames.add(laData.getChannel()); - edgeSelectSpinners.get(i).setSelection(laData.getChannelMode() - 1); - channelSelectSpinners.get(i).setSelection(channelMap.get(laData.getChannel())); - String[] xPoints = laData.getDataX().split(" "); - String[] yPoints = laData.getDataY().split(" "); - int n = Math.min(xPoints.length, yPoints.length); - double[] xaxis = new double[n]; - double[] yaxis = new double[n]; - for (int j = 0; j < n; j++) { - xaxis[j] = Double.valueOf(xPoints[j]); - yaxis[j] = Double.valueOf(yPoints[j]); - } - switch (laData.getChannelMode()) { - case 1: - singleChannelEveryEdge(xaxis, yaxis); - break; - case 4: - singleChannelFourthRisingEdge(xaxis); - break; - case 3: - singleChannelRisingEdges(xaxis, yaxis); - break; - case 2: - singleChannelFallingEdges(xaxis, yaxis); - break; - default: - singleChannelOtherEdges(xaxis, yaxis); - break; - } - currentChannel++; - } - logicLinesChart.setData(new LineData(dataSets)); - logicLinesChart.invalidate(); - - YAxis left = logicLinesChart.getAxisLeft(); - left.setValueFormatter(new LogicAnalyzerAxisFormatter(channelNames)); - left.setTextColor(Color.WHITE); - left.setGranularity(1f); - left.setTextSize(12f); - logicLinesChart.getAxisRight().setDrawLabels(false); - logicLinesChart.getDescription().setEnabled(false); - logicLinesChart.setScaleYEnabled(false); - } - - @Override - public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { - super.onViewCreated(view, savedInstanceState); - - carouselPicker.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { - @Override - public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { - } - - @Override - public void onPageSelected(int position) { - } - - @Override - public void onPageScrollStateChanged(int state) { - if (state == 0) { - setViewVisibility(carouselPicker.getCurrentItem()); - } - } - }); - - analyze_button.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (channelMode > 0) { - if (scienceLab != null && scienceLab.isConnected()) { - analyze_button.setClickable(false); - - // Change all variables to default value - currentChannel = 0; - dataSets.clear(); - digitalChannelArray.clear(); - channelNames.clear(); - edgesNames.clear(); - logicLinesChart.clear(); - logicLinesChart.invalidate(); - - switch (channelMode) { - case 1: - channelNames.add(channelSelectSpinner1.getSelectedItem().toString()); - edgesNames.add(edgeSelectSpinner1.getSelectedItem().toString()); - break; - case 2: - channelNames.add(channelSelectSpinner1.getSelectedItem().toString()); - channelNames.add(channelSelectSpinner2.getSelectedItem().toString()); - edgesNames.add(edgeSelectSpinner1.getSelectedItem().toString()); - edgesNames.add(edgeSelectSpinner2.getSelectedItem().toString()); - break; - case 3: - channelNames.add(channelSelectSpinner1.getSelectedItem().toString()); - channelNames.add(channelSelectSpinner2.getSelectedItem().toString()); - channelNames.add(channelSelectSpinner3.getSelectedItem().toString()); - edgesNames.add(edgeSelectSpinner1.getSelectedItem().toString()); - edgesNames.add(edgeSelectSpinner2.getSelectedItem().toString()); - edgesNames.add(edgeSelectSpinner3.getSelectedItem().toString()); - break; - case 4: - channelNames.add(channelSelectSpinner1.getSelectedItem().toString()); - channelNames.add(channelSelectSpinner2.getSelectedItem().toString()); - channelNames.add(channelSelectSpinner3.getSelectedItem().toString()); - channelNames.add(channelSelectSpinner4.getSelectedItem().toString()); - edgesNames.add(edgeSelectSpinner1.getSelectedItem().toString()); - edgesNames.add(edgeSelectSpinner2.getSelectedItem().toString()); - edgesNames.add(edgeSelectSpinner3.getSelectedItem().toString()); - edgesNames.add(edgeSelectSpinner4.getSelectedItem().toString()); - break; - default: - channelNames.add(channelSelectSpinner1.getSelectedItem().toString()); - edgesNames.add(edgeSelectSpinner1.getSelectedItem().toString()); - break; - } - Thread monitor; - switch (channelMode) { - case 1: - progressBar.setVisibility(View.VISIBLE); - ((LogicalAnalyzerActivity) getActivity()).setStatus(true); - monitor = new Thread(new Runnable() { - @Override - public void run() { - captureOne = new CaptureOne(); - captureOne.execute(channelNames.get(0), edgesNames.get(0)); - synchronized (lock) { - try { - lock.wait(); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - } - }); - monitor.start(); - break; - case 2: - progressBar.setVisibility(View.VISIBLE); - ((LogicalAnalyzerActivity) getActivity()).setStatus(true); - monitor = new Thread(new Runnable() { - @Override - public void run() { - captureTwo = new CaptureTwo(); - ArrayList channels = new ArrayList<>(); - channels.add(channelNames.get(0)); - channels.add(channelNames.get(1)); - ArrayList edges = new ArrayList<>(); - edges.add(edgesNames.get(0)); - edges.add(edgesNames.get(1)); - captureTwo.execute(channels, edges); - synchronized (lock) { - try { - lock.wait(); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - } - }); - monitor.start(); - break; - case 3: - progressBar.setVisibility(View.VISIBLE); - ((LogicalAnalyzerActivity) getActivity()).setStatus(true); - monitor = new Thread(new Runnable() { - @Override - public void run() { - captureThree = new CaptureThree(); - ArrayList channels = new ArrayList<>(); - channels.add(channelNames.get(0)); - channels.add(channelNames.get(1)); - channels.add(channelNames.get(2)); - ArrayList edges = new ArrayList<>(); - edges.add(edgesNames.get(0)); - edges.add(edgesNames.get(1)); - edges.add(edgesNames.get(2)); - captureThree.execute(channels, edges); - synchronized (lock) { - try { - lock.wait(); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - } - }); - monitor.start(); - break; - case 4: - progressBar.setVisibility(View.VISIBLE); - ((LogicalAnalyzerActivity) getActivity()).setStatus(true); - monitor = new Thread(new Runnable() { - @Override - public void run() { - captureFour = new CaptureFour(); - ArrayList channels = new ArrayList<>(); - channels.add(channelNames.get(0)); - channels.add(channelNames.get(1)); - channels.add(channelNames.get(2)); - channels.add(channelNames.get(3)); - ArrayList edges = new ArrayList<>(); - edges.add(edgesNames.get(0)); - edges.add(edgesNames.get(1)); - edges.add(edgesNames.get(2)); - edges.add(edgesNames.get(3)); - captureFour.execute(channels, edges); - synchronized (lock) { - try { - lock.wait(); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - } - }); - monitor.start(); - break; - default: - CustomSnackBar.showSnackBar(getActivity().findViewById(android.R.id.content), - getString(R.string.needs_implementation), null, null, Snackbar.LENGTH_SHORT); - break; - } - - // Setting cursor to display time at highlighted points - listener = new OnChartValueSelectedListener() { - @Override - public void onValueSelected(Entry e, Highlight h) { - double result = Math.round(e.getX() * 100.0) / 100.0; - xCoordinateText.setText("Time: " + DataFormatter.formatDouble(result, DataFormatter.LOW_PRECISION_FORMAT) + " mS"); - } - - @Override - public void onNothingSelected() { - - } - }; - logicLinesChart.setOnChartValueSelectedListener(listener); - } else - CustomSnackBar.showSnackBar(getActivity().findViewById(android.R.id.content), - getString(R.string.device_not_found), null, null, Snackbar.LENGTH_SHORT); - } - } - }); - } - - private void disableSpinners() { - channelSelectSpinner1.setEnabled(false); - channelSelectSpinner2.setEnabled(false); - channelSelectSpinner3.setEnabled(false); - channelSelectSpinner4.setEnabled(false); - edgeSelectSpinner1.setEnabled(false); - edgeSelectSpinner2.setEnabled(false); - edgeSelectSpinner3.setEnabled(false); - edgeSelectSpinner4.setEnabled(false); - carouselPicker.setEnabled(false); - } - - private void setViewVisibility(int mode) { - switch (mode) { - case 0: - channelMode = 1; - setAdapters(); - llChannel1.setVisibility(View.VISIBLE); - llChannel2.setVisibility(View.GONE); - llChannel3.setVisibility(View.GONE); - llChannel4.setVisibility(View.GONE); - channelSelectSpinner1.setEnabled(true); - break; - case 1: - channelMode = 2; - setAdapterForTwoChannelMode(); - llChannel1.setVisibility(View.VISIBLE); - llChannel2.setVisibility(View.VISIBLE); - llChannel3.setVisibility(View.GONE); - llChannel4.setVisibility(View.GONE); - channelSelectSpinner1.setEnabled(true); - channelSelectSpinner2.setEnabled(true); - break; - case 2: - channelMode = 3; - setAdapters(); - llChannel1.setVisibility(View.VISIBLE); - llChannel2.setVisibility(View.VISIBLE); - llChannel3.setVisibility(View.VISIBLE); - llChannel4.setVisibility(View.GONE); - channelSelectSpinner1.setSelection(0); - channelSelectSpinner2.setSelection(1); - channelSelectSpinner3.setSelection(2); - channelSelectSpinner1.setEnabled(true); - channelSelectSpinner2.setEnabled(true); - channelSelectSpinner3.setEnabled(true); - break; - case 3: - channelMode = 4; - setAdapters(); - llChannel1.setVisibility(View.VISIBLE); - llChannel2.setVisibility(View.VISIBLE); - llChannel3.setVisibility(View.VISIBLE); - llChannel4.setVisibility(View.VISIBLE); - channelSelectSpinner1.setSelection(0); - channelSelectSpinner2.setSelection(1); - channelSelectSpinner3.setSelection(2); - channelSelectSpinner4.setSelection(3); - channelSelectSpinner1.setEnabled(true); - channelSelectSpinner2.setEnabled(true); - channelSelectSpinner3.setEnabled(true); - channelSelectSpinner4.setEnabled(true); - break; - default: - channelMode = 1; - setAdapters(); - llChannel1.setVisibility(View.VISIBLE); - llChannel2.setVisibility(View.GONE); - llChannel3.setVisibility(View.GONE); - llChannel4.setVisibility(View.GONE); - channelSelectSpinner1.setEnabled(true); - break; - } - } - - /** - * Plots every edge of a digital pulse for one channel at a time - * - * @param xData Data points fetched for X-axis - * @param yData Data points fetched for Y-axis - */ - - private void singleChannelEveryEdge(double[] xData, double[] yData) { - tempInput = new ArrayList<>(); - int[] temp = new int[xData.length]; - int[] yAxis = new int[yData.length]; - - for (int i = 0; i < xData.length; i++) { - temp[i] = (int) xData[i]; - yAxis[i] = (int) yData[i]; - } - - ArrayList xaxis = new ArrayList<>(); - ArrayList yaxis = new ArrayList<>(); - xaxis.add(temp[0]); - yaxis.add(yAxis[0]); - - for (int i = 1; i < xData.length; i++) { - if (temp[i] != temp[i - 1]) { - xaxis.add(temp[i]); - yaxis.add(yAxis[i]); - } - } - - // Add data to axis in actual graph - if (yaxis.size() > 1) { - if (yaxis.get(1).equals(yaxis.get(0))) - tempInput.add(new Entry(xaxis.get(0), yaxis.get(0) + 2 * currentChannel)); - else { - tempInput.add(new Entry(xaxis.get(0), yaxis.get(0) + 2 * currentChannel)); - tempInput.add(new Entry(xaxis.get(0), yaxis.get(1) + 2 * currentChannel)); - } - for (int i = 1; i < xaxis.size() - 1; i++) { - if (yaxis.get(i).equals(yaxis.get(i + 1))) - tempInput.add(new Entry(xaxis.get(i), yaxis.get(i) + 2 * currentChannel)); - else { - tempInput.add(new Entry(xaxis.get(i), yaxis.get(i) + 2 * currentChannel)); - tempInput.add(new Entry(xaxis.get(i), yaxis.get(i + 1) + 2 * currentChannel)); - } - } - tempInput.add(new Entry(xaxis.get(xaxis.size() - 1), yaxis.get(xaxis.size() - 1) + 2 * currentChannel)); - } else { - tempInput.add(new Entry(xaxis.get(0), yaxis.get(0) + 2 * currentChannel)); - } - - setLineDataSet(); - } - - /** - * Plots every fourth rising edge of a digital pulse for one channel at a time - * - * @param xData Data points fetched for X-axis - */ - - private void singleChannelFourthRisingEdge(double[] xData) { - tempInput = new ArrayList<>(); - int xaxis = (int) xData[0]; - tempInput.add(new Entry(xaxis, 0 + 2 * currentChannel)); - tempInput.add(new Entry(xaxis, 1 + 2 * currentChannel)); - tempInput.add(new Entry(xaxis, 0 + 2 * currentChannel)); - int check = xaxis; - int count = 0; - - if (xData.length > 1) { - for (int i = 1; i < xData.length; i++) { - xaxis = (int) xData[i]; - if (xaxis != check) { - if (count == 3) { - tempInput.add(new Entry(xaxis, 0 + 2 * currentChannel)); - tempInput.add(new Entry(xaxis, 1 + 2 * currentChannel)); - tempInput.add(new Entry(xaxis, 0 + 2 * currentChannel)); - count = 0; - } else - count++; - check = xaxis; - } - } - } - - setLineDataSet(); - } - - /** - * Plots every rising edges of a digital pulse for one channel at a time - * - * @param xData Data points fetched for X-axis - * @param yData Data points fetched for Y-axis - */ - - private void singleChannelRisingEdges(double[] xData, double[] yData) { - tempInput = new ArrayList<>(); - - for (int i = 1; i < xData.length; i += 6) { - tempInput.add(new Entry((int) xData[i], (int) yData[i] + 2 * currentChannel)); - tempInput.add(new Entry((int) xData[i + 1], (int) yData[i + 1] + 2 * currentChannel)); - tempInput.add(new Entry((int) xData[i + 2], (int) yData[i + 2] + 2 * currentChannel)); - } - - setLineDataSet(); - } - - /** - * Plots every falling edges of a digital pulse for one channel at a time - * - * @param xData Data points fetched for X-axis - * @param yData Data points fetched for Y-axis - */ - - private void singleChannelFallingEdges(double[] xData, double[] yData) { - tempInput = new ArrayList<>(); - - for (int i = 4; i < xData.length; i += 6) { - tempInput.add(new Entry((int) xData[i], (int) yData[i] + 2 * currentChannel)); - tempInput.add(new Entry((int) xData[i + 1], (int) yData[i + 1] + 2 * currentChannel)); - tempInput.add(new Entry((int) xData[i + 2], (int) yData[i + 2] + 2 * currentChannel)); - } - - setLineDataSet(); - } - - /** - * Plots every data point fetched for a digital pulse (default case) - * - * @param xData Data points fetched for X-axis - * @param yData Data points fetched for Y-axis - */ - - private void singleChannelOtherEdges(double[] xData, double[] yData) { - tempInput = new ArrayList<>(); - - for (int i = 0; i < xData.length; i++) { - int xaxis = (int) xData[i]; - int yaxis = (int) yData[i]; - tempInput.add(new Entry(xaxis, yaxis + 2 * currentChannel)); - } - - setLineDataSet(); - } - - /** - * Plot the entries available in tuple (X-axis, Y-axis) on the graph - */ - - private void setLineDataSet() { - LineDataSet lineDataSet = new LineDataSet(tempInput, channelNames.get(currentChannel)); - lineDataSet.setColor(colors[currentChannel]); - lineDataSet.setCircleRadius(1); - lineDataSet.setLineWidth(2); - lineDataSet.setCircleColor(Color.GREEN); - lineDataSet.setDrawValues(false); - lineDataSet.setDrawCircles(false); - lineDataSet.setHighLightColor(getResources().getColor(R.color.golden)); - dataSets.add(lineDataSet); - } - - /** - * Sets adapters to spinners for all modes except for TwoChannel Mode - */ - - private void setAdapters() { - String[] channels = getResources().getStringArray(R.array.channel_choices); - String[] edges = getResources().getStringArray(R.array.edge_choices); - - ArrayAdapter channel_adapter = new ArrayAdapter<>(getContext(), R.layout.modified_spinner_dropdown_list, channels); - ArrayAdapter edges_adapter = new ArrayAdapter<>(getContext(), R.layout.modified_spinner_dropdown_list, edges); - - channelSelectSpinner1.setAdapter(channel_adapter); - channelSelectSpinner2.setAdapter(channel_adapter); - channelSelectSpinner3.setAdapter(channel_adapter); - channelSelectSpinner4.setAdapter(channel_adapter); - - edgeSelectSpinner1.setAdapter(edges_adapter); - edgeSelectSpinner2.setAdapter(edges_adapter); - edgeSelectSpinner3.setAdapter(edges_adapter); - edgeSelectSpinner4.setAdapter(edges_adapter); - - } - - /** - * Sets adapters to spinners for TwoChannel Mode - */ - - private void setAdapterForTwoChannelMode() { - final String[] channels = getResources().getStringArray(R.array.channel_choices); - final String[] edges = getResources().getStringArray(R.array.edge_choices); - - final List channel_one_list = new ArrayList<>(Arrays.asList(channels)); - final List channel_two_list = new ArrayList<>(Arrays.asList(channels)); - - final ArrayAdapter channel_one_adapter = new ArrayAdapter<>(getContext(), R.layout.modified_spinner_dropdown_list, channel_one_list); - final ArrayAdapter channel_two_adapter = new ArrayAdapter<>(getContext(), R.layout.modified_spinner_dropdown_list, channel_two_list); - ArrayAdapter edges_adapter = new ArrayAdapter<>(getContext(), R.layout.modified_spinner_dropdown_list, edges); - - channelSelectSpinner1.setAdapter(channel_one_adapter); - channelSelectSpinner2.setAdapter(channel_two_adapter); - - edgeSelectSpinner1.setAdapter(edges_adapter); - edgeSelectSpinner2.setAdapter(edges_adapter); - - channelSelectSpinner1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { - @Override - public void onItemSelected(AdapterView parent, View view, int position, long id) { - String selection = channelSelectSpinner1.getItemAtPosition(position).toString(); - channel_two_list.clear(); - for (int i = 0; i < channels.length; i++) { - if (!channels[i].equals(selection)) { - channel_two_list.add(channels[i]); - } - } - channel_two_adapter.notifyDataSetChanged(); - } - - @Override - public void onNothingSelected(AdapterView parent) { - // No use - } - }); - - channelSelectSpinner2.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { - @Override - public void onItemSelected(AdapterView parent, View view, int position, long id) { - String selection = channelSelectSpinner2.getItemAtPosition(position).toString(); - channel_one_list.clear(); - for (int i = 0; i < channels.length; i++) { - if (!channels[i].equals(selection)) { - channel_one_list.add(channels[i]); - } - } - channel_one_adapter.notifyDataSetChanged(); - } - - @Override - public void onNothingSelected(AdapterView parent) { - // No use - } - }); - } - - /** - * Sets the text in Carousel Picker - */ - - private void setCarouselPicker() { - // Calculation made for setting the text size in Carousel Picker for different screens - DisplayMetrics dm = new DisplayMetrics(); - getActivity().getWindowManager().getDefaultDisplay().getMetrics(dm); - int width = dm.widthPixels; - int height = dm.heightPixels; - double wi = (double) width / (double) dm.xdpi; - double hi = (double) height / (double) dm.ydpi; - double x = Math.pow(wi, 2); - double y = Math.pow(hi, 2); - double screenInches = Math.sqrt(x + y) + 0.01; - int textsize; - if (screenInches < 5) - textsize = 11; - else - textsize = 9; - - // Items for Carousel Picker - List channelModes = new ArrayList<>(); - channelModes.add(new CarouselPicker.TextItem("1", textsize)); - channelModes.add(new CarouselPicker.TextItem("2", textsize)); - channelModes.add(new CarouselPicker.TextItem("3", textsize)); - channelModes.add(new CarouselPicker.TextItem("4", textsize)); - - CarouselPicker.CarouselViewAdapter channelAdapter = new CarouselPicker.CarouselViewAdapter(getContext(), channelModes, 0); - carouselPicker.setAdapter(channelAdapter); - carouselPicker.setCurrentItem(0); - } - - @Override - public void onResume() { - super.onResume(); - } - - @Override - public void onStop() { - final ActionBar actionBar = ((AppCompatActivity) getActivity()).getSupportActionBar(); - if (actionBar != null) { - actionBar.show(); - } - super.onStop(); - } - - /** - * Used to delay a thread by some given time in milliseconds - * - * @param delay Time to delay in milliseconds - */ - - public void delayThread(long delay) { - try { - Thread.sleep(delay); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - - private void storeAxisValues(double[] xaxis, double[] yaxis, int mode) { - StringBuilder stringBuilder1 = new StringBuilder(); - StringBuilder stringBuilder2 = new StringBuilder(); - for (int i = 0; i < xaxis.length; i++) { - stringBuilder1.append(DataFormatter.formatDouble(xaxis[i], DataFormatter.LOW_PRECISION_FORMAT)); - stringBuilder2.append(DataFormatter.formatDouble(yaxis[i], DataFormatter.LOW_PRECISION_FORMAT)); - stringBuilder1.append(" "); - stringBuilder2.append(" "); - } - recordXAxis.add(stringBuilder1.toString()); - recordYAxis.add(stringBuilder2.toString()); - recordChannelMode.add(mode); - } - - public void recordSensorDataBlockID(SensorDataBlock block) { - realm.beginTransaction(); - realm.copyToRealm(block); - realm.commitTransaction(); - } - - public void recordSensorData(RealmObject sensorData) { - realm.beginTransaction(); - realm.copyToRealm((LogicAnalyzerData) sensorData); - realm.commitTransaction(); - } - - private class CaptureOne extends AsyncTask { - private String edgeOption = ""; - private boolean holder; - - @Override - protected Void doInBackground(String... params) { - try { - channels[0] = params[0]; - - int channelNumber = scienceLab.calculateDigitalChannel(params[0]); - digitalChannel = scienceLab.getDigitalChannel(channelNumber); - edgeOption = params[1]; - - switch (edgeOption) { - case "EVERY EDGE": - digitalChannel.mode = EVERY_EDGE; - break; - case "EVERY FALLING EDGE": - digitalChannel.mode = EVERY_FALLING_EDGE; - break; - case "EVERY RISING EDGE": - digitalChannel.mode = EVERY_RISING_EDGE; - break; - case "EVERY FOURTH RISING EDGE": - digitalChannel.mode = EVERY_FOURTH_RISING_EDGE; - break; - case "DISABLED": - digitalChannel.mode = DISABLED; - break; - default: - digitalChannel.mode = EVERY_EDGE; - } - - scienceLab.startOneChannelLA(params[0], digitalChannel.mode, params[0], 3); - delayThread(1000); - LinkedHashMap data = scienceLab.getLAInitialStates(); - delayThread(1000); - holder = scienceLab.fetchLAChannel(channelNumber, data); - - } catch (NullPointerException e) { - cancel(true); - } - return null; - } - - @Override - protected void onPostExecute(Void aVoid) { - super.onPostExecute(aVoid); - - if (holder) { - - double[] xaxis = digitalChannel.getXAxis(); - double[] yaxis = digitalChannel.getYAxis(); - - StringBuilder stringBuilder1 = new StringBuilder(); - StringBuilder stringBuilder2 = new StringBuilder(); - for (int i = 0; i < xaxis.length; i++) { - stringBuilder1.append(DataFormatter.formatDouble(xaxis[i], DataFormatter.LOW_PRECISION_FORMAT)); - stringBuilder2.append(DataFormatter.formatDouble(yaxis[i], DataFormatter.LOW_PRECISION_FORMAT)); - stringBuilder1.append(" "); - stringBuilder2.append(" "); - } - Log.v("x Axis", stringBuilder1.toString()); - Log.v("y Axis", stringBuilder2.toString()); - - recordXAxis.clear(); - recordXAxis.add(stringBuilder1.toString()); - recordYAxis.add(stringBuilder2.toString()); - recordChannelMode.add(digitalChannel.mode); - // Plot the fetched data - switch (edgeOption) { - case "EVERY EDGE": - singleChannelEveryEdge(xaxis, yaxis); - break; - case "EVERY FOURTH RISING EDGE": - singleChannelFourthRisingEdge(xaxis); - break; - case "EVERY RISING EDGE": - singleChannelRisingEdges(xaxis, yaxis); - break; - case "EVERY FALLING EDGE": - singleChannelFallingEdges(xaxis, yaxis); - break; - default: - singleChannelOtherEdges(xaxis, yaxis); - break; - } - progressBar.setVisibility(View.GONE); - ((LogicalAnalyzerActivity) getActivity()).setStatus(false); - - logicLinesChart.setData(new LineData(dataSets)); - logicLinesChart.notifyDataSetChanged(); - logicLinesChart.invalidate(); - - YAxis left = logicLinesChart.getAxisLeft(); - left.setValueFormatter(new LogicAnalyzerAxisFormatter(channelNames)); - left.setTextColor(Color.WHITE); - left.setGranularity(1f); - left.setTextSize(12f); - logicLinesChart.getAxisRight().setDrawLabels(false); - logicLinesChart.getDescription().setEnabled(false); - logicLinesChart.setScaleYEnabled(false); - - synchronized (lock) { - lock.notify(); - } - } else { - progressBar.setVisibility(View.GONE); - ((LogicalAnalyzerActivity) getActivity()).setStatus(false); - CustomSnackBar.showSnackBar(getActivity().findViewById(android.R.id.content), - getString(R.string.no_data_generated), null, null, Snackbar.LENGTH_SHORT); - analyze_button.setClickable(true); - } - - analyze_button.setClickable(true); - } - } - - private class CaptureTwo extends AsyncTask, ArrayList, Void> { - private String[] edgeOption = new String[channelMode]; - private boolean holder1, holder2; - - @SafeVarargs - @Override - protected final Void doInBackground(ArrayList... arrayLists) { - try { - channels[0] = arrayLists[0].get(0); - channels[1] = arrayLists[0].get(1); - - int channelNumber1 = scienceLab.calculateDigitalChannel(arrayLists[0].get(0)); - int channelNumber2 = scienceLab.calculateDigitalChannel(arrayLists[0].get(1)); - - digitalChannelArray.add(scienceLab.getDigitalChannel(channelNumber1)); - digitalChannelArray.add(scienceLab.getDigitalChannel(channelNumber2)); - edgeOption[0] = arrayLists[1].get(0); - edgeOption[1] = arrayLists[1].get(1); - - ArrayList modes = new ArrayList<>(); - for (int i = 0; i < channelMode; i++) { - switch (edgeOption[i]) { - case "EVERY EDGE": - digitalChannelArray.get(i).mode = EVERY_EDGE; - modes.add(EVERY_EDGE); - break; - case "EVERY FALLING EDGE": - digitalChannelArray.get(i).mode = EVERY_FALLING_EDGE; - modes.add(EVERY_FALLING_EDGE); - break; - case "EVERY RISING EDGE": - digitalChannelArray.get(i).mode = EVERY_RISING_EDGE; - modes.add(EVERY_RISING_EDGE); - break; - case "EVERY FOURTH RISING EDGE": - digitalChannelArray.get(i).mode = EVERY_FOURTH_RISING_EDGE; - modes.add(EVERY_FOURTH_RISING_EDGE); - break; - case "DISABLED": - digitalChannelArray.get(i).mode = DISABLED; - modes.add(DISABLED); - break; - default: - digitalChannelArray.get(i).mode = EVERY_EDGE; - modes.add(EVERY_EDGE); - } - } - - scienceLab.startTwoChannelLA(arrayLists[0], modes, 67, null, null, null); - delayThread(1000); - LinkedHashMap data = scienceLab.getLAInitialStates(); - delayThread(1000); - holder1 = scienceLab.fetchLAChannel(channelNumber1, data); - delayThread(1000); - holder2 = scienceLab.fetchLAChannel(channelNumber2, data); - - } catch (NullPointerException e) { - cancel(true); - } - return null; - } - - @Override - protected void onPostExecute(Void aVoid) { - super.onPostExecute(aVoid); - - if (holder1 && holder2) { - - ArrayList xaxis = new ArrayList<>(); - xaxis.add(digitalChannelArray.get(0).getXAxis()); - xaxis.add(digitalChannelArray.get(1).getXAxis()); - - ArrayList yaxis = new ArrayList<>(); - yaxis.add(digitalChannelArray.get(0).getYAxis()); - yaxis.add(digitalChannelArray.get(1).getYAxis()); - - recordXAxis.clear(); - recordYAxis.clear(); - recordChannelMode.clear(); - // Plot the fetched data - for (int i = 0; i < channelMode; i++) { - storeAxisValues(xaxis.get(i), yaxis.get(i), digitalChannelArray.get(i).mode); - switch (edgeOption[i]) { - case "EVERY EDGE": - singleChannelEveryEdge(xaxis.get(i), yaxis.get(i)); - break; - case "EVERY FOURTH RISING EDGE": - singleChannelFourthRisingEdge(xaxis.get(i)); - break; - case "EVERY RISING EDGE": - singleChannelRisingEdges(xaxis.get(i), yaxis.get(i)); - break; - case "EVERY FALLING EDGE": - singleChannelFallingEdges(xaxis.get(i), yaxis.get(i)); - break; - default: - singleChannelOtherEdges(xaxis.get(i), yaxis.get(i)); - break; - } - currentChannel++; - } - - progressBar.setVisibility(View.GONE); - ((LogicalAnalyzerActivity) getActivity()).setStatus(false); - - logicLinesChart.setData(new LineData(dataSets)); - logicLinesChart.invalidate(); - - YAxis left = logicLinesChart.getAxisLeft(); - left.setValueFormatter(new LogicAnalyzerAxisFormatter(channelNames)); - left.setTextColor(Color.WHITE); - left.setGranularity(1f); - left.setTextSize(12f); - logicLinesChart.getAxisRight().setDrawLabels(false); - logicLinesChart.getDescription().setEnabled(false); - logicLinesChart.setScaleYEnabled(false); - - synchronized (lock) { - lock.notify(); - } - } else { - progressBar.setVisibility(View.GONE); - ((LogicalAnalyzerActivity) getActivity()).setStatus(false); - CustomSnackBar.showSnackBar(getActivity().findViewById(android.R.id.content), - getString(R.string.no_data_generated), null, null, Snackbar.LENGTH_SHORT); - } - - analyze_button.setClickable(true); - } - } - - private class CaptureThree extends AsyncTask, ArrayList, Void> { - private String[] edgeOption = new String[channelMode]; - private boolean holder1, holder2, holder3; - - @SafeVarargs - @Override - protected final Void doInBackground(ArrayList... arrayLists) { - try { - channels[0] = arrayLists[0].get(0); - channels[1] = arrayLists[0].get(1); - channels[2] = arrayLists[0].get(2); - - int channelNumber1 = scienceLab.calculateDigitalChannel(arrayLists[0].get(0)); - int channelNumber2 = scienceLab.calculateDigitalChannel(arrayLists[0].get(1)); - int channelNumber3 = scienceLab.calculateDigitalChannel(arrayLists[0].get(2)); - - digitalChannelArray.add(scienceLab.getDigitalChannel(channelNumber1)); - digitalChannelArray.add(scienceLab.getDigitalChannel(channelNumber2)); - digitalChannelArray.add(scienceLab.getDigitalChannel(channelNumber3)); - edgeOption[0] = arrayLists[1].get(0); - edgeOption[1] = arrayLists[1].get(1); - edgeOption[2] = arrayLists[1].get(2); - - ArrayList modes = new ArrayList<>(); - for (int i = 0; i < channelMode; i++) { - switch (edgeOption[i]) { - case "EVERY EDGE": - digitalChannelArray.get(i).mode = EVERY_EDGE; - modes.add(EVERY_EDGE); - break; - case "EVERY FALLING EDGE": - digitalChannelArray.get(i).mode = EVERY_FALLING_EDGE; - modes.add(EVERY_FALLING_EDGE); - break; - case "EVERY RISING EDGE": - digitalChannelArray.get(i).mode = EVERY_RISING_EDGE; - modes.add(EVERY_RISING_EDGE); - break; - case "EVERY FOURTH RISING EDGE": - digitalChannelArray.get(i).mode = EVERY_FOURTH_RISING_EDGE; - modes.add(EVERY_FOURTH_RISING_EDGE); - break; - case "DISABLED": - digitalChannelArray.get(i).mode = DISABLED; - modes.add(DISABLED); - break; - default: - digitalChannelArray.get(i).mode = EVERY_EDGE; - modes.add(EVERY_EDGE); - } - } - - scienceLab.startThreeChannelLA(modes, null, null); - delayThread(1000); - LinkedHashMap data = scienceLab.getLAInitialStates(); - delayThread(1000); - holder1 = scienceLab.fetchLAChannel(channelNumber1, data); - delayThread(1000); - holder2 = scienceLab.fetchLAChannel(channelNumber2, data); - delayThread(1000); - holder3 = scienceLab.fetchLAChannel(channelNumber3, data); - - } catch (NullPointerException e) { - cancel(true); - } - return null; - } - - @Override - protected void onPostExecute(Void aVoid) { - super.onPostExecute(aVoid); - - if (holder1 && holder2 && holder3) { - - ArrayList xaxis = new ArrayList<>(); - xaxis.add(digitalChannelArray.get(0).getXAxis()); - xaxis.add(digitalChannelArray.get(1).getXAxis()); - xaxis.add(digitalChannelArray.get(2).getXAxis()); - - ArrayList yaxis = new ArrayList<>(); - yaxis.add(digitalChannelArray.get(0).getYAxis()); - yaxis.add(digitalChannelArray.get(1).getYAxis()); - yaxis.add(digitalChannelArray.get(2).getYAxis()); - - recordXAxis.clear(); - recordYAxis.clear(); - recordChannelMode.clear(); - // Plot the fetched data - for (int i = 0; i < channelMode; i++) { - storeAxisValues(xaxis.get(i), yaxis.get(i), digitalChannelArray.get(i).mode); - switch (edgeOption[i]) { - case "EVERY EDGE": - singleChannelEveryEdge(xaxis.get(i), yaxis.get(i)); - break; - case "EVERY FOURTH RISING EDGE": - singleChannelFourthRisingEdge(xaxis.get(i)); - break; - case "EVERY RISING EDGE": - singleChannelRisingEdges(xaxis.get(i), yaxis.get(i)); - break; - case "EVERY FALLING EDGE": - singleChannelFallingEdges(xaxis.get(i), yaxis.get(i)); - break; - default: - singleChannelOtherEdges(xaxis.get(i), yaxis.get(i)); - break; - } - currentChannel++; - } - - progressBar.setVisibility(View.GONE); - ((LogicalAnalyzerActivity) getActivity()).setStatus(false); - - logicLinesChart.setData(new LineData(dataSets)); - logicLinesChart.invalidate(); - - YAxis left = logicLinesChart.getAxisLeft(); - left.setValueFormatter(new LogicAnalyzerAxisFormatter(channelNames)); - left.setTextColor(Color.WHITE); - left.setGranularity(1f); - left.setTextSize(12f); - logicLinesChart.getAxisRight().setDrawLabels(false); - logicLinesChart.getDescription().setEnabled(false); - logicLinesChart.setScaleYEnabled(false); - - synchronized (lock) { - lock.notify(); - } - } else { - progressBar.setVisibility(View.GONE); - ((LogicalAnalyzerActivity) getActivity()).setStatus(false); - CustomSnackBar.showSnackBar(getActivity().findViewById(android.R.id.content), - getString(R.string.no_data_generated), null, null, Snackbar.LENGTH_SHORT); - } - - analyze_button.setClickable(true); - } - } - - private class CaptureFour extends AsyncTask, ArrayList, Void> { - private String[] edgeOption = new String[channelMode]; - private boolean holder1, holder2, holder3, holder4; - - @Override - protected Void doInBackground(ArrayList... arrayLists) { - try { - channels[0] = arrayLists[0].get(0); - channels[1] = arrayLists[0].get(1); - channels[2] = arrayLists[0].get(2); - channels[3] = arrayLists[0].get(3); - - int channelNumber1 = scienceLab.calculateDigitalChannel(arrayLists[0].get(0)); - int channelNumber2 = scienceLab.calculateDigitalChannel(arrayLists[0].get(1)); - int channelNumber3 = scienceLab.calculateDigitalChannel(arrayLists[0].get(2)); - int channelNumber4 = scienceLab.calculateDigitalChannel(arrayLists[0].get(3)); - - digitalChannelArray.add(scienceLab.getDigitalChannel(channelNumber1)); - digitalChannelArray.add(scienceLab.getDigitalChannel(channelNumber2)); - digitalChannelArray.add(scienceLab.getDigitalChannel(channelNumber3)); - digitalChannelArray.add(scienceLab.getDigitalChannel(channelNumber4)); - edgeOption[0] = arrayLists[1].get(0); - edgeOption[1] = arrayLists[1].get(1); - edgeOption[2] = arrayLists[1].get(2); - edgeOption[3] = arrayLists[1].get(3); - - ArrayList modes = new ArrayList<>(); - for (int i = 0; i < channelMode; i++) { - switch (edgeOption[i]) { - case "EVERY EDGE": - digitalChannelArray.get(i).mode = EVERY_EDGE; - modes.add(EVERY_EDGE); - break; - case "EVERY FALLING EDGE": - digitalChannelArray.get(i).mode = EVERY_FALLING_EDGE; - modes.add(EVERY_FALLING_EDGE); - break; - case "EVERY RISING EDGE": - digitalChannelArray.get(i).mode = EVERY_RISING_EDGE; - modes.add(EVERY_RISING_EDGE); - break; - case "EVERY FOURTH RISING EDGE": - digitalChannelArray.get(i).mode = EVERY_FOURTH_RISING_EDGE; - modes.add(EVERY_FOURTH_RISING_EDGE); - break; - case "DISABLED": - digitalChannelArray.get(i).mode = DISABLED; - modes.add(DISABLED); - break; - default: - digitalChannelArray.get(i).mode = EVERY_EDGE; - modes.add(EVERY_EDGE); - } - } - ArrayList triggerChannel = new ArrayList<>(); - triggerChannel.add(true); - triggerChannel.add(true); - triggerChannel.add(true); - - scienceLab.startFourChannelLA(null, null, modes, null, triggerChannel); - delayThread(1000); - LinkedHashMap data = scienceLab.getLAInitialStates(); - delayThread(1000); - holder1 = scienceLab.fetchLAChannel(channelNumber1, data); - delayThread(1000); - holder2 = scienceLab.fetchLAChannel(channelNumber2, data); - delayThread(1000); - holder3 = scienceLab.fetchLAChannel(channelNumber3, data); - delayThread(1000); - holder4 = scienceLab.fetchLAChannel(channelNumber4, data); - - } catch (NullPointerException e) { - cancel(true); - } - return null; - } - - @Override - protected void onPostExecute(Void aVoid) { - super.onPostExecute(aVoid); - - if (holder1 && holder2 && holder3 && holder4) { - - ArrayList xaxis = new ArrayList<>(); - xaxis.add(digitalChannelArray.get(0).getXAxis()); - xaxis.add(digitalChannelArray.get(1).getXAxis()); - xaxis.add(digitalChannelArray.get(2).getXAxis()); - xaxis.add(digitalChannelArray.get(3).getXAxis()); - - ArrayList yaxis = new ArrayList<>(); - yaxis.add(digitalChannelArray.get(0).getYAxis()); - yaxis.add(digitalChannelArray.get(1).getYAxis()); - yaxis.add(digitalChannelArray.get(2).getYAxis()); - yaxis.add(digitalChannelArray.get(3).getYAxis()); - - recordXAxis.clear(); - recordYAxis.clear(); - recordChannelMode.clear(); - // Plot the fetched data - for (int i = 0; i < channelMode; i++) { - storeAxisValues(xaxis.get(i), yaxis.get(i), digitalChannelArray.get(i).mode); - switch (edgeOption[i]) { - case "EVERY EDGE": - singleChannelEveryEdge(xaxis.get(i), yaxis.get(i)); - break; - case "EVERY FOURTH RISING EDGE": - singleChannelFourthRisingEdge(xaxis.get(i)); - break; - case "EVERY RISING EDGE": - singleChannelRisingEdges(xaxis.get(i), yaxis.get(i)); - break; - case "EVERY FALLING EDGE": - singleChannelFallingEdges(xaxis.get(i), yaxis.get(i)); - break; - default: - singleChannelOtherEdges(xaxis.get(i), yaxis.get(i)); - break; - } - currentChannel++; - } - - progressBar.setVisibility(View.GONE); - ((LogicalAnalyzerActivity) getActivity()).setStatus(false); - - logicLinesChart.setData(new LineData(dataSets)); - logicLinesChart.invalidate(); - - YAxis left = logicLinesChart.getAxisLeft(); - left.setValueFormatter(new LogicAnalyzerAxisFormatter(channelNames)); - left.setTextColor(Color.WHITE); - left.setGranularity(1f); - left.setTextSize(12f); - logicLinesChart.getAxisRight().setDrawLabels(false); - logicLinesChart.getDescription().setEnabled(false); - logicLinesChart.setScaleYEnabled(false); - - synchronized (lock) { - lock.notify(); - } - } else { - progressBar.setVisibility(View.GONE); - ((LogicalAnalyzerActivity) getActivity()).setStatus(false); - CustomSnackBar.showSnackBar(getActivity().findViewById(android.R.id.content), - getString(R.string.no_data_generated), null, null, Snackbar.LENGTH_SHORT); - } - - analyze_button.setClickable(true); - } - } -} diff --git a/app/src/main/java/io/pslab/fragment/LuxMeterDataFragment.java b/app/src/main/java/io/pslab/fragment/LuxMeterDataFragment.java deleted file mode 100644 index adcccfe11..000000000 --- a/app/src/main/java/io/pslab/fragment/LuxMeterDataFragment.java +++ /dev/null @@ -1,632 +0,0 @@ -package io.pslab.fragment; - -import android.graphics.Bitmap; -import android.graphics.Color; -import android.hardware.Sensor; -import android.hardware.SensorEvent; -import android.hardware.SensorEventListener; -import android.hardware.SensorManager; -import android.location.Location; -import android.os.Bundle; -import android.os.Environment; -import android.os.Handler; -import androidx.annotation.NonNull; - -import com.google.android.material.snackbar.Snackbar; -import androidx.fragment.app.Fragment; - -import androidx.preference.PreferenceManager; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.TextView; - -import com.github.anastr.speedviewlib.PointerSpeedometer; -import com.github.mikephil.charting.charts.LineChart; -import com.github.mikephil.charting.components.Legend; -import com.github.mikephil.charting.components.XAxis; -import com.github.mikephil.charting.components.YAxis; -import com.github.mikephil.charting.data.Entry; -import com.github.mikephil.charting.data.LineData; -import com.github.mikephil.charting.data.LineDataSet; - -import java.io.File; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Date; -import java.util.Locale; -import java.util.Timer; -import java.util.TimerTask; - -import butterknife.BindView; -import butterknife.ButterKnife; -import butterknife.Unbinder; -import io.pslab.DataFormatter; -import io.pslab.R; -import io.pslab.activity.LuxMeterActivity; -import io.pslab.communication.ScienceLab; -import io.pslab.communication.peripherals.I2C; -import io.pslab.communication.sensors.BH1750; -import io.pslab.communication.sensors.TSL2561; -import io.pslab.interfaces.OperationCallback; -import io.pslab.models.LuxData; -import io.pslab.models.PSLabSensor; -import io.pslab.models.SensorDataBlock; -import io.pslab.others.CSVDataLine; -import io.pslab.others.CSVLogger; -import io.pslab.others.CustomSnackBar; -import io.pslab.others.ScienceLabCommon; - -import static android.content.Context.SENSOR_SERVICE; -import static io.pslab.others.CSVLogger.CSV_DIRECTORY; - -/** - * Created by Padmal on 11/2/18. - */ - -public class LuxMeterDataFragment extends Fragment implements OperationCallback { - - private static final CSVDataLine CSV_HEADER = - new CSVDataLine() - .add("Timestamp") - .add("DateTime") - .add("Readings") - .add("Latitude") - .add("Longitude"); - - private static int sensorType = 0; - private static int highLimit = 2000; - private static int updatePeriod = 100; - private static int gain = 1; - private long timeElapsed; - private int count = 0, turns = 0; - private float sum = 0; - private boolean returningFromPause = false; - - private float luxValue = -1; - - private enum LUX_SENSOR {INBUILT_SENSOR, BH1750_SENSOR, TSL2561_SENSOR} - - @BindView(R.id.lux_max) - TextView statMax; - @BindView(R.id.lux_min) - TextView statMin; - @BindView(R.id.lux_avg) - TextView statMean; - @BindView(R.id.label_lux_sensor) - TextView sensorLabel; - @BindView(R.id.chart_lux_meter) - LineChart mChart; - @BindView(R.id.light_meter) - PointerSpeedometer lightMeter; - - private Timer graphTimer; - private SensorManager sensorManager; - private Sensor sensor; - private long startTime, block; - private ArrayList entries; - private ArrayList recordedLuxArray; - private LuxData sensorData; - private float currentMin = 10000; - private float currentMax = 0; - private YAxis y; - private Unbinder unbinder; - private long previousTimeElapsed = (System.currentTimeMillis() - startTime) / updatePeriod; - private LuxMeterActivity luxSensor; - private View rootView; - - public static LuxMeterDataFragment newInstance() { - return new LuxMeterDataFragment(); - } - - public static void setParameters(int highLimit, int updatePeriod, String type, String gain) { - LuxMeterDataFragment.highLimit = highLimit; - LuxMeterDataFragment.updatePeriod = updatePeriod; - LuxMeterDataFragment.sensorType = Integer.valueOf(type); - LuxMeterDataFragment.gain = Integer.valueOf(gain); - } - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - startTime = System.currentTimeMillis(); - entries = new ArrayList<>(); - luxSensor = (LuxMeterActivity) getActivity(); - } - - @Override - public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { - rootView = inflater.inflate(R.layout.fragment_lux_meter_data, container, false); - unbinder = ButterKnife.bind(this, rootView); - setupInstruments(); - return rootView; - } - - @Override - public void onResume() { - super.onResume(); - if (luxSensor.playingData) { - sensorLabel.setText(getResources().getString(R.string.lux_meter)); - recordedLuxArray = new ArrayList<>(); - resetInstrumentData(); - playRecordedData(); - } else if (luxSensor.viewingData) { - sensorLabel.setText(getResources().getString(R.string.lux_meter)); - recordedLuxArray = new ArrayList<>(); - resetInstrumentData(); - plotAllRecordedData(); - } else if (!luxSensor.isRecording) { - updateGraphs(); - sum = 0; - count = 0; - currentMin = 10000; - currentMax = 0; - entries.clear(); - mChart.clear(); - mChart.invalidate(); - initiateLuxSensor(sensorType); - } else if (returningFromPause) { - updateGraphs(); - } - } - - @Override - public void onDestroyView() { - super.onDestroyView(); - if (graphTimer != null) { - graphTimer.cancel(); - } - if (sensorManager != null) { - sensorManager.unregisterListener(lightSensorEventListener); - } - unbinder.unbind(); - } - - private void plotAllRecordedData() { - recordedLuxArray.addAll(luxSensor.recordedLuxData); - if (recordedLuxArray.size() != 0) { - for (LuxData d : recordedLuxArray) { - if (currentMax < d.getLux()) { - currentMax = d.getLux(); - } - if (currentMin > d.getLux()) { - currentMin = d.getLux(); - } - Entry entry = new Entry((float) (d.getTime() - d.getBlock()) / 1000, d.getLux()); - entries.add(entry); - lightMeter.setWithTremble(false); - lightMeter.setSpeedAt(d.getLux()); - sum += entry.getY(); - } - y.setAxisMaximum(currentMax); - y.setAxisMinimum(currentMin); - y.setLabelCount(10); - statMax.setText(String.format(Locale.getDefault(), PSLabSensor.LUXMETER_DATA_FORMAT, currentMax)); - statMin.setText(String.format(Locale.getDefault(), PSLabSensor.LUXMETER_DATA_FORMAT, currentMin)); - statMean.setText(String.format(Locale.getDefault(), PSLabSensor.LUXMETER_DATA_FORMAT, (sum / recordedLuxArray.size()))); - - LineDataSet dataSet = new LineDataSet(entries, getString(R.string.lux)); - dataSet.setDrawCircles(false); - dataSet.setDrawValues(false); - dataSet.setLineWidth(2); - LineData data = new LineData(dataSet); - - mChart.setData(data); - mChart.notifyDataSetChanged(); - mChart.setVisibleXRangeMaximum(80); - mChart.moveViewToX(data.getEntryCount()); - mChart.invalidate(); - } - } - - private void playRecordedData() { - recordedLuxArray.addAll(luxSensor.recordedLuxData); - try { - if (recordedLuxArray.size() > 1) { - LuxData i = recordedLuxArray.get(1); - long timeGap = i.getTime() - i.getBlock(); - processRecordedData(timeGap); - } else { - processRecordedData(0); - } - } catch (IllegalArgumentException e) { - CustomSnackBar.showSnackBar(getActivity().findViewById(android.R.id.content), - getString(R.string.no_data_fetched), null, null, Snackbar.LENGTH_SHORT); - } - } - - private void processRecordedData(long timeGap) { - final Handler handler = new Handler(); - if (graphTimer != null) { - graphTimer.cancel(); - } else { - graphTimer = new Timer(); - } - graphTimer.schedule(new TimerTask() { - @Override - public void run() { - handler.post(new Runnable() { - @Override - public void run() { - if (luxSensor.playingData) { - try { - LuxData d = recordedLuxArray.get(turns); - turns++; - if (currentMax < d.getLux()) { - currentMax = d.getLux(); - statMax.setText(String.format(Locale.getDefault(), PSLabSensor.LUXMETER_DATA_FORMAT, d.getLux())); - } - if (currentMin > d.getLux()) { - currentMin = d.getLux(); - statMin.setText(String.format(Locale.getDefault(), PSLabSensor.LUXMETER_DATA_FORMAT, d.getLux())); - } - y.setAxisMaximum(currentMax); - y.setAxisMinimum(currentMin); - y.setLabelCount(10); - lightMeter.setWithTremble(false); - lightMeter.setSpeedAt(d.getLux()); - - Entry entry = new Entry((float) (d.getTime() - d.getBlock()) / 1000, d.getLux()); - entries.add(entry); - count++; - sum += entry.getY(); - statMean.setText(DataFormatter.formatDouble((sum / count), PSLabSensor.LUXMETER_DATA_FORMAT)); - - LineDataSet dataSet = new LineDataSet(entries, getString(R.string.lux)); - dataSet.setDrawCircles(false); - dataSet.setDrawValues(false); - dataSet.setLineWidth(2); - LineData data = new LineData(dataSet); - - mChart.setData(data); - mChart.notifyDataSetChanged(); - mChart.setVisibleXRangeMaximum(80); - mChart.moveViewToX(data.getEntryCount()); - mChart.invalidate(); - } catch (IndexOutOfBoundsException e) { - graphTimer.cancel(); - graphTimer = null; - turns = 0; - luxSensor.playingData = false; - luxSensor.startedPlay = false; - luxSensor.invalidateOptionsMenu(); - } - } - } - }); - } - }, 0, timeGap); - } - - @Override - public void stopData() { - if (graphTimer != null) { - graphTimer.cancel(); - graphTimer = null; - } - recordedLuxArray.clear(); - entries.clear(); - plotAllRecordedData(); - luxSensor.startedPlay = false; - luxSensor.playingData = false; - turns = 0; - luxSensor.invalidateOptionsMenu(); - } - - @Override - public void playData() { - resetInstrumentData(); - luxSensor.startedPlay = true; - try { - if (recordedLuxArray.size() > 1) { - LuxData i = recordedLuxArray.get(1); - long timeGap = i.getTime() - i.getBlock(); - processRecordedData(timeGap); - } else { - processRecordedData(0); - } - } catch (IllegalArgumentException e) { - CustomSnackBar.showSnackBar(getActivity().findViewById(android.R.id.content), - getString(R.string.no_data_fetched), null, null, Snackbar.LENGTH_SHORT); - } - } - - @Override - public void saveGraph() { - luxSensor.csvLogger.prepareLogFile(); - luxSensor.csvLogger.writeMetaData(getResources().getString(R.string.lux_meter)); - luxSensor.csvLogger.writeCSVFile(CSV_HEADER); - for (LuxData luxData : luxSensor.recordedLuxData) { - luxSensor.csvLogger.writeCSVFile( - new CSVDataLine() - .add(luxData.getTime()) - .add(CSVLogger.FILE_NAME_FORMAT.format(new Date(luxData.getTime()))) - .add(luxData.getLux()) - .add(luxData.getLat()) - .add(luxData.getLon()) - ); - } - View view = rootView.findViewById(R.id.luxmeter_linearlayout); - view.setDrawingCacheEnabled(true); - Bitmap b = view.getDrawingCache(); - try { - b.compress(Bitmap.CompressFormat.JPEG, 100, new FileOutputStream(Environment.getExternalStorageDirectory().getAbsolutePath() + - File.separator + CSV_DIRECTORY + File.separator + luxSensor.getSensorName() + - File.separator + CSVLogger.FILE_NAME_FORMAT.format(new Date()) + "_graph.jpg")); - } catch (FileNotFoundException e) { - e.printStackTrace(); - } - } - - - private void setupInstruments() { - lightMeter.setMaxSpeed(PreferenceManager.getDefaultSharedPreferences(getActivity()).getFloat(luxSensor.LUXMETER_LIMIT, 10000)); - - XAxis x = mChart.getXAxis(); - this.y = mChart.getAxisLeft(); - YAxis y2 = mChart.getAxisRight(); - - mChart.setTouchEnabled(true); - mChart.setHighlightPerDragEnabled(true); - mChart.setDragEnabled(true); - mChart.setScaleEnabled(true); - mChart.setDrawGridBackground(false); - mChart.setPinchZoom(true); - mChart.setScaleYEnabled(true); - mChart.setBackgroundColor(Color.BLACK); - mChart.getDescription().setEnabled(false); - - LineData data = new LineData(); - mChart.setData(data); - - Legend l = mChart.getLegend(); - l.setForm(Legend.LegendForm.LINE); - l.setTextColor(Color.WHITE); - - x.setTextColor(Color.WHITE); - x.setDrawGridLines(true); - x.setAvoidFirstLastClipping(true); - - y.setTextColor(Color.WHITE); - y.setAxisMaximum(currentMax); - y.setAxisMinimum(currentMin); - y.setDrawGridLines(true); - y.setLabelCount(10); - - y2.setDrawGridLines(false); - } - - @Override - public void onPause() { - super.onPause(); - if (graphTimer != null) { - returningFromPause = true; - graphTimer.cancel(); - graphTimer = null; - if (luxSensor.playingData) { - luxSensor.finish(); - } - } - } - - private void updateGraphs() { - final Handler handler = new Handler(); - if (graphTimer != null) { - graphTimer.cancel(); - } - graphTimer = new Timer(); - graphTimer.schedule(new TimerTask() { - @Override - public void run() { - handler.post(new Runnable() { - @Override - public void run() { - try { - visualizeData(); - } catch (NullPointerException e) { - /* Pass for another refresh round */ - } - } - }); - } - }, 0, updatePeriod); - } - - private void writeLogToFile(long timestamp, float sensorReading) { - if (getActivity() != null && luxSensor.isRecording) { - if (luxSensor.writeHeaderToFile) { - luxSensor.csvLogger.prepareLogFile(); - luxSensor.csvLogger.writeMetaData(getResources().getString(R.string.lux_meter)); - luxSensor.csvLogger.writeCSVFile(CSV_HEADER); - block = timestamp; - luxSensor.recordSensorDataBlockID(new SensorDataBlock(timestamp, luxSensor.getSensorName())); - luxSensor.writeHeaderToFile = !luxSensor.writeHeaderToFile; - } - if (luxSensor.addLocation && luxSensor.gpsLogger.isGPSEnabled()) { - Location location = luxSensor.gpsLogger.getDeviceLocation(); - luxSensor.csvLogger.writeCSVFile( - new CSVDataLine() - .add(timestamp) - .add(CSVLogger.FILE_NAME_FORMAT.format(new Date(timestamp))) - .add(sensorReading) - .add(location.getLatitude()) - .add(location.getLongitude()) - ); - sensorData = new LuxData(timestamp, block, luxValue, location.getLatitude(), location.getLongitude()); - } else { - luxSensor.csvLogger.writeCSVFile( - new CSVDataLine() - .add(timestamp) - .add(CSVLogger.FILE_NAME_FORMAT.format(new Date(timestamp))) - .add(sensorReading) - .add(0.0) - .add(0.0) - ); - sensorData = new LuxData(timestamp, block, luxValue, 0.0, 0.0); - } - luxSensor.recordSensorData(sensorData); - } else { - luxSensor.writeHeaderToFile = true; - } - } - - private void visualizeData() { - if (currentMax < luxValue) { - currentMax = luxValue; - statMax.setText(String.format(Locale.getDefault(), PSLabSensor.LUXMETER_DATA_FORMAT, luxValue)); - } - if (currentMin > luxValue) { - currentMin = luxValue; - statMin.setText(String.format(Locale.getDefault(), PSLabSensor.LUXMETER_DATA_FORMAT, luxValue)); - } - y.setAxisMaximum(currentMax); - y.setAxisMinimum(currentMin); - y.setLabelCount(10); - if (luxValue >= 0) { - lightMeter.setWithTremble(false); - lightMeter.setSpeedAt(luxValue); - if (luxValue > highLimit) - lightMeter.setPointerColor(Color.RED); - else - lightMeter.setPointerColor(Color.WHITE); - - timeElapsed = ((System.currentTimeMillis() - startTime) / updatePeriod); - if (timeElapsed != previousTimeElapsed) { - previousTimeElapsed = timeElapsed; - Entry entry = new Entry((float) timeElapsed, luxValue); - Long currentTime = System.currentTimeMillis(); - writeLogToFile(currentTime, luxValue); - entries.add(entry); - - count++; - sum += entry.getY(); - statMean.setText(String.format(Locale.getDefault(), PSLabSensor.LUXMETER_DATA_FORMAT, (sum / count))); - - LineDataSet dataSet = new LineDataSet(entries, getString(R.string.lux)); - dataSet.setDrawCircles(false); - dataSet.setDrawValues(false); - dataSet.setLineWidth(2); - LineData data = new LineData(dataSet); - - mChart.setData(data); - mChart.notifyDataSetChanged(); - mChart.setVisibleXRangeMaximum(80); - mChart.moveViewToX(data.getEntryCount()); - mChart.invalidate(); - } - } - } - - private SensorEventListener lightSensorEventListener = new SensorEventListener() { - - @Override - public void onAccuracyChanged(Sensor sensor, int accuracy) {/**/} - - @Override - public void onSensorChanged(SensorEvent event) { - if (event.sensor.getType() == Sensor.TYPE_LIGHT) { - luxValue = event.values[0]; - } - } - }; - - private void resetInstrumentData() { - luxValue = 0; - count = 0; - currentMin = 10000; - currentMax = 0; - sum = 0; - sensor = null; - if (sensorManager != null) { - sensorManager.unregisterListener(lightSensorEventListener); - } - startTime = System.currentTimeMillis(); - statMax.setText(DataFormatter.formatDouble(0, DataFormatter.LOW_PRECISION_FORMAT)); - statMin.setText(DataFormatter.formatDouble(0, DataFormatter.LOW_PRECISION_FORMAT)); - statMean.setText(DataFormatter.formatDouble(0, DataFormatter.LOW_PRECISION_FORMAT)); - lightMeter.setSpeedAt(0); - lightMeter.setWithTremble(false); - entries.clear(); - } - - private void initiateLuxSensor(int type) { - LUX_SENSOR s = LUX_SENSOR.values()[type]; - resetInstrumentData(); - ScienceLab scienceLab; - switch (s) { - case INBUILT_SENSOR: - sensorLabel.setText(getResources().getStringArray(R.array.lux_sensors)[0]); - sensorManager = (SensorManager) getContext().getSystemService(SENSOR_SERVICE); - sensor = sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT); - if (sensor == null) { - CustomSnackBar.showSnackBar(getActivity().findViewById(android.R.id.content), - getString(R.string.no_lux_sensor), null, null, Snackbar.LENGTH_LONG); - } else { - float max = sensor.getMaximumRange() * 10000; - PreferenceManager.getDefaultSharedPreferences(getActivity()).edit().putFloat(luxSensor.LUXMETER_LIMIT, max).apply(); - lightMeter.setMaxSpeed(max); - sensorManager.registerListener(lightSensorEventListener, - sensor, SensorManager.SENSOR_DELAY_FASTEST); - } - break; - case BH1750_SENSOR: - sensorLabel.setText(getResources().getStringArray(R.array.lux_sensors)[1]); - scienceLab = ScienceLabCommon.scienceLab; - if (scienceLab.isConnected()) { - ArrayList data; - try { - I2C i2c = scienceLab.i2c; - data = i2c.scan(null); - if (data.contains(0x23)) { - BH1750 sensorBH1750 = new BH1750(i2c); - sensorBH1750.setRange(String.valueOf(gain)); - sensorType = 0; - } else { - CustomSnackBar.showSnackBar(getActivity().findViewById(android.R.id.content), - getString(R.string.sensor_not_connected_tls), null, null, Snackbar.LENGTH_SHORT); - sensorType = 0; - } - } catch (IOException | InterruptedException e) { - e.printStackTrace(); - } - } else { - CustomSnackBar.showSnackBar(getActivity().findViewById(android.R.id.content), - getString(R.string.device_not_found), null, null, Snackbar.LENGTH_SHORT); - sensorType = 0; - } - - break; - case TSL2561_SENSOR: - sensorLabel.setText(getResources().getStringArray(R.array.lux_sensors)[2]); - scienceLab = ScienceLabCommon.scienceLab; - if (scienceLab.isConnected()) { - try { - I2C i2c = scienceLab.i2c; - ArrayList data; - data = i2c.scan(null); - if (data.contains(0x39)) { - TSL2561 sensorTSL2561 = new TSL2561(i2c, scienceLab); - sensorTSL2561.setGain(String.valueOf(gain)); - sensorType = 2; - } else { - CustomSnackBar.showSnackBar(getActivity().findViewById(android.R.id.content), - getString(R.string.sensor_not_connected_tls), null, null, Snackbar.LENGTH_SHORT); - sensorType = 0; - } - } catch (IOException | InterruptedException e) { - e.printStackTrace(); - } - } else { - CustomSnackBar.showSnackBar(getActivity().findViewById(android.R.id.content), - getString(R.string.device_not_found), null, null, Snackbar.LENGTH_SHORT); - sensorType = 0; - } - break; - default: - break; - } - } -} diff --git a/app/src/main/java/io/pslab/fragment/LuxMeterSettingFragment.java b/app/src/main/java/io/pslab/fragment/LuxMeterSettingFragment.java deleted file mode 100644 index 57e23eea3..000000000 --- a/app/src/main/java/io/pslab/fragment/LuxMeterSettingFragment.java +++ /dev/null @@ -1,136 +0,0 @@ -package io.pslab.fragment; - -import android.annotation.SuppressLint; -import android.content.SharedPreferences; -import android.os.Bundle; - -import androidx.preference.CheckBoxPreference; -import androidx.preference.EditTextPreference; -import androidx.preference.ListPreference; -import androidx.preference.PreferenceFragmentCompat; -import androidx.preference.PreferenceManager; - -import com.google.android.material.snackbar.Snackbar; - -import io.pslab.R; -import io.pslab.others.CustomSnackBar; -import io.pslab.others.PSLabPermission; - -public class LuxMeterSettingFragment extends PreferenceFragmentCompat implements SharedPreferences.OnSharedPreferenceChangeListener { - - public static final String KEY_INCLUDE_LOCATION = "include_location_sensor_data"; - public static final String KEY_UPDATE_PERIOD = "setting_lux_update_period"; - public static final String KEY_HIGH_LIMIT = "setting_lux_high_limit"; - public static final String KEY_LUX_SENSOR_TYPE = "setting_lux_sensor_type"; - public static final String KEY_LUX_SENSOR_GAIN = "setting_lux_sensor_gain"; - - private PSLabPermission psLabPermission; - - private EditTextPreference updatePeriodPref; - private EditTextPreference higLimitPref; - private EditTextPreference sensorGainPref; - private CheckBoxPreference locationPreference; - private ListPreference sensorTypePreference; - private SharedPreferences sharedPref; - - @Override - public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { - setPreferencesFromResource(R.xml.lux_meter_settings, rootKey); - updatePeriodPref = (EditTextPreference) getPreferenceScreen().findPreference(KEY_UPDATE_PERIOD); - higLimitPref = (EditTextPreference) getPreferenceScreen().findPreference(KEY_HIGH_LIMIT); - sensorGainPref = (EditTextPreference) getPreferenceScreen().findPreference(KEY_LUX_SENSOR_GAIN); - locationPreference = (CheckBoxPreference) getPreferenceScreen().findPreference(KEY_INCLUDE_LOCATION); - sensorTypePreference = (ListPreference) getPreferenceScreen().findPreference(KEY_LUX_SENSOR_TYPE); - sharedPref = PreferenceManager.getDefaultSharedPreferences(getActivity()); - - psLabPermission = PSLabPermission.getInstance(); - if (!psLabPermission.checkPermissions(getActivity(), PSLabPermission.MAP_PERMISSION)) { - SharedPreferences.Editor editor = sharedPref.edit(); - editor.putBoolean(LuxMeterSettingFragment.KEY_INCLUDE_LOCATION, true); - editor.apply(); - } - } - - @Override - public void onResume() { - super.onResume(); - locationPreference.setChecked(sharedPref.getBoolean(KEY_INCLUDE_LOCATION, true)); - updatePeriodPref.setSummary(updatePeriodPref.getText() + " ms"); - higLimitPref.setSummary(higLimitPref.getText() + " Lx"); - sensorTypePreference.setSummary(sensorTypePreference.getEntry()); - sensorGainPref.setSummary(sensorGainPref.getText()); - getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this); - } - - @Override - public void onPause() { - super.onPause(); - getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this); - } - - @SuppressLint("ApplySharedPref") - @Override - public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String s) { - switch (s) { - case KEY_INCLUDE_LOCATION: - if (locationPreference.isChecked()) { - psLabPermission.checkPermissions( - getActivity(), PSLabPermission.MAP_PERMISSION); - } - break; - case KEY_UPDATE_PERIOD: - try { - Integer updatePeriod = Integer.parseInt(updatePeriodPref.getText()); - if (updatePeriod > 1000 || updatePeriod < 100) { - throw new NumberFormatException(); - } else { - updatePeriodPref.setSummary(updatePeriod + " ms"); - } - } catch (NumberFormatException e) { - CustomSnackBar.showSnackBar(getActivity().findViewById(android.R.id.content), - getString(R.string.update_period_msg),null,null, Snackbar.LENGTH_SHORT); - updatePeriodPref.setSummary("1000 ms"); - updatePeriodPref.setText("1000"); - SharedPreferences.Editor editor = sharedPref.edit(); - editor.putString(s, "1000"); - editor.commit(); - } - break; - case KEY_LUX_SENSOR_GAIN: - try { - Integer gain = Integer.parseInt(sensorGainPref.getText()); - sensorGainPref.setSummary(String.valueOf(gain)); - } catch (NumberFormatException e) { - sensorGainPref.setSummary("1"); - sensorGainPref.setText("1"); - SharedPreferences.Editor editor = sharedPref.edit(); - editor.putString(KEY_LUX_SENSOR_GAIN, "1"); - editor.commit(); - } - break; - case KEY_HIGH_LIMIT: - try { - Integer highLimit = Integer.parseInt(higLimitPref.getText()); - if (highLimit > 10000 || highLimit < 10) { - throw new NumberFormatException(); - } else { - higLimitPref.setSummary(String.valueOf(highLimit) + " Lx"); - } - } catch (NumberFormatException e) { - CustomSnackBar.showSnackBar(getActivity().findViewById(android.R.id.content), - getString(R.string.high_limit_msg),null,null, Snackbar.LENGTH_SHORT); - higLimitPref.setSummary("2000 Lx"); - higLimitPref.setText("2000"); - SharedPreferences.Editor editor = sharedPref.edit(); - editor.putString(KEY_HIGH_LIMIT, "2000"); - editor.commit(); - } - break; - case KEY_LUX_SENSOR_TYPE: - sensorTypePreference.setSummary(sensorTypePreference.getEntry()); - break; - default: - break; - } - } -} diff --git a/app/src/main/java/io/pslab/fragment/MultimeterSettingsFragment.java b/app/src/main/java/io/pslab/fragment/MultimeterSettingsFragment.java deleted file mode 100644 index d1c656e8b..000000000 --- a/app/src/main/java/io/pslab/fragment/MultimeterSettingsFragment.java +++ /dev/null @@ -1,88 +0,0 @@ -package io.pslab.fragment; - -import android.annotation.SuppressLint; -import android.content.SharedPreferences; -import android.os.Bundle; -import com.google.android.material.snackbar.Snackbar; -import androidx.preference.CheckBoxPreference; -import androidx.preference.EditTextPreference; -import androidx.preference.PreferenceFragmentCompat; -import androidx.preference.PreferenceManager; - -import io.pslab.R; -import io.pslab.others.CustomSnackBar; -import io.pslab.others.PSLabPermission; - -public class MultimeterSettingsFragment extends PreferenceFragmentCompat implements SharedPreferences.OnSharedPreferenceChangeListener { - - public static final String KEY_INCLUDE_LOCATION = "include_location_sensor_data"; - public static final String KEY_UPDATE_PERIOD = "setting_multimeter_update_period"; - - private PSLabPermission psLabPermission; - - private EditTextPreference updatePeriodPref; - private CheckBoxPreference locationPreference; - private SharedPreferences sharedPref; - - @Override - public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { - setPreferencesFromResource(R.xml.multimeter_settings, rootKey); - updatePeriodPref = (EditTextPreference) getPreferenceScreen().findPreference(KEY_UPDATE_PERIOD); - locationPreference = (CheckBoxPreference) getPreferenceScreen().findPreference(KEY_INCLUDE_LOCATION); - sharedPref = PreferenceManager.getDefaultSharedPreferences(getActivity()); - - psLabPermission = PSLabPermission.getInstance(); - if (!psLabPermission.checkPermissions(getActivity(), PSLabPermission.MAP_PERMISSION)) { - SharedPreferences.Editor editor = sharedPref.edit(); - editor.putBoolean(MultimeterSettingsFragment.KEY_INCLUDE_LOCATION, true); - editor.apply(); - } - } - - @Override - public void onResume() { - super.onResume(); - locationPreference.setChecked(sharedPref.getBoolean(KEY_INCLUDE_LOCATION, true)); - updatePeriodPref.setSummary(updatePeriodPref.getText() + " ms"); - getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this); - } - - @Override - public void onPause() { - super.onPause(); - getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this); - } - - @SuppressLint("ApplySharedPref") - @Override - public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String s) { - switch (s) { - case KEY_INCLUDE_LOCATION: - if (locationPreference.isChecked()) { - psLabPermission.checkPermissions( - getActivity(), PSLabPermission.MAP_PERMISSION); - } - break; - case KEY_UPDATE_PERIOD: - try { - Integer updatePeriod = Integer.parseInt(updatePeriodPref.getText()); - if (updatePeriod > 2000 || updatePeriod < 100) { - throw new NumberFormatException(); - } else { - updatePeriodPref.setSummary(String.valueOf(updatePeriod) + " ms"); - } - } catch (NumberFormatException e) { - CustomSnackBar.showSnackBar(getActivity().findViewById(android.R.id.content), - getString(R.string.update_period_msg),null,null, Snackbar.LENGTH_SHORT); - updatePeriodPref.setSummary("1000 ms"); - updatePeriodPref.setText("1000"); - SharedPreferences.Editor editor = sharedPref.edit(); - editor.putString(s, "1000"); - editor.commit(); - } - break; - default: - break; - } - } -} diff --git a/app/src/main/java/io/pslab/fragment/OscilloscopePlaybackFragment.java b/app/src/main/java/io/pslab/fragment/OscilloscopePlaybackFragment.java deleted file mode 100644 index bac1ba91f..000000000 --- a/app/src/main/java/io/pslab/fragment/OscilloscopePlaybackFragment.java +++ /dev/null @@ -1,53 +0,0 @@ -package io.pslab.fragment; - -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.CheckBox; -import android.widget.CompoundButton; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.fragment.app.Fragment; - -import io.pslab.R; -import io.pslab.activity.OscilloscopeActivity; - -public class OscilloscopePlaybackFragment extends Fragment { - - private OscilloscopeActivity oscilloscopeActivity; - private TextView timebaseTextView; - - public static OscilloscopePlaybackFragment newInstance() { - return new OscilloscopePlaybackFragment(); - } - - @Nullable - @Override - public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { - View rootView = inflater.inflate(R.layout.fragment_oscilloscope_playback, container, false); - timebaseTextView = rootView.findViewById(R.id.timebase_data); - CheckBox fourierCheckBox = rootView.findViewById(R.id.fourier_checkbox); - - fourierCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - oscilloscopeActivity.isPlaybackFourierChecked = isChecked; - } - }); - return rootView; - } - - @Override - public void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - oscilloscopeActivity = (OscilloscopeActivity) getActivity(); - } - - public void setTimeBase(String timeBase) { - timebaseTextView.setText(timeBase); - } -} - diff --git a/app/src/main/java/io/pslab/fragment/PSLabPinLayoutFragment.java b/app/src/main/java/io/pslab/fragment/PSLabPinLayoutFragment.java deleted file mode 100644 index 570a3a76c..000000000 --- a/app/src/main/java/io/pslab/fragment/PSLabPinLayoutFragment.java +++ /dev/null @@ -1,250 +0,0 @@ -package io.pslab.fragment; - -import android.annotation.SuppressLint; -import android.app.Activity; -import android.content.Context; -import android.graphics.Bitmap; -import android.graphics.Color; -import android.graphics.Matrix; -import android.graphics.PointF; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.MotionEvent; -import android.view.View; -import android.view.ViewGroup; -import android.widget.Button; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.appcompat.app.AlertDialog; -import androidx.core.content.res.ResourcesCompat; -import androidx.fragment.app.Fragment; - -import java.util.ArrayList; -import java.util.List; - -import io.pslab.R; -import io.pslab.items.PinDetails; - -public class PSLabPinLayoutFragment extends Fragment implements View.OnTouchListener { - - private final List pinDetails = new ArrayList<>(); - - private final Matrix matrix = new Matrix(); - private final Matrix savedMatrix = new Matrix(); - - public static boolean frontSide = true; - - private static final int NONE = 0; - private static final int DRAG = 1; - private static final int ZOOM = 2; - private int mode = NONE; - - private final PointF start = new PointF(); - private final PointF mid = new PointF(); - private float oldDist = 1f; - - private ImageView colorMap; - - private ImageView imgLayout; - - public static PSLabPinLayoutFragment newInstance() { - return new PSLabPinLayoutFragment(); - } - - @Override - public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { - View view = inflater.inflate(R.layout.fragment_pin_layout, container, false); - imgLayout = view.findViewById(R.id.img_pslab_pin_layout); - colorMap = view.findViewById(R.id.img_pslab_color_map); - return view; - } - - @Override - public void onResume() { - super.onResume(); - imgLayout.setImageDrawable(ResourcesCompat.getDrawable(getResources(), - frontSide ? R.drawable.pslab_v5_front_layout : R.drawable.pslab_v5_back_layout, null)); - colorMap.setImageDrawable(ResourcesCompat.getDrawable(getResources(), - frontSide ? R.drawable.pslab_v5_front_colormap : R.drawable.pslab_v5_back_colormap, null)); - imgLayout.setOnTouchListener(this); - populatePinDetails(); - } - - @Override - public void onPause() { - super.onPause(); - imgLayout.setImageDrawable(null); - colorMap.setImageDrawable(null); - // Force garbage collection to avoid OOM on older devices. - System.gc(); - } - - private void populatePinDetails() { - pinDetails.add(new PinDetails(getString(R.string.pin_esp_name), getString(R.string.pin_esp_description), getColor(R.color.category_usb), getColor(R.color.pin_esp))); - pinDetails.add(new PinDetails(getString(R.string.pin_rxd_name), getString(R.string.pin_rxd_description), getColor(R.color.category_communication), getColor(R.color.pin_rxd))); - pinDetails.add(new PinDetails(getString(R.string.pin_txd_name), getString(R.string.pin_txd_description), getColor(R.color.category_communication), getColor(R.color.pin_txd))); - pinDetails.add(new PinDetails(getString(R.string.pin_gnd_name), getString(R.string.pin_gnd_description), getColor(R.color.category_voltage), getColor(R.color.pin_gnd))); - pinDetails.add(new PinDetails(getString(R.string.pin_si1_name), getString(R.string.pin_si1_description), getColor(R.color.category_wavegen), getColor(R.color.pin_si1))); - pinDetails.add(new PinDetails(getString(R.string.pin_si2_name), getString(R.string.pin_si2_description), getColor(R.color.category_wavegen), getColor(R.color.pin_si2))); - pinDetails.add(new PinDetails(getString(R.string.pin_sq1_name), getString(R.string.pin_sq1_description), getColor(R.color.category_wavegen), getColor(R.color.pin_sq1))); - pinDetails.add(new PinDetails(getString(R.string.pin_sq2_name), getString(R.string.pin_sq2_description), getColor(R.color.category_wavegen), getColor(R.color.pin_sq2))); - pinDetails.add(new PinDetails(getString(R.string.pin_sq3_name), getString(R.string.pin_sq3_description), getColor(R.color.category_wavegen), getColor(R.color.pin_sq3))); - pinDetails.add(new PinDetails(getString(R.string.pin_sq4_name), getString(R.string.pin_sq4_description), getColor(R.color.category_wavegen), getColor(R.color.pin_sq4))); - pinDetails.add(new PinDetails(getString(R.string.pin_la1_name), getString(R.string.pin_la1_description), getColor(R.color.category_wavegen), getColor(R.color.pin_la1))); - pinDetails.add(new PinDetails(getString(R.string.pin_la2_name), getString(R.string.pin_la2_description), getColor(R.color.category_wavegen), getColor(R.color.pin_la2))); - pinDetails.add(new PinDetails(getString(R.string.pin_la3_name), getString(R.string.pin_la3_description), getColor(R.color.category_wavegen), getColor(R.color.pin_la3))); - pinDetails.add(new PinDetails(getString(R.string.pin_la4_name), getString(R.string.pin_la4_description), getColor(R.color.category_wavegen), getColor(R.color.pin_la4))); - pinDetails.add(new PinDetails(getString(R.string.pin_ac1_name), getString(R.string.pin_ac1_description), getColor(R.color.category_oscilloscope), getColor(R.color.pin_ac1))); - pinDetails.add(new PinDetails(getString(R.string.pin_ch1_name), getString(R.string.pin_ch1_description), getColor(R.color.category_oscilloscope), getColor(R.color.pin_ch1))); - pinDetails.add(new PinDetails(getString(R.string.pin_ch2_name), getString(R.string.pin_ch2_description), getColor(R.color.category_oscilloscope), getColor(R.color.pin_ch2))); - pinDetails.add(new PinDetails(getString(R.string.pin_ch3_name), getString(R.string.pin_ch3_description), getColor(R.color.category_oscilloscope), getColor(R.color.pin_ch3))); - pinDetails.add(new PinDetails(getString(R.string.pin_chg_name), getString(R.string.pin_chg_description), getColor(R.color.category_oscilloscope), getColor(R.color.pin_chg))); - pinDetails.add(new PinDetails(getString(R.string.pin_mic_name), getString(R.string.pin_mic_description), getColor(R.color.category_measurement), getColor(R.color.pin_mic))); - pinDetails.add(new PinDetails(getString(R.string.pin_frq_name), getString(R.string.pin_frq_description), getColor(R.color.category_measurement), getColor(R.color.pin_frq))); - pinDetails.add(new PinDetails(getString(R.string.pin_cap_name), getString(R.string.pin_cap_description), getColor(R.color.category_measurement), getColor(R.color.pin_cap))); - pinDetails.add(new PinDetails(getString(R.string.pin_res_name), getString(R.string.pin_res_description), getColor(R.color.category_measurement), getColor(R.color.pin_res))); - pinDetails.add(new PinDetails(getString(R.string.pin_vol_name), getString(R.string.pin_vol_description), getColor(R.color.category_measurement), getColor(R.color.pin_vol))); - pinDetails.add(new PinDetails(getString(R.string.pin_pcs_name), getString(R.string.pin_pcs_description), getColor(R.color.category_power_source), getColor(R.color.pin_pcs))); - pinDetails.add(new PinDetails(getString(R.string.pin_pv3_name), getString(R.string.pin_pv3_description), getColor(R.color.category_power_source), getColor(R.color.pin_pv3))); - pinDetails.add(new PinDetails(getString(R.string.pin_pv2_name), getString(R.string.pin_pv2_description), getColor(R.color.category_power_source), getColor(R.color.pin_pv2))); - pinDetails.add(new PinDetails(getString(R.string.pin_pv1_name), getString(R.string.pin_pv1_description), getColor(R.color.category_power_source), getColor(R.color.pin_pv1))); - pinDetails.add(new PinDetails(getString(R.string.pin_scl_name), getString(R.string.pin_scl_description), getColor(R.color.category_communication), getColor(R.color.pin_scl))); - pinDetails.add(new PinDetails(getString(R.string.pin_sda_name), getString(R.string.pin_sda_description), getColor(R.color.category_communication), getColor(R.color.pin_sda))); - pinDetails.add(new PinDetails(getString(R.string.pin_vdd_name), getString(R.string.pin_vdd_description), getColor(R.color.category_voltage), getColor(R.color.pin_vdd))); - pinDetails.add(new PinDetails(getString(R.string.pin_sta_name), getString(R.string.pin_sta_description), getColor(R.color.category_communication), getColor(R.color.pin_sta))); - pinDetails.add(new PinDetails(getString(R.string.pin_vpl_name), getString(R.string.pin_vpl_description), getColor(R.color.category_voltage), getColor(R.color.pin_vpl))); - pinDetails.add(new PinDetails(getString(R.string.pin_ena_name), getString(R.string.pin_ena_description), getColor(R.color.category_communication), getColor(R.color.pin_ena))); - pinDetails.add(new PinDetails(getString(R.string.pin_vmi_name), getString(R.string.pin_vmi_description), getColor(R.color.category_voltage), getColor(R.color.pin_vmi))); - pinDetails.add(new PinDetails(getString(R.string.pin_mcl_name), getString(R.string.pin_mcl_description), getColor(R.color.category_communication), getColor(R.color.pin_mcl))); - pinDetails.add(new PinDetails(getString(R.string.pin_pgm_name), getString(R.string.pin_pgm_description), getColor(R.color.category_communication), getColor(R.color.pin_pgm))); - pinDetails.add(new PinDetails(getString(R.string.pin_pgc_name), getString(R.string.pin_pgc_description), getColor(R.color.category_communication), getColor(R.color.pin_pgc))); - pinDetails.add(new PinDetails(getString(R.string.pin_pgd_name), getString(R.string.pin_pgd_description), getColor(R.color.category_communication), getColor(R.color.pin_pgd))); - pinDetails.add(new PinDetails(getString(R.string.pin_nrf_name), getString(R.string.pin_nrf_description), getColor(R.color.category_usb), getColor(R.color.pin_nrf))); - pinDetails.add(new PinDetails(getString(R.string.pin_usb_name), getString(R.string.pin_usb_description), getColor(R.color.category_usb), getColor(R.color.pin_usb))); - pinDetails.add(new PinDetails(getString(R.string.pin_vcc_name), getString(R.string.pin_vcc_description), getColor(R.color.category_voltage), getColor(R.color.pin_vcc))); - pinDetails.add(new PinDetails(getString(R.string.pin_pl5_name), getString(R.string.pin_pl5_description), getColor(R.color.category_voltage), getColor(R.color.pin_pl5))); - pinDetails.add(new PinDetails(getString(R.string.pin_dpl_name), getString(R.string.pin_dpl_description), getColor(R.color.category_usb), getColor(R.color.pin_dpl))); - pinDetails.add(new PinDetails(getString(R.string.pin_dmi_name), getString(R.string.pin_dmi_description), getColor(R.color.category_usb), getColor(R.color.pin_dmi))); - } - - private int getColor(int colorId) { - final Context context = getContext(); - return context == null ? 0 : context.getColor(colorId); - } - - @SuppressLint("ClickableViewAccessibility") - @Override - public boolean onTouch(View v, MotionEvent event) { - ImageView view = (ImageView) v; - view.setScaleType(ImageView.ScaleType.MATRIX); - colorMap.setScaleType(ImageView.ScaleType.MATRIX); - float scale; - - switch (event.getAction() & MotionEvent.ACTION_MASK) { - case MotionEvent.ACTION_DOWN: - matrix.set(view.getImageMatrix()); - savedMatrix.set(matrix); - start.set(event.getX(), event.getY()); - mode = DRAG; - break; - - case MotionEvent.ACTION_UP: - colorMap.setDrawingCacheEnabled(true); - Bitmap clickSpot = Bitmap.createBitmap(colorMap.getDrawingCache()); - colorMap.setDrawingCacheEnabled(false); - try { - int pixel = clickSpot.getPixel((int) event.getX(), (int) event.getY()); - for (PinDetails pin : pinDetails) { - if (pin.getColorID() == Color.rgb(Color.red(pixel), Color.green(pixel), Color.blue(pixel))) { - displayPinDescription(pin); - } - } - } catch (IllegalArgumentException e) {/**/} - break; - - case MotionEvent.ACTION_POINTER_DOWN: - oldDist = spacing(event); - if (oldDist > 5f) { - savedMatrix.set(matrix); - midPoint(mid, event); - mode = ZOOM; - } - break; - - case MotionEvent.ACTION_MOVE: - if (mode == DRAG) { - matrix.set(savedMatrix); - matrix.postTranslate(event.getX() - start.x, event.getY() - start.y); - } else if (mode == ZOOM) { - float newDist = spacing(event); - if (newDist > 5f) { - matrix.set(savedMatrix); - scale = newDist / oldDist; - matrix.postScale(scale, scale, mid.x, mid.y); - } - } - break; - - default: - break; - } - - view.setImageMatrix(matrix); - colorMap.setImageMatrix(matrix); - - return true; - } - - private void displayPinDescription(PinDetails pin) { - final Activity activity = getActivity(); - - if (activity == null) { - return; - } - - final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); - LayoutInflater inflater = getActivity().getLayoutInflater(); - View view = inflater.inflate(R.layout.pin_description_dialog, null); - builder.setView(view); - - ImageView pinColor = view.findViewById(R.id.pin_category_color); - pinColor.setBackgroundColor(pin.getCategoryColor()); - TextView pinTitle = view.findViewById(R.id.pin_description_title); - pinTitle.setText(pin.getName()); - TextView pinDescription = view.findViewById(R.id.pin_description); - pinDescription.setText(pin.getDescription()); - Button dialogButton = view.findViewById(R.id.pin_description_dismiss); - - builder.create(); - final AlertDialog dialog = builder.show(); - - dialogButton.setOnTouchListener((v, event) -> { - view.performClick(); - dialog.dismiss(); - return true; - }); - } - - private float spacing(MotionEvent event) { - float x = 0; - float y = 0; - try { - x = event.getX(0) - event.getX(1); - y = event.getY(0) - event.getY(1); - } catch (Exception e) {/**/} - return (float) Math.sqrt(x * x + y * y); - } - - private void midPoint(PointF point, MotionEvent event) { - float x = 0; - float y = 0; - try { - x = event.getX(0) + event.getX(1); - y = event.getY(0) + event.getY(1); - } catch (Exception e) {/**/} - point.set(x / 2, y / 2); - } -} diff --git a/app/src/main/java/io/pslab/fragment/SettingsFragment.java b/app/src/main/java/io/pslab/fragment/SettingsFragment.java deleted file mode 100644 index 81660737a..000000000 --- a/app/src/main/java/io/pslab/fragment/SettingsFragment.java +++ /dev/null @@ -1,51 +0,0 @@ -package io.pslab.fragment; - -import android.content.SharedPreferences; -import android.os.Bundle; -import androidx.preference.ListPreference; -import androidx.preference.PreferenceFragmentCompat; - -import io.pslab.R; - -/** - * Created by viveksb007 on 15/3/17. - */ - -public class SettingsFragment extends PreferenceFragmentCompat implements SharedPreferences.OnSharedPreferenceChangeListener { - - public static final String KEY_EXPORT_DATA_FORMAT_LIST = "export_data_format_list"; - private ListPreference listPreference; - - public static SettingsFragment newInstance() { - return new SettingsFragment(); - } - - public SettingsFragment() { - } - - @Override - public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { - setPreferencesFromResource(R.xml.settings_preference_fragment, rootKey); - listPreference = (ListPreference) getPreferenceScreen().findPreference(KEY_EXPORT_DATA_FORMAT_LIST); - } - - @Override - public void onResume() { - super.onResume(); - listPreference.setSummary("Current format is " + listPreference.getEntry().toString()); - getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this); - } - - @Override - public void onPause() { - super.onPause(); - getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this); - } - - @Override - public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { - if (KEY_EXPORT_DATA_FORMAT_LIST.equals(key)) { - listPreference.setSummary("Current format is " + listPreference.getEntry().toString()); - } - } -} diff --git a/app/src/main/java/io/pslab/fragment/SoundMeterDataFragment.java b/app/src/main/java/io/pslab/fragment/SoundMeterDataFragment.java deleted file mode 100644 index 0759487eb..000000000 --- a/app/src/main/java/io/pslab/fragment/SoundMeterDataFragment.java +++ /dev/null @@ -1,606 +0,0 @@ -package io.pslab.fragment; - -import android.graphics.Bitmap; -import android.graphics.Color; -import android.location.Location; -import android.os.Bundle; -import android.os.Environment; -import android.os.Handler; -import android.os.HandlerThread; -import android.os.Message; -import android.util.Log; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.fragment.app.Fragment; - -import com.github.anastr.speedviewlib.PointerSpeedometer; -import com.github.mikephil.charting.charts.LineChart; -import com.github.mikephil.charting.components.Legend; -import com.github.mikephil.charting.components.LimitLine; -import com.github.mikephil.charting.components.XAxis; -import com.github.mikephil.charting.components.YAxis; -import com.github.mikephil.charting.data.Entry; -import com.github.mikephil.charting.data.LineData; -import com.github.mikephil.charting.data.LineDataSet; - -import java.io.File; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.util.ArrayDeque; -import java.util.ArrayList; -import java.util.Date; -import java.util.Deque; -import java.util.List; -import java.util.Locale; -import java.util.concurrent.Executors; -import java.util.concurrent.ScheduledExecutorService; -import java.util.concurrent.ScheduledFuture; -import java.util.concurrent.TimeUnit; - -import butterknife.BindView; -import butterknife.ButterKnife; -import butterknife.Unbinder; -import io.pslab.R; -import io.pslab.activity.SoundMeterActivity; -import io.pslab.interfaces.OperationCallback; -import io.pslab.models.PSLabSensor; -import io.pslab.models.SensorDataBlock; -import io.pslab.models.SoundData; -import io.pslab.others.AudioJack; -import io.pslab.others.CSVDataLine; -import io.pslab.others.CSVLogger; - -import static io.pslab.others.CSVLogger.CSV_DIRECTORY; - -public class SoundMeterDataFragment extends Fragment implements OperationCallback { - - public static final String TAG = "SoundMeterFragment"; - private static final CSVDataLine CSV_HEADER = - new CSVDataLine() - .add("Timestamp") - .add("DateTime") - .add("Readings") - .add("Latitude") - .add("Longitude"); - private static final String KEY_LOUDNESS = "key loudness"; - private static final String KEY_MAX_LOUDNESS = "key max loudness"; - private static final String KEY_MIN_LOUDNESS = "key min loudness"; - private static final String KEY_AVG_LOUDNESS = "key average loudness"; - private static final int ANIMATION_BUFFER_SIZE = 500; - - private static double refIntensity; - private static int movingAvgWindowSize; - - @BindView(R.id.sound_max) - TextView statMax; - @BindView(R.id.sound_min) - TextView statMin; - @BindView(R.id.sound_avg) - TextView statMean; - @BindView(R.id.label_sound_sensor) - TextView sensorLabel; - @BindView(R.id.chart_sound_meter) - LineChart mChart; - @BindView(R.id.sound_meter) - PointerSpeedometer decibelMeter; - - private SoundMeterActivity soundMeter; - private View rootView; - private Unbinder unbinder; - private AudioJack audioJack; - private List recordedSoundData; - private int counter; - - /** - * Thread to handle processing in background - */ - private HandlerThread bgThread; - - /** - * Handler for the background Thread - */ - private Handler bgThreadHandler; - - /** - * Handler for the UI Thread, so that background thread could communicate with it - */ - private Handler uiHandler; - - /** - * Scheduled executor to view recorded data - */ - private ScheduledExecutorService scheduledExecutorService; - - /** - * Recorded data player handle to cancel the scheduled task created by scheduledExecutorService - */ - ScheduledFuture dataPlayerHandle; - - private boolean isProcessing; - - /** - * variable to store the starting time of recording - */ - private long recordStartTime; - - /** - * variable to store resume time to calculate offset - */ - private long resumeTime; - - /** - * variable to store the current time when playing is paused - */ - private long pauseTime; - - /** - * offset to keep record of time that has already been played before pausing - */ - private long offset; - - private long block; - - /* - Variables to store values during processing - */ - private double maxRmsAmp; - private double minRmsAmp; - private double rmsSum; - - /** - * Double ended queue to how chart entries for current window - */ - private Deque chartQ; - - /** - * Window to calculate the moving average - */ - private Deque movingAvgWindow; - - public static SoundMeterDataFragment newInstance() { - return new SoundMeterDataFragment(); - } - - public static void setParameters(double refIntensity, int movingAvgWindowSize) { - SoundMeterDataFragment.refIntensity = refIntensity; - SoundMeterDataFragment.movingAvgWindowSize = movingAvgWindowSize; - } - - /* ******************************************************************************************** - * Fragment Lifecycle Methods - * ******************************************************************************************** - */ - @Override - public void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - soundMeter = (SoundMeterActivity) getActivity(); - scheduledExecutorService = Executors.newSingleThreadScheduledExecutor(); - chartQ = new ArrayDeque<>(); - counter = 0; - } - - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { - rootView = inflater.inflate(R.layout.fragment_sound_meter_data, container, false); - unbinder = ButterKnife.bind(this, rootView); - setupInstruments(); - return rootView; - } - - @Override - public void onResume() { - super.onResume(); - startBackgroundThread(); - if(soundMeter.viewingData) { - /* - * reset counter to 0 - */ - recordedSoundData = new ArrayList<>(); - recordedSoundData.addAll(soundMeter.recordedSoundData); - } else { - /* - * Start processing the sound from the environment - */ - startProcessing(); - } - } - - @Override - public void onSaveInstanceState(@NonNull Bundle outState) { - super.onSaveInstanceState(outState); - } - - @Override - public void onPause() { - super.onPause(); - if(soundMeter.playingData) { - pausePlaying(); - } else if (isProcessing) { - stopProcessing(); - } - stopBackgroundThread(); - } - - @Override - public void onDestroyView() { - super.onDestroyView(); - unbinder.unbind(); - } - - @Override - public void onDestroy() { - super.onDestroy(); - soundMeter = null; - scheduledExecutorService = null; - chartQ.clear(); - chartQ = null; - } - - /* ******************************************************************************************** - * Initializer methods - * ******************************************************************************************** - */ - private void setupInstruments() { - decibelMeter.setMaxSpeed(200.0f); - decibelMeter.setMinSpeed(0.0f); - decibelMeter.setWithTremble(false); - - YAxis yAxis = mChart.getAxisLeft(); - - yAxis.setAxisMaximum(200); - yAxis.setAxisMinimum(0); - yAxis.setLabelCount(40); - yAxis.setDrawGridLines(false); - yAxis.setTextColor(Color.WHITE); - LimitLine dangerLine = new LimitLine(100, getString(R.string.limit_dangerous)); - dangerLine.setLineColor(Color.RED); - dangerLine.setTextColor(Color.RED); - yAxis.addLimitLine(dangerLine); - - XAxis x = mChart.getXAxis(); - - x.setTextColor(Color.WHITE); - x.setDrawGridLines(true); - x.setAvoidFirstLastClipping(true); - - - mChart.setTouchEnabled(true); - mChart.setHighlightPerDragEnabled(true); - mChart.setDragEnabled(true); - mChart.setScaleEnabled(true); - mChart.setDrawGridBackground(false); - mChart.setPinchZoom(true); - mChart.setScaleYEnabled(true); - mChart.setBackgroundColor(Color.BLACK); - mChart.getDescription().setEnabled(false); - - LineData data = new LineData(); - mChart.setData(data); - - Legend l = mChart.getLegend(); - l.setForm(Legend.LegendForm.LINE); - l.setTextColor(Color.WHITE); - - } - - /* ******************************************************************************************** - * Members related to handling Background Thread - * ******************************************************************************************** - */ - private void startBackgroundThread() { - Log.i(TAG, "starting background thread"); - bgThread = new HandlerThread("Audio Recorder Thread"); - bgThread.start(); - bgThreadHandler = new Handler(bgThread.getLooper()); - uiHandler = new UIHandler(this); - Log.i(TAG, "background Thread started"); - } - - private void stopBackgroundThread() { - Log.i(TAG, "stopping background thread"); - if (bgThread != null) { - bgThread.quitSafely(); - bgThread = null; - } - bgThreadHandler = null; - uiHandler = null; - Log.i(TAG, "Background Thread Stopped"); - } - - /* ******************************************************************************************** - * Methods related to sound processing - * ******************************************************************************************** - */ - private void startProcessing() { - isProcessing = true; - audioJack = new AudioJack("input"); - recordStartTime = System.currentTimeMillis(); - movingAvgWindow = new ArrayDeque<>(); - bgThreadHandler.post(() -> { - while (isProcessing) { - /* - * read the audio samples from the hardware device - */ - short[] buffer = audioJack.read(); - - /* - * Calculate the root mean square amplitude of the values in the buffer. - */ - double sqrsum = 0.0; - for (short val : buffer) { - sqrsum += Math.pow(val, 2); - } - double rmsamp = Math.sqrt((sqrsum / buffer.length)); - - /* - * update the moving average window - */ - if ((movingAvgWindow.size() >= movingAvgWindowSize)) { - rmsSum -= movingAvgWindow.removeFirst(); - } - movingAvgWindow.addLast(rmsamp); - rmsSum += rmsamp; - - /* - * Calculate average, max and min root-mean-square(rms) amplitude - */ - double avgRmsAmp = rmsSum / movingAvgWindow.size(); - maxRmsAmp = Math.max(rmsamp, maxRmsAmp); - minRmsAmp = Math.min(rmsamp, minRmsAmp); - - /* - * Calculate the current, max, min and average loudness for the current instant - */ - double loudness = rmsamp > 0 ? (10 * Math.log10(rmsamp / refIntensity)) : 1; - double maxLoudness = maxRmsAmp > 0 ? (10 * Math.log10(maxRmsAmp / refIntensity)) : 1; - double minLoudness = minRmsAmp > 0 ? (10 * Math.log10(minRmsAmp / refIntensity)) : 1; - double avgLoudness = avgRmsAmp > 0 ? (10 * Math.log10(avgRmsAmp / refIntensity)) : 1; - - /* - * Bundle the values to be sent to the ui handler - */ - Bundle bundle = new Bundle(); - bundle.putDouble(KEY_LOUDNESS, loudness); - bundle.putDouble(KEY_MAX_LOUDNESS, maxLoudness); - bundle.putDouble(KEY_MIN_LOUDNESS, minLoudness); - bundle.putDouble(KEY_AVG_LOUDNESS, avgLoudness); - Message msg = new Message(); - msg.setData(bundle); - uiHandler.sendMessage(msg); - } - }); - } - - private void stopProcessing() { - isProcessing = false; - audioJack.release(); - audioJack = null; - resetViews(); - } - - /* ******************************************************************************************** - * Methods related to data visualization - * ******************************************************************************************** - */ - private void updateMeter(double loudness, double avgLoudness, double maxLoudness, double minLoudness) { - decibelMeter.setSpeedAt((float) loudness); - statMax.setText(String.format(Locale.getDefault(), PSLabSensor.SOUNDMETER_DATA_FORMAT, maxLoudness)); - statMin.setText(String.format(Locale.getDefault(), PSLabSensor.SOUNDMETER_DATA_FORMAT, minLoudness)); - statMean.setText(String.format(Locale.getDefault(), PSLabSensor.SOUNDMETER_DATA_FORMAT, avgLoudness)); - } - - private void updateChart(double loudness, double avgLoudness, double maxLoudness, double minLoudness, long startTime, long offset) { - float x = (offset + (System.currentTimeMillis() - startTime)) / 1000f; - chartQ.addLast(new Entry(x, (float)loudness)); - if(chartQ.size() > ANIMATION_BUFFER_SIZE) - chartQ.removeFirst(); - List entries = new ArrayList<>(chartQ); - LineDataSet dataSet = new LineDataSet(entries, getString(R.string.sound_chart_label)); - dataSet.setDrawCircles(false); - dataSet.setDrawValues(true); - dataSet.setLineWidth(0.5f); - mChart.setData(new LineData(dataSet)); - mChart.notifyDataSetChanged(); - mChart.invalidate(); - } - - private void resetViews() { - chartQ.clear(); - mChart.clear(); - decibelMeter.setSpeedAt(0.0f); - Log.i(TAG,"view reset complete"); - } - - /* ******************************************************************************************** - * Methods related to view previously recorded data - * ******************************************************************************************** - */ - - private void playRecordedData(long startTime, long offset) { - long period = ( recordedSoundData.get(recordedSoundData.size()-1).getTime() - - recordedSoundData.get(0).getTime() ) / recordedSoundData.size(); - dataPlayerHandle = scheduledExecutorService.scheduleWithFixedDelay(()-> { - SoundData soundData = recordedSoundData.get(counter); - uiHandler.post(() -> { - if(soundMeter.playingData) { - updateChart(soundData.getdB(), soundData.getAvgLoudness(), - soundData.getMaxLoudness(), soundData.getMinLoudness(), startTime, offset); - updateMeter(soundData.getdB(), soundData.getAvgLoudness(), - soundData.getMaxLoudness(), soundData.getMinLoudness()); - } - }); - counter ++; - if(counter == recordedSoundData.size()) { - stopPlaying(); - } - }, 0, period, TimeUnit.MILLISECONDS); - } - - private void startPlaying() { - soundMeter.startedPlay = true; - resumeTime = System.currentTimeMillis(); - playRecordedData(resumeTime, 0); - } - - private void stopPlaying() { - uiHandler.post(()-> { - dataPlayerHandle.cancel(false); - soundMeter.playingData = false; - soundMeter.startedPlay = false; - soundMeter.invalidateOptionsMenu(); - resetViews(); - counter = 0; - resumeTime = 0; - offset = 0; - pauseTime = 0; - }); - } - - private void resumePlaying() { - offset += pauseTime - resumeTime; - resumeTime = System.currentTimeMillis(); - playRecordedData(resumeTime, offset); - } - - private void pausePlaying() { - uiHandler.post(()-> { - dataPlayerHandle.cancel(false); - pauseTime = System.currentTimeMillis(); - soundMeter.playingData = false; - soundMeter.invalidateOptionsMenu(); - }); - } - - /** - * Method to play data which was previously recorded - */ - @Override - public void playData() { - startPlaying(); - } - - /** - * Method to pause playing - */ - public void pause() { - pausePlaying(); - } - - /** - * Method to resume playing - */ - public void resume() { - resumePlaying(); - } - - /** - * Method to stop playing the previously recorded data - */ - @Override - public void stopData() { - stopPlaying(); - } - - /* ******************************************************************************************** - * Method Related to saving sound data - * ******************************************************************************************** - */ - private void writeLog(long timestamp, float dB, float avgLoudness, float maxLoudness, float minLoudness) { - SoundData soundData; - if (getActivity() != null && soundMeter.isRecording) { - if (soundMeter.writeHeaderToFile) { - soundMeter.csvLogger.prepareLogFile(); - soundMeter.csvLogger.writeMetaData(getResources().getString(R.string.lux_meter)); - soundMeter.csvLogger.writeCSVFile(CSV_HEADER); - block = timestamp; - soundMeter.recordSensorDataBlockID(new SensorDataBlock(timestamp, soundMeter.getSensorName())); - soundMeter.writeHeaderToFile = !soundMeter.writeHeaderToFile; - } - if (soundMeter.addLocation && soundMeter.gpsLogger.isGPSEnabled()) { - String dateTime = CSVLogger.FILE_NAME_FORMAT.format(new Date(timestamp)); - Location location = soundMeter.gpsLogger.getDeviceLocation(); - soundMeter.csvLogger.writeCSVFile( - new CSVDataLine() - .add(timestamp) - .add(dateTime) - .add(dB) - .add((location != null)?location.getLatitude():0.0d) - .add((location != null)?location.getLongitude():0.0d)); - soundData = new SoundData(timestamp, block, dB, avgLoudness, maxLoudness, minLoudness, - (location!=null)?location.getLatitude():0.0d, (location!=null)?location.getLongitude():0.0d); - } else { - String dateTime = CSVLogger.FILE_NAME_FORMAT.format(new Date(timestamp)); - soundMeter.csvLogger.writeCSVFile( - new CSVDataLine() - .add(timestamp) - .add(dateTime) - .add(dB) - .add(0.0) - .add(0.0)); - soundData = new SoundData(timestamp, block, dB, avgLoudness, maxLoudness, minLoudness, - 0.0, 0.0); - } - soundMeter.recordSensorData(soundData); - } else { - soundMeter.writeHeaderToFile = true; - } - } - - @Override - public void saveGraph() { - soundMeter.csvLogger.prepareLogFile(); - soundMeter.csvLogger.writeMetaData(getResources().getString(R.string.lux_meter)); - soundMeter.csvLogger.writeCSVFile(CSV_HEADER); - for (SoundData soundData : soundMeter.recordedSoundData) { - soundMeter.csvLogger.writeCSVFile( - new CSVDataLine() - .add(soundData.getTime()) - .add(CSVLogger.FILE_NAME_FORMAT.format(new Date(soundData.getTime()))) - .add(soundData.getdB()) - .add(soundData.getLat()) - .add(soundData.getLon())); - } - View view = rootView.findViewById(R.id.soundmeter_linearlayout); - view.setDrawingCacheEnabled(true); - Bitmap b = view.getDrawingCache(); - try { - b.compress(Bitmap.CompressFormat.JPEG, 100, new FileOutputStream(Environment.getExternalStorageDirectory().getAbsolutePath() + - File.separator + CSV_DIRECTORY + File.separator + soundMeter.getSensorName() + - File.separator + CSVLogger.FILE_NAME_FORMAT.format(new Date()) + "_graph.jpg")); - } catch (FileNotFoundException e) { - e.printStackTrace(); - } - } - - /** - * The implementation of Handler class for the UI Thread - */ - private static class UIHandler extends Handler { - private SoundMeterDataFragment soundMeterDataFragment; - - UIHandler(SoundMeterDataFragment fragment) { - this.soundMeterDataFragment = fragment; - } - - @Override - public void handleMessage(Message msg) { //handle the message passed by the background thread which is processing the audio - if (soundMeterDataFragment.isResumed()) { - Bundle bundle = msg.getData(); - double loudness = bundle.getDouble(KEY_LOUDNESS); - double maxLoudness = bundle.getDouble(KEY_MAX_LOUDNESS); - double minLoudness = bundle.getDouble(KEY_MIN_LOUDNESS); - double avgLoudness = bundle.getDouble(KEY_AVG_LOUDNESS); - soundMeterDataFragment.updateMeter(loudness, avgLoudness, maxLoudness, minLoudness); - soundMeterDataFragment.updateChart(loudness, avgLoudness, maxLoudness, minLoudness, soundMeterDataFragment.recordStartTime, 0); - soundMeterDataFragment.writeLog(System.currentTimeMillis(), (float) loudness, (float)avgLoudness, (float)maxLoudness, (float)minLoudness); - } - } - } - -} diff --git a/app/src/main/java/io/pslab/fragment/SoundmeterSettingsFragment.java b/app/src/main/java/io/pslab/fragment/SoundmeterSettingsFragment.java deleted file mode 100644 index fdf3a30f4..000000000 --- a/app/src/main/java/io/pslab/fragment/SoundmeterSettingsFragment.java +++ /dev/null @@ -1,64 +0,0 @@ -package io.pslab.fragment; - -import android.content.SharedPreferences; -import android.os.Bundle; -import androidx.preference.CheckBoxPreference; -import androidx.preference.PreferenceFragmentCompat; -import androidx.preference.PreferenceManager; - -import io.pslab.R; -import io.pslab.others.PSLabPermission; - -/** - * @author reckoner1429 - */ -public class SoundmeterSettingsFragment extends PreferenceFragmentCompat implements SharedPreferences.OnSharedPreferenceChangeListener { - - - public static final String KEY_INCLUDE_LOCATION = "include_location_sensor_data"; - - private CheckBoxPreference locationPreference; - private PSLabPermission psLabPermission; - private SharedPreferences sharedPref; - - @Override - public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { - setPreferencesFromResource(R.xml.sound_meter_settings,rootKey); - locationPreference = (CheckBoxPreference) getPreferenceScreen().findPreference(KEY_INCLUDE_LOCATION); - - sharedPref = PreferenceManager.getDefaultSharedPreferences(getActivity()); - psLabPermission = PSLabPermission.getInstance(); - if (!psLabPermission.checkPermissions(getActivity(), PSLabPermission.MAP_PERMISSION)) { - SharedPreferences.Editor editor = sharedPref.edit(); - editor.putBoolean(LuxMeterSettingFragment.KEY_INCLUDE_LOCATION, true); - editor.apply(); - } - } - @Override - public void onResume() { - super.onResume(); - locationPreference.setChecked(sharedPref.getBoolean(KEY_INCLUDE_LOCATION, true)); - getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this); - } - - @Override - public void onPause() { - super.onPause(); - getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this); - } - - - @Override - public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String s) { - switch (s) { - case KEY_INCLUDE_LOCATION: - if (locationPreference.isChecked()) { - psLabPermission.checkPermissions( - getActivity(), PSLabPermission.MAP_PERMISSION); - } - break; - default: - break; - } - } -} diff --git a/app/src/main/java/io/pslab/fragment/ThermometerDataFragment.java b/app/src/main/java/io/pslab/fragment/ThermometerDataFragment.java deleted file mode 100644 index 7005352a0..000000000 --- a/app/src/main/java/io/pslab/fragment/ThermometerDataFragment.java +++ /dev/null @@ -1,627 +0,0 @@ -package io.pslab.fragment; - -import android.graphics.Bitmap; -import android.graphics.Color; -import android.hardware.Sensor; -import android.hardware.SensorEvent; -import android.hardware.SensorEventListener; -import android.hardware.SensorManager; -import android.location.Location; -import android.os.Bundle; -import android.os.Environment; -import android.os.Handler; -import androidx.annotation.NonNull; - -import com.google.android.material.snackbar.Snackbar; -import androidx.fragment.app.Fragment; - -import androidx.preference.PreferenceManager; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.TextView; - -import com.github.anastr.speedviewlib.PointerSpeedometer; -import com.github.mikephil.charting.charts.LineChart; -import com.github.mikephil.charting.components.Legend; -import com.github.mikephil.charting.components.XAxis; -import com.github.mikephil.charting.components.YAxis; -import com.github.mikephil.charting.data.Entry; -import com.github.mikephil.charting.data.LineData; -import com.github.mikephil.charting.data.LineDataSet; - -import java.io.File; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Date; -import java.util.Locale; -import java.util.Timer; -import java.util.TimerTask; - -import butterknife.BindView; -import butterknife.ButterKnife; -import butterknife.Unbinder; -import io.pslab.DataFormatter; -import io.pslab.R; -import io.pslab.activity.ThermometerActivity; -import io.pslab.communication.ScienceLab; -import io.pslab.communication.peripherals.I2C; -import io.pslab.communication.sensors.SHT21; -import io.pslab.interfaces.OperationCallback; -import io.pslab.models.PSLabSensor; -import io.pslab.models.SensorDataBlock; -import io.pslab.models.ThermometerData; -import io.pslab.others.CSVDataLine; -import io.pslab.others.CSVLogger; -import io.pslab.others.CustomSnackBar; -import io.pslab.others.ScienceLabCommon; - -import static android.content.Context.SENSOR_SERVICE; -import static io.pslab.others.CSVLogger.CSV_DIRECTORY; - -public class ThermometerDataFragment extends Fragment implements OperationCallback { - - private static final String TEMPERATURE = "temperature"; - private static final CSVDataLine CSV_HEADER = new CSVDataLine() - .add("Timestamp") - .add("DateTime") - .add("Readings") - .add("Latitude") - .add("Longitude"); - private static int sensorType = 0; - private static int highLimit = 50; - private static int updatePeriod = 1000; - private long timeElapsed; - private int count = 0, turns = 0; - private float sum = 0; - private boolean returningFromPause = false; - private static String unit = "°C"; - private float tempValue = -1; - - private enum THERMOMETER_SENSOR {INBUILT_SENSOR, SHT21_SENSOR} - - @BindView(R.id.thermo_max) - TextView statMax; - @BindView(R.id.thermo_min) - TextView statMin; - @BindView(R.id.thermo_avg) - TextView statMean; - @BindView(R.id.label_thermo_sensor) - TextView sensorLabel; - @BindView(R.id.chart_thermo_meter) - LineChart mChart; - @BindView(R.id.thermo_meter) - PointerSpeedometer thermometer; - @BindView(R.id.label_thermo_stat_min) - TextView label_statMin; - @BindView(R.id.label_thermo_stat_avg) - TextView label_statAvg; - @BindView(R.id.label_thermo_stat_max) - TextView label_statMax; - - private Timer graphTimer; - private SensorManager sensorManager; - private Sensor sensor; - private long startTime, block; - private ArrayList entries; - private ArrayList recordedThermoArray; - private ThermometerData sensorData; - private float currentMin = 125; - private float currentMax = -40; - private YAxis y; - private Unbinder unbinder; - private long previousTimeElapsed = (System.currentTimeMillis() - startTime) / updatePeriod; - private ThermometerActivity thermoSensor; - private ThermometerSettingsFragment thermoSettings; - private View rootView; - - public static ThermometerDataFragment newInstance() { - return new ThermometerDataFragment(); - } - - public static void setParameters(int updatePeriod, String type, String unit) { - ThermometerDataFragment.updatePeriod = updatePeriod; - ThermometerDataFragment.sensorType = Integer.valueOf(type); - ThermometerDataFragment.unit = unit; - - } - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - startTime = System.currentTimeMillis(); - entries = new ArrayList<>(); - thermoSensor = (ThermometerActivity) getActivity(); - } - - @Override - public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { - rootView = inflater.inflate(R.layout.activity_thermometer, container, false); - unbinder = ButterKnife.bind(this, rootView); - setupInstruments(); - return rootView; - } - - @Override - public void onResume() { - super.onResume(); - if (thermoSensor.playingData) { - sensorLabel.setText(getResources().getString(R.string.thermometer)); - recordedThermoArray = new ArrayList<>(); - resetInstrumentData(); - playRecordedData(); - } else if (thermoSensor.viewingData) { - sensorLabel.setText(getResources().getString(R.string.thermometer)); - recordedThermoArray = new ArrayList<>(); - resetInstrumentData(); - plotAllRecordedData(); - } else if (!thermoSensor.isRecording) { - updateGraphs(); - sum = 0; - count = 0; - setUnit(); - entries.clear(); - mChart.clear(); - mChart.invalidate(); - initiateThermoSensor(sensorType); - } else if (returningFromPause) { - updateGraphs(); - } - } - - @Override - public void onDestroyView() { - super.onDestroyView(); - if (graphTimer != null) { - graphTimer.cancel(); - } - if (sensorManager != null) { - sensorManager.unregisterListener(thermoSensorEventListener); - } - unbinder.unbind(); - } - - private void plotAllRecordedData() { - recordedThermoArray.addAll(thermoSensor.recordedThermometerData); - if (recordedThermoArray.size() != 0) { - for (ThermometerData d : recordedThermoArray) { - if (currentMax < d.getTemp()) { - currentMax = d.getTemp(); - } - if (currentMin > d.getTemp()) { - currentMin = d.getTemp(); - } - Entry entry = new Entry((float) (d.getTime() - d.getBlock()) / 1000, d.getTemp()); - entries.add(entry); - thermometer.setWithTremble(false); - thermometer.setSpeedAt(d.getTemp()); - sum += entry.getY(); - } - y.setAxisMaximum(currentMax); - y.setAxisMinimum(currentMin); - y.setLabelCount(10); - statMax.setText(String.format(Locale.getDefault(), PSLabSensor.THERMOMETER_DATA_FORMAT, currentMax)); - statMin.setText(String.format(Locale.getDefault(), PSLabSensor.THERMOMETER_DATA_FORMAT, currentMin)); - statMean.setText(String.format(Locale.getDefault(), PSLabSensor.THERMOMETER_DATA_FORMAT, (sum / recordedThermoArray.size()))); - - LineDataSet dataSet = new LineDataSet(entries, PreferenceManager.getDefaultSharedPreferences(getActivity()).getString(thermoSettings.KEY_THERMO_UNIT, "°C")); - dataSet.setDrawCircles(false); - dataSet.setDrawValues(false); - dataSet.setLineWidth(2); - LineData data = new LineData(dataSet); - - mChart.setData(data); - mChart.notifyDataSetChanged(); - mChart.setVisibleXRangeMaximum(800); - mChart.moveViewToX(data.getEntryCount()); - mChart.invalidate(); - } - } - - private void playRecordedData() { - recordedThermoArray.addAll(thermoSensor.recordedThermometerData); - try { - if (recordedThermoArray.size() > 1) { - ThermometerData i = recordedThermoArray.get(1); - long timeGap = i.getTime() - i.getBlock(); - processRecordedData(timeGap); - } else { - processRecordedData(0); - } - } catch (IllegalArgumentException e) { - CustomSnackBar.showSnackBar(getActivity().findViewById(android.R.id.content), - getString(R.string.no_data_fetched), null, null, Snackbar.LENGTH_SHORT); - } - } - - private void processRecordedData(long timeGap) { - final Handler handler = new Handler(); - if (graphTimer != null) { - graphTimer.cancel(); - } else { - graphTimer = new Timer(); - } - graphTimer.schedule(new TimerTask() { - @Override - public void run() { - handler.post(new Runnable() { - @Override - public void run() { - if (thermoSensor.playingData) { - try { - ThermometerData d = recordedThermoArray.get(turns); - turns++; - if (currentMax < d.getTemp()) { - currentMax = d.getTemp(); - statMax.setText(String.format(Locale.getDefault(), PSLabSensor.THERMOMETER_DATA_FORMAT, d.getTemp())); - } - if (currentMin > d.getTemp()) { - currentMin = d.getTemp(); - statMin.setText(String.format(Locale.getDefault(), PSLabSensor.THERMOMETER_DATA_FORMAT, d.getTemp())); - } - y.setAxisMaximum(currentMax); - y.setAxisMinimum(currentMin); - y.setLabelCount(10); - thermometer.setWithTremble(false); - thermometer.setSpeedAt(d.getTemp()); - - Entry entry = new Entry((float) (d.getTime() - d.getBlock()) / 1000, d.getTemp()); - entries.add(entry); - count++; - sum += entry.getY(); - statMean.setText(DataFormatter.formatDouble((sum / count), PSLabSensor.THERMOMETER_DATA_FORMAT)); - - LineDataSet dataSet = new LineDataSet(entries, PreferenceManager.getDefaultSharedPreferences(getActivity()).getString(thermoSettings.KEY_THERMO_UNIT.toString(), "°C")); - dataSet.setDrawCircles(false); - dataSet.setDrawValues(false); - dataSet.setLineWidth(2); - LineData data = new LineData(dataSet); - - mChart.setData(data); - mChart.notifyDataSetChanged(); - mChart.setVisibleXRangeMaximum(800); - mChart.moveViewToX(data.getEntryCount()); - mChart.invalidate(); - } catch (IndexOutOfBoundsException e) { - graphTimer.cancel(); - graphTimer = null; - turns = 0; - thermoSensor.playingData = false; - thermoSensor.startedPlay = false; - thermoSensor.invalidateOptionsMenu(); - } - } - } - }); - } - }, 0, timeGap); - } - - @Override - public void stopData() { - if (graphTimer != null) { - graphTimer.cancel(); - graphTimer = null; - } - recordedThermoArray.clear(); - entries.clear(); - plotAllRecordedData(); - thermoSensor.startedPlay = false; - thermoSensor.playingData = false; - turns = 0; - thermoSensor.invalidateOptionsMenu(); - } - - @Override - public void playData() { - resetInstrumentData(); - thermoSensor.startedPlay = true; - try { - if (recordedThermoArray.size() > 1) { - ThermometerData i = recordedThermoArray.get(1); - long timeGap = i.getTime() - i.getBlock(); - processRecordedData(timeGap); - } else { - processRecordedData(0); - } - } catch (IllegalArgumentException e) { - CustomSnackBar.showSnackBar(getActivity().findViewById(android.R.id.content), - getString(R.string.no_data_fetched), null, null, Snackbar.LENGTH_SHORT); - } - } - - @Override - public void saveGraph() { - thermoSensor.csvLogger.prepareLogFile(); - thermoSensor.csvLogger.writeMetaData(getResources().getString(R.string.thermometer)); - thermoSensor.csvLogger.writeCSVFile(CSV_HEADER); - for (ThermometerData thermometerData : thermoSensor.recordedThermometerData) { - thermoSensor.csvLogger.writeCSVFile( - new CSVDataLine() - .add(thermometerData.getTime()) - .add(CSVLogger.FILE_NAME_FORMAT.format(new Date(thermometerData.getTime()))) - .add(thermometerData.getTemp()) - .add(thermometerData.getLat()) - .add(thermometerData.getLon()) - ); - } - View view = rootView.findViewById(R.id.thermometer_linearlayout); - view.setDrawingCacheEnabled(true); - Bitmap b = view.getDrawingCache(); - try { - b.compress(Bitmap.CompressFormat.JPEG, 100, new FileOutputStream(Environment.getExternalStorageDirectory().getAbsolutePath() + - File.separator + CSV_DIRECTORY + File.separator + thermoSensor.getSensorName() + - File.separator + CSVLogger.FILE_NAME_FORMAT.format(new Date()) + "_graph.jpg")); - } catch (FileNotFoundException e) { - e.printStackTrace(); - } - } - - - private void setupInstruments() { - setUnit(); - XAxis x = mChart.getXAxis(); - this.y = mChart.getAxisLeft(); - YAxis y2 = mChart.getAxisRight(); - - mChart.setTouchEnabled(true); - mChart.setHighlightPerDragEnabled(true); - mChart.setDragEnabled(true); - mChart.setScaleEnabled(true); - mChart.setDrawGridBackground(false); - mChart.setPinchZoom(true); - mChart.setScaleYEnabled(true); - mChart.setBackgroundColor(Color.BLACK); - mChart.getDescription().setEnabled(false); - - LineData data = new LineData(); - mChart.setData(data); - - Legend l = mChart.getLegend(); - l.setForm(Legend.LegendForm.LINE); - l.setTextColor(Color.WHITE); - - x.setTextColor(Color.WHITE); - x.setDrawGridLines(true); - x.setAvoidFirstLastClipping(true); - - y.setTextColor(Color.WHITE); - y.setAxisMaximum(currentMax); - y.setAxisMinimum(currentMin); - y.setDrawGridLines(true); - y.setLabelCount(10); - - y2.setDrawGridLines(false); - y2.setMaxWidth(0); - } - - @Override - public void onPause() { - super.onPause(); - if (graphTimer != null) { - returningFromPause = true; - graphTimer.cancel(); - graphTimer = null; - if (thermoSensor.playingData) { - thermoSensor.finish(); - } - } - } - - private void updateGraphs() { - final Handler handler = new Handler(); - if (graphTimer != null) { - graphTimer.cancel(); - } - graphTimer = new Timer(); - graphTimer.schedule(new TimerTask() { - @Override - public void run() { - handler.post(new Runnable() { - @Override - public void run() { - try { - visualizeData(); - } catch (NullPointerException e) { - /* Pass for another refresh round */ - } - } - }); - } - }, 0, updatePeriod); - } - - private void writeLogToFile(long timestamp, float sensorReading) { - if (getActivity() != null && thermoSensor.isRecording) { - if (thermoSensor.writeHeaderToFile) { - thermoSensor.csvLogger.prepareLogFile(); - thermoSensor.csvLogger.writeMetaData(getResources().getString(R.string.thermometer)); - thermoSensor.csvLogger.writeCSVFile(CSV_HEADER); - block = timestamp; - thermoSensor.recordSensorDataBlockID(new SensorDataBlock(timestamp, thermoSensor.getSensorName())); - thermoSensor.writeHeaderToFile = !thermoSensor.writeHeaderToFile; - } - if (thermoSensor.addLocation && thermoSensor.gpsLogger.isGPSEnabled()) { - String dateTime = CSVLogger.FILE_NAME_FORMAT.format(new Date(timestamp)); - Location location = thermoSensor.gpsLogger.getDeviceLocation(); - thermoSensor.csvLogger.writeCSVFile( - new CSVDataLine() - .add(timestamp) - .add(dateTime) - .add(sensorReading) - .add(location.getLatitude()) - .add(location.getLongitude()) - ); - sensorData = new ThermometerData(timestamp, block, tempValue, location.getLatitude(), location.getLongitude()); - } else { - thermoSensor.csvLogger.writeCSVFile( - new CSVDataLine() - .add(timestamp) - .add(CSVLogger.FILE_NAME_FORMAT.format(new Date(timestamp))) - .add(sensorReading) - .add(0.0) - .add(0.0) - ); - sensorData = new ThermometerData(timestamp, block, tempValue, 0.0, 0.0); - } - thermoSensor.recordSensorData(sensorData); - } else { - thermoSensor.writeHeaderToFile = true; - } - } - - private void visualizeData() { - if (currentMax < tempValue) { - currentMax = tempValue; - statMax.setText(String.format(Locale.getDefault(), PSLabSensor.THERMOMETER_DATA_FORMAT, tempValue)); - } - if (currentMin > tempValue) { - currentMin = tempValue; - statMin.setText(String.format(Locale.getDefault(), PSLabSensor.THERMOMETER_DATA_FORMAT, tempValue)); - } - y.setAxisMaximum(currentMax); - y.setAxisMinimum(currentMin); - y.setLabelCount(10); - if (tempValue >= 0) { - thermometer.setWithTremble(false); - thermometer.setSpeedAt(tempValue); - if (tempValue > highLimit) - thermometer.setBackgroundCircleColor(Color.RED); - else { - thermometer.setBackgroundCircleColor(getResources().getColor(R.color.primaryBlue)); - } - - timeElapsed = ((System.currentTimeMillis() - startTime) / updatePeriod); - if (timeElapsed != previousTimeElapsed) { - previousTimeElapsed = timeElapsed; - Entry entry = new Entry((float) timeElapsed, tempValue); - Long currentTime = System.currentTimeMillis(); - writeLogToFile(currentTime, tempValue); - entries.add(entry); - - count++; - sum += entry.getY(); - statMean.setText(String.format(Locale.getDefault(), PSLabSensor.THERMOMETER_DATA_FORMAT, (sum / count))); - - LineDataSet dataSet = new LineDataSet(entries, PreferenceManager.getDefaultSharedPreferences(getActivity()).getString(thermoSettings.KEY_THERMO_UNIT, "°C")); - dataSet.setDrawCircles(false); - dataSet.setDrawValues(false); - dataSet.setLineWidth(2); - LineData data = new LineData(dataSet); - - mChart.setData(data); - mChart.notifyDataSetChanged(); - mChart.setVisibleXRangeMaximum(800); - mChart.moveViewToX(data.getEntryCount()); - mChart.invalidate(); - } - } - } - - private SensorEventListener thermoSensorEventListener = new SensorEventListener() { - - @Override - public void onAccuracyChanged(Sensor sensor, int accuracy) {/**/} - - @Override - public void onSensorChanged(SensorEvent event) { - if (event.sensor.getType() == Sensor.TYPE_AMBIENT_TEMPERATURE) { - tempValue = event.values[0]; - } - } - }; - - private void resetInstrumentData() { - tempValue = 0; - count = 0; - setUnit(); - sum = 0; - sensor = null; - if (sensorManager != null) { - sensorManager.unregisterListener(thermoSensorEventListener); - } - startTime = System.currentTimeMillis(); - statMax.setText(DataFormatter.formatDouble(0, DataFormatter.LOW_PRECISION_FORMAT)); - statMin.setText(DataFormatter.formatDouble(0, DataFormatter.LOW_PRECISION_FORMAT)); - statMean.setText(DataFormatter.formatDouble(0, DataFormatter.LOW_PRECISION_FORMAT)); - thermometer.setSpeedAt(0); - thermometer.setWithTremble(false); - entries.clear(); - } - - private void initiateThermoSensor(int type) { - THERMOMETER_SENSOR s = THERMOMETER_SENSOR.values()[type]; - resetInstrumentData(); - ScienceLab scienceLab; - switch (s) { - case INBUILT_SENSOR: - sensorLabel.setText(getResources().getStringArray(R.array.thermo_sensors)[0]); - sensorManager = (SensorManager) getContext().getSystemService(SENSOR_SERVICE); - sensor = sensorManager.getDefaultSensor(Sensor.TYPE_AMBIENT_TEMPERATURE); - if (sensor == null) { - CustomSnackBar.showSnackBar(getActivity().findViewById(android.R.id.content), - getString(R.string.no_thermometer_sensor), null, null, Snackbar.LENGTH_LONG); - } else { - float max = sensor.getMaximumRange(); - PreferenceManager.getDefaultSharedPreferences(getActivity()).edit().putFloat(thermoSensor.THERMOMETER_MAX_LIMIT, max).apply(); - thermometer.setMaxSpeed(max); - sensorManager.registerListener(thermoSensorEventListener, - sensor, SensorManager.SENSOR_DELAY_FASTEST); - } - break; - case SHT21_SENSOR: - sensorLabel.setText(getResources().getStringArray(R.array.thermo_sensors)[1]); - scienceLab = ScienceLabCommon.scienceLab; - if (scienceLab.isConnected()) { - try { - I2C i2c = scienceLab.i2c; - ArrayList data; - data = i2c.scan(null); - if (data.contains(0x39)) { - SHT21 sensorSHT21 = new SHT21(i2c, scienceLab); - sensorSHT21.selectParameter(TEMPERATURE); - sensorType = 1; - } else { - CustomSnackBar.showSnackBar(getActivity().findViewById(android.R.id.content), - getString(R.string.sensor_not_connected_tls), null, null, Snackbar.LENGTH_SHORT); - sensorType = 0; - } - } catch (IOException | InterruptedException e) { - e.printStackTrace(); - } - } else { - CustomSnackBar.showSnackBar(getActivity().findViewById(android.R.id.content), - getString(R.string.device_not_found), null, null, Snackbar.LENGTH_SHORT); - sensorType = 0; - } - break; - default: - break; - } - } - - public void setUnit() { - if ("°F".equals(ThermometerDataFragment.unit)) { - currentMax = 257; - currentMin = -40; - thermometer.setMaxSpeed(PreferenceManager.getDefaultSharedPreferences(getActivity()).getFloat(thermoSensor.THERMOMETER_MAX_LIMIT, 257)); - thermometer.setMinSpeed(PreferenceManager.getDefaultSharedPreferences(getActivity()).getFloat(thermoSensor.THERMOMETER_MIN_LIMIT, -40)); - label_statAvg.setText(R.string.avg_thermo_fahrenheit); - label_statMax.setText(R.string.max_thermo_fahrenheit); - label_statMin.setText(R.string.min_thermo_fahrenheit); - thermometer.setUnit("°F"); - } else { - currentMax = 125; - currentMin = -40; - thermometer.setMaxSpeed(PreferenceManager.getDefaultSharedPreferences(getActivity()).getFloat(thermoSensor.THERMOMETER_MAX_LIMIT, 125)); - thermometer.setMinSpeed(PreferenceManager.getDefaultSharedPreferences(getActivity()).getFloat(thermoSensor.THERMOMETER_MIN_LIMIT, -40)); - label_statAvg.setText(R.string.avg_thermo_celcius); - label_statMax.setText(R.string.max_thermo_celcius); - label_statMin.setText(R.string.min_thermo_celcius); - thermometer.setUnit("°C"); - } - } -} diff --git a/app/src/main/java/io/pslab/fragment/ThermometerSettingsFragment.java b/app/src/main/java/io/pslab/fragment/ThermometerSettingsFragment.java deleted file mode 100644 index 04b2dacbc..000000000 --- a/app/src/main/java/io/pslab/fragment/ThermometerSettingsFragment.java +++ /dev/null @@ -1,103 +0,0 @@ -package io.pslab.fragment; - -import android.annotation.SuppressLint; -import android.content.SharedPreferences; -import android.os.Bundle; -import com.google.android.material.snackbar.Snackbar; -import androidx.preference.CheckBoxPreference; -import androidx.preference.EditTextPreference; -import androidx.preference.ListPreference; -import androidx.preference.PreferenceFragmentCompat; -import androidx.preference.PreferenceManager; - -import io.pslab.R; -import io.pslab.others.CustomSnackBar; -import io.pslab.others.PSLabPermission; - -public class ThermometerSettingsFragment extends PreferenceFragmentCompat implements SharedPreferences.OnSharedPreferenceChangeListener { - - public static final String KEY_INCLUDE_LOCATION = "include_location_sensor_data"; - public static final String KEY_UPDATE_PERIOD = "setting_thermo_update_period"; - public static final String KEY_THERMO_SENSOR_TYPE = "setting_thermo_sensor_type"; - public static final String KEY_THERMO_UNIT = "select_temp_unit"; - - private PSLabPermission psLabPermission; - - private EditTextPreference updatePeriodPref; - private CheckBoxPreference locationPreference; - private ListPreference sensorTypePreference; - private SharedPreferences sharedPref; - private ListPreference unitPref; - - @Override - public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { - setPreferencesFromResource(R.xml.thermometer_settings, rootKey); - updatePeriodPref = (EditTextPreference) getPreferenceScreen().findPreference(KEY_UPDATE_PERIOD); - locationPreference = (CheckBoxPreference) getPreferenceScreen().findPreference(KEY_INCLUDE_LOCATION); - sensorTypePreference = (ListPreference) getPreferenceScreen().findPreference(KEY_THERMO_SENSOR_TYPE); - unitPref = (ListPreference) getPreferenceScreen().findPreference(KEY_THERMO_UNIT); - sharedPref = PreferenceManager.getDefaultSharedPreferences(getActivity()); - - psLabPermission = PSLabPermission.getInstance(); - if (!psLabPermission.checkPermissions(getActivity(), PSLabPermission.MAP_PERMISSION)) { - SharedPreferences.Editor editor = sharedPref.edit(); - editor.putBoolean(ThermometerSettingsFragment.KEY_INCLUDE_LOCATION, true); - editor.apply(); - } - } - - @Override - public void onResume() { - super.onResume(); - locationPreference.setChecked(sharedPref.getBoolean(KEY_INCLUDE_LOCATION, true)); - updatePeriodPref.setSummary(updatePeriodPref.getText() + " ms"); - sensorTypePreference.setSummary(sensorTypePreference.getEntry()); - unitPref.setSummary(unitPref.getEntry()); - getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this); - } - - @Override - public void onPause() { - super.onPause(); - getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this); - } - - @SuppressLint("ApplySharedPref") - @Override - public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String s) { - switch (s) { - case KEY_INCLUDE_LOCATION: - if (locationPreference.isChecked()) { - psLabPermission.checkPermissions( - getActivity(), PSLabPermission.MAP_PERMISSION); - } - break; - case KEY_UPDATE_PERIOD: - try { - Integer updatePeriod = Integer.parseInt(updatePeriodPref.getText()); - if (updatePeriod > 1000 || updatePeriod < 100) { - throw new NumberFormatException(); - } else { - updatePeriodPref.setSummary(updatePeriod + " ms"); - } - } catch (NumberFormatException e) { - CustomSnackBar.showSnackBar(getActivity().findViewById(android.R.id.content), - getString(R.string.update_period_msg),null,null, Snackbar.LENGTH_SHORT); - updatePeriodPref.setSummary("1000 ms"); - updatePeriodPref.setText("1000"); - SharedPreferences.Editor editor = sharedPref.edit(); - editor.putString(s, "1000"); - editor.commit(); - } - break; - case KEY_THERMO_SENSOR_TYPE: - sensorTypePreference.setSummary(sensorTypePreference.getEntry()); - break; - case KEY_THERMO_UNIT: - unitPref.setSummary(unitPref.getEntry()); - break; - default: - break; - } - } -} diff --git a/app/src/main/java/io/pslab/fragment/TimebaseTriggerFragment.java b/app/src/main/java/io/pslab/fragment/TimebaseTriggerFragment.java deleted file mode 100644 index ca00baeb5..000000000 --- a/app/src/main/java/io/pslab/fragment/TimebaseTriggerFragment.java +++ /dev/null @@ -1,375 +0,0 @@ -package io.pslab.fragment; - -import android.os.Bundle; -import android.util.TypedValue; -import android.view.KeyEvent; -import android.view.LayoutInflater; -import android.view.MotionEvent; -import android.view.View; -import android.view.ViewGroup; -import android.view.inputmethod.EditorInfo; -import android.widget.AdapterView; -import android.widget.ArrayAdapter; -import android.widget.CheckBox; -import android.widget.CompoundButton; -import android.widget.EditText; -import android.widget.SeekBar; -import android.widget.Spinner; -import android.widget.TextView; - -import androidx.fragment.app.Fragment; - -import org.apache.commons.lang3.math.NumberUtils; - -import io.pslab.R; -import io.pslab.activity.OscilloscopeActivity; -import io.pslab.others.FloatSeekBar; - -public class TimebaseTriggerFragment extends Fragment { - - private Spinner spinnerTriggerChannelSelect; - private Spinner spinnerTriggerModeSelect; - private FloatSeekBar seekBarTimebase; - private FloatSeekBar seekBarTrigger; - private TextView textViewTimeBase; - private EditText editTextTrigger; - private CheckBox checkBoxTrigger; - boolean _ignore = false; - - - public static TimebaseTriggerFragment newInstance() { - return new TimebaseTriggerFragment(); - } - - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { - - View v = inflater.inflate(R.layout.fragment_timebase_tigger, container, false); - - //seekBarTimebase = (SeekBar) v.findViewById(R.id.seekBar_timebase_tt); - seekBarTimebase = v.findViewById(R.id.seekBar_timebase_tt); - seekBarTrigger = v.findViewById(R.id.seekBar_trigger); - textViewTimeBase = v.findViewById(R.id.tv_timebase_values_tt); - editTextTrigger = v.findViewById(R.id.tv_trigger_values_tt); - spinnerTriggerChannelSelect = v.findViewById(R.id.spinner_trigger_channel_tt); - spinnerTriggerModeSelect = v.findViewById(R.id.spinner_trigger_mode_tt); - checkBoxTrigger = v.findViewById(R.id.checkbox_trigger_tt); - seekBarTimebase.setSaveEnabled(false); - - boolean tabletSize = getResources().getBoolean(R.bool.isTablet); - - if (tabletSize) { - editTextTrigger.setTextSize(TypedValue.COMPLEX_UNIT_SP, 18); - textViewTimeBase.setTextSize(TypedValue.COMPLEX_UNIT_SP, 18); - } - - if (OscilloscopeActivity.isInBuiltMicSelected) { - seekBarTimebase.setMax(6); - seekBarTimebase.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { - @Override - public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { - //samples are in the power of 2 so that sinefit can be applied - switch (progress) { - case 0: - textViewTimeBase.setText(getString(R.string.timebase_microsec, 875f)); - ((OscilloscopeActivity) getActivity()).xAxisScale = 0.875; - ((OscilloscopeActivity) getActivity()).setXAxisScale(0.875); - ((OscilloscopeActivity) getActivity()).timebase = 875; - ((OscilloscopeActivity) getActivity()).samples = 512; - ((OscilloscopeActivity) getActivity()).timeGap = (2 * ((OscilloscopeActivity) getActivity()).timebase) / ((OscilloscopeActivity) getActivity()).samples; - break; - case 1: - textViewTimeBase.setText(getString(R.string.timebase_milisec, 1f)); - ((OscilloscopeActivity) getActivity()).xAxisScale = 1; - ((OscilloscopeActivity) getActivity()).setXAxisScale(1); - ((OscilloscopeActivity) getActivity()).timebase = 1000; - ((OscilloscopeActivity) getActivity()).samples = 512; - ((OscilloscopeActivity) getActivity()).timeGap = (2 * ((OscilloscopeActivity) getActivity()).timebase) / ((OscilloscopeActivity) getActivity()).samples; - break; - case 2: - textViewTimeBase.setText(getString(R.string.timebase_milisec, 2f)); - ((OscilloscopeActivity) getActivity()).xAxisScale = 2; - ((OscilloscopeActivity) getActivity()).setXAxisScale(2); - ((OscilloscopeActivity) getActivity()).timebase = 2000; - ((OscilloscopeActivity) getActivity()).samples = 512; - ((OscilloscopeActivity) getActivity()).timeGap = (2 * ((OscilloscopeActivity) getActivity()).timebase) / ((OscilloscopeActivity) getActivity()).samples; - break; - case 3: - textViewTimeBase.setText(getString(R.string.timebase_milisec, 4f)); - ((OscilloscopeActivity) getActivity()).xAxisScale = 4; - ((OscilloscopeActivity) getActivity()).setXAxisScale(4); - ((OscilloscopeActivity) getActivity()).timebase = 4000; - ((OscilloscopeActivity) getActivity()).samples = 512; - ((OscilloscopeActivity) getActivity()).timeGap = (2 * ((OscilloscopeActivity) getActivity()).timebase) / ((OscilloscopeActivity) getActivity()).samples; - break; - case 4: - textViewTimeBase.setText(getString(R.string.timebase_milisec, 8f)); - ((OscilloscopeActivity) getActivity()).xAxisScale = 8; - ((OscilloscopeActivity) getActivity()).setXAxisScale(8); - ((OscilloscopeActivity) getActivity()).timebase = 8000; - ((OscilloscopeActivity) getActivity()).samples = 1024; - ((OscilloscopeActivity) getActivity()).timeGap = (2 * ((OscilloscopeActivity) getActivity()).timebase) / ((OscilloscopeActivity) getActivity()).samples; - break; - case 5: - textViewTimeBase.setText(getString(R.string.timebase_milisec, 25.60)); - ((OscilloscopeActivity) getActivity()).xAxisScale = 25.60; - ((OscilloscopeActivity) getActivity()).setXAxisScale(25.60); - ((OscilloscopeActivity) getActivity()).timebase = 25600; - ((OscilloscopeActivity) getActivity()).samples = 1024; - ((OscilloscopeActivity) getActivity()).timeGap = (2 * ((OscilloscopeActivity) getActivity()).timebase) / ((OscilloscopeActivity) getActivity()).samples; - break; - case 6: - textViewTimeBase.setText(getString(R.string.timebase_milisec, 38.40)); - ((OscilloscopeActivity) getActivity()).xAxisScale = 38.40; - ((OscilloscopeActivity) getActivity()).setXAxisScale(38.40); - ((OscilloscopeActivity) getActivity()).timebase = 38400; - ((OscilloscopeActivity) getActivity()).samples = 1024; - ((OscilloscopeActivity) getActivity()).timeGap = (2 * ((OscilloscopeActivity) getActivity()).timebase) / ((OscilloscopeActivity) getActivity()).samples; - break; - default: - break; - } - } - - @Override - public void onStartTrackingTouch(SeekBar seekBar) { - - } - - @Override - public void onStopTrackingTouch(SeekBar seekBar) { - - } - }); - seekBarTimebase.setProgress(0); - } else { - seekBarTimebase.setMax(8); - seekBarTimebase.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { - @Override - public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { - //samples are in the power of 2 so that sinefit can be applied - switch (progress) { - case 0: - textViewTimeBase.setText(getString(R.string.timebase_microsec, 875f)); - ((OscilloscopeActivity) getActivity()).xAxisScale = 0.875; - ((OscilloscopeActivity) getActivity()).setXAxisScale(0.875); - ((OscilloscopeActivity) getActivity()).timebase = 875; - ((OscilloscopeActivity) getActivity()).samples = 512; - ((OscilloscopeActivity) getActivity()).timeGap = (2 * ((OscilloscopeActivity) getActivity()).timebase) / ((OscilloscopeActivity) getActivity()).samples; - break; - case 1: - textViewTimeBase.setText(getString(R.string.timebase_milisec, 1f)); - ((OscilloscopeActivity) getActivity()).xAxisScale = 1; - ((OscilloscopeActivity) getActivity()).setXAxisScale(1); - ((OscilloscopeActivity) getActivity()).timebase = 1000; - ((OscilloscopeActivity) getActivity()).samples = 512; - ((OscilloscopeActivity) getActivity()).timeGap = (2 * ((OscilloscopeActivity) getActivity()).timebase) / ((OscilloscopeActivity) getActivity()).samples; - break; - case 2: - textViewTimeBase.setText(getString(R.string.timebase_milisec, 2f)); - ((OscilloscopeActivity) getActivity()).xAxisScale = 2; - ((OscilloscopeActivity) getActivity()).setXAxisScale(2); - ((OscilloscopeActivity) getActivity()).timebase = 2000; - ((OscilloscopeActivity) getActivity()).samples = 512; - ((OscilloscopeActivity) getActivity()).timeGap = (2 * ((OscilloscopeActivity) getActivity()).timebase) / ((OscilloscopeActivity) getActivity()).samples; - break; - case 3: - textViewTimeBase.setText(getString(R.string.timebase_milisec, 4f)); - ((OscilloscopeActivity) getActivity()).xAxisScale = 4; - ((OscilloscopeActivity) getActivity()).setXAxisScale(4); - ((OscilloscopeActivity) getActivity()).timebase = 4000; - ((OscilloscopeActivity) getActivity()).samples = 512; - ((OscilloscopeActivity) getActivity()).timeGap = (2 * ((OscilloscopeActivity) getActivity()).timebase) / ((OscilloscopeActivity) getActivity()).samples; - break; - case 4: - textViewTimeBase.setText(getString(R.string.timebase_milisec, 8f)); - ((OscilloscopeActivity) getActivity()).xAxisScale = 8; - ((OscilloscopeActivity) getActivity()).setXAxisScale(8); - ((OscilloscopeActivity) getActivity()).timebase = 8000; - ((OscilloscopeActivity) getActivity()).samples = 1024; - ((OscilloscopeActivity) getActivity()).timeGap = (2 * ((OscilloscopeActivity) getActivity()).timebase) / ((OscilloscopeActivity) getActivity()).samples; - break; - case 5: - textViewTimeBase.setText(getString(R.string.timebase_milisec, 25.60)); - ((OscilloscopeActivity) getActivity()).xAxisScale = 25.60; - ((OscilloscopeActivity) getActivity()).setXAxisScale(25.60); - ((OscilloscopeActivity) getActivity()).timebase = 25600; - ((OscilloscopeActivity) getActivity()).samples = 1024; - ((OscilloscopeActivity) getActivity()).timeGap = (2 * ((OscilloscopeActivity) getActivity()).timebase) / ((OscilloscopeActivity) getActivity()).samples; - break; - case 6: - textViewTimeBase.setText(getString(R.string.timebase_milisec, 38.40)); - ((OscilloscopeActivity) getActivity()).xAxisScale = 38.40; - ((OscilloscopeActivity) getActivity()).setXAxisScale(38.40); - ((OscilloscopeActivity) getActivity()).timebase = 38400; - ((OscilloscopeActivity) getActivity()).samples = 1024; - ((OscilloscopeActivity) getActivity()).timeGap = (2 * ((OscilloscopeActivity) getActivity()).timebase) / ((OscilloscopeActivity) getActivity()).samples; - break; - case 7: - textViewTimeBase.setText(getString(R.string.timebase_milisec, 51.20)); - ((OscilloscopeActivity) getActivity()).xAxisScale = 51.20; - ((OscilloscopeActivity) getActivity()).setXAxisScale(51.20); - ((OscilloscopeActivity) getActivity()).timebase = 51200; - ((OscilloscopeActivity) getActivity()).samples = 1024; - ((OscilloscopeActivity) getActivity()).timeGap = (2 * ((OscilloscopeActivity) getActivity()).timebase) / ((OscilloscopeActivity) getActivity()).samples; - break; - case 8: - textViewTimeBase.setText(getString(R.string.timebase_milisec, 102.40)); - ((OscilloscopeActivity) getActivity()).xAxisScale = 102.40; - ((OscilloscopeActivity) getActivity()).setXAxisScale(102.40); - ((OscilloscopeActivity) getActivity()).timebase = 102400; - ((OscilloscopeActivity) getActivity()).samples = 1024; - ((OscilloscopeActivity) getActivity()).timeGap = (2 * ((OscilloscopeActivity) getActivity()).timebase) / ((OscilloscopeActivity) getActivity()).samples; - break; - default: - break; - } - } - - @Override - public void onStartTrackingTouch(SeekBar seekBar) { - - } - - @Override - public void onStopTrackingTouch(SeekBar seekBar) { - - } - }); - seekBarTimebase.setProgress(0); - } - seekBarTrigger.setters(-1 * ((OscilloscopeActivity) getActivity()).yAxisScale, ((OscilloscopeActivity) getActivity()).yAxisScale); - seekBarTrigger.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { - @Override - public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { - if (!_ignore) { - editTextTrigger.setText(String.format("%s V", seekBarTrigger.getValue())); - ((OscilloscopeActivity) getActivity()).trigger = seekBarTrigger.getValue(); - } - } - - @Override - public void onStartTrackingTouch(SeekBar seekBar) { - - } - - @Override - public void onStopTrackingTouch(SeekBar seekBar) { - - } - }); - seekBarTrigger.setProgress(50); - - String[] channels = {"CH1", "CH2", "CH3", "MIC"}; - ArrayAdapter channelsAdapter; - if (tabletSize) { - channelsAdapter = new ArrayAdapter<>(this.getActivity(), R.layout.custom_spinner_tablet, channels); - } else { - channelsAdapter = new ArrayAdapter<>(this.getActivity(), R.layout.custom_spinner, channels); - } - - channelsAdapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line); - - spinnerTriggerChannelSelect.setAdapter(channelsAdapter); - spinnerTriggerChannelSelect.setSelection(channelsAdapter.getPosition("CH1"), true); - spinnerTriggerChannelSelect.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { - @Override - public void onItemSelected(AdapterView parent, View view, int position, long id) { - ((OscilloscopeActivity) getActivity()).triggerChannel = spinnerTriggerChannelSelect.getItemAtPosition(position).toString(); - } - - @Override - public void onNothingSelected(AdapterView parent) { - - } - }); - - String[] modes = {"Rising Edge", "Falling Edge", "Dual Edge"}; - ArrayAdapter modesAdapter; - if (tabletSize) { - modesAdapter = new ArrayAdapter<>(this.getActivity(), R.layout.custom_spinner_tablet, modes); - } else { - modesAdapter = new ArrayAdapter<>(this.getActivity(), R.layout.custom_spinner, modes); - } - - modesAdapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line); - - spinnerTriggerModeSelect.setAdapter(modesAdapter); - spinnerTriggerModeSelect.setSelection(modesAdapter.getPosition("Rising Edge"), true); - ((OscilloscopeActivity) getActivity()).triggerMode = "RISING"; - spinnerTriggerModeSelect.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { - @Override - public void onItemSelected(AdapterView parent, View view, int position, long id) { - switch (spinnerTriggerModeSelect.getItemAtPosition(position).toString()) { - case "Rising Edge": - ((OscilloscopeActivity) getActivity()).triggerMode = "RISING"; - break; - case "Falling Edge": - ((OscilloscopeActivity) getActivity()).triggerMode = "FALLING"; - break; - case "Dual Edge": - ((OscilloscopeActivity) getActivity()).triggerMode = "DUAL"; - break; - default: - break; - } - } - - @Override - public void onNothingSelected(AdapterView parent) { - // Do nothing - } - }); - - editTextTrigger.setOnTouchListener(new View.OnTouchListener() { - @Override - public boolean onTouch(View v, MotionEvent event) { - editTextTrigger.setCursorVisible(true); - return false; - } - }); - - editTextTrigger.setOnEditorActionListener(new TextView.OnEditorActionListener() { - @Override - public boolean onEditorAction(TextView textView, int i, KeyEvent keyEvent) { - if (i == EditorInfo.IME_ACTION_DONE) { - String voltageValue = editTextTrigger.getText().toString().replace("V", ""); - voltageValue = voltageValue.replace(" ", ""); - if (NumberUtils.isCreatable(voltageValue)) { - _ignore = true; - if (Double.parseDouble(voltageValue) > ((OscilloscopeActivity) getActivity()).yAxisScale) { - editTextTrigger.setText(String.format("%s V", ((OscilloscopeActivity) getActivity()).yAxisScale)); - seekBarTrigger.setValue(((OscilloscopeActivity) getActivity()).yAxisScale); - ((OscilloscopeActivity) getActivity()).trigger = seekBarTrigger.getValue(); - _ignore = false; - } else if (Double.parseDouble(voltageValue) < -((OscilloscopeActivity) getActivity()).yAxisScale) { - editTextTrigger.setText(String.format("%s V", -((OscilloscopeActivity) getActivity()).yAxisScale)); - seekBarTrigger.setValue(-((OscilloscopeActivity) getActivity()).yAxisScale); - ((OscilloscopeActivity) getActivity()).trigger = seekBarTrigger.getValue(); - _ignore = false; - } else { - seekBarTrigger.setValue(Double.parseDouble(voltageValue)); - editTextTrigger.setText(String.format("%s V", Double.parseDouble(voltageValue))); - ((OscilloscopeActivity) getActivity()).trigger = seekBarTrigger.getValue(); - _ignore = false; - } - } else { - seekBarTrigger.setProgress(50); - } - } - editTextTrigger.setCursorVisible(false); - return false; - } - }); - - checkBoxTrigger.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - ((OscilloscopeActivity) getActivity()).isTriggerSelected = isChecked; - } - }); - - return v; - } -} \ No newline at end of file diff --git a/app/src/main/java/io/pslab/fragment/XYPlotFragment.java b/app/src/main/java/io/pslab/fragment/XYPlotFragment.java deleted file mode 100644 index 3383d92f3..000000000 --- a/app/src/main/java/io/pslab/fragment/XYPlotFragment.java +++ /dev/null @@ -1,115 +0,0 @@ -package io.pslab.fragment; - -import android.os.Bundle; -import androidx.fragment.app.Fragment; - -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; - -import io.pslab.R; -import io.pslab.activity.OscilloscopeActivity; -import io.pslab.others.ViewGroupUtils; - -import android.widget.AdapterView; -import android.widget.ArrayAdapter; -import android.widget.CheckBox; -import android.widget.CompoundButton; -import android.widget.Spinner; - -public class XYPlotFragment extends Fragment { - - private Spinner spinnerChannelSelect1; - private Spinner spinnerChannelSelect2; - private CheckBox checkBoxXYPlot; - - public static XYPlotFragment newInstance() { - return new XYPlotFragment(); - } - - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { - View v = inflater.inflate(R.layout.fragment_xyplot, container, false); - final String[] channels = {"CH1", "CH2", "CH3", "MIC"}; - spinnerChannelSelect1 = v.findViewById(R.id.spinner_channel_select_xy1); - spinnerChannelSelect2 = v.findViewById(R.id.spinner_channel_select_xy2); - checkBoxXYPlot = v.findViewById(R.id.checkBox_enable_xy_xy); - spinnerChannelSelect1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { - @Override - public void onItemSelected(AdapterView adapterView, View view, int position, long l) { - ((OscilloscopeActivity) getActivity()).xyPlotAxis1 = channels[position]; - if (((OscilloscopeActivity) getActivity()).isXYPlotSelected) { - ((OscilloscopeActivity) getActivity()).setXAxisLabel(channels[position]); - ((OscilloscopeActivity) getActivity()).xAxisLabelUnit.setText("(V)"); - } - - } - - @Override - public void onNothingSelected(AdapterView adapterView) { - - } - }); - spinnerChannelSelect2.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { - - @Override - public void onItemSelected(AdapterView adapterView, View view, int position, long l) { - ((OscilloscopeActivity) getActivity()).xyPlotAxis2 = channels[position]; - if (((OscilloscopeActivity) getActivity()).isXYPlotSelected) { - ((OscilloscopeActivity) getActivity()).setLeftYAxisLabel(channels[position]); - } - } - - @Override - public void onNothingSelected(AdapterView adapterView) { - - } - }); - boolean tabletSize = getResources().getBoolean(R.bool.isTablet); - ArrayAdapter channelsAdapter; - - if (tabletSize) { - channelsAdapter = new ArrayAdapter<>(this.getActivity(), R.layout.custom_spinner_tablet, channels); - } else { - channelsAdapter = new ArrayAdapter<>(this.getActivity(), R.layout.custom_spinner, channels); - } - - channelsAdapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line); - - spinnerChannelSelect1.setAdapter(channelsAdapter); - spinnerChannelSelect2.setAdapter(channelsAdapter); - - spinnerChannelSelect1.setSelection(channelsAdapter.getPosition("CH1"), true); - spinnerChannelSelect2.setSelection(channelsAdapter.getPosition("CH2"), true); - - checkBoxXYPlot.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - ((OscilloscopeActivity) getActivity()).isXYPlotSelected = isChecked; - if (isChecked) { - ViewGroupUtils.replaceView(((OscilloscopeActivity) getActivity()).mChart, - ((OscilloscopeActivity) getActivity()).graph); - ((OscilloscopeActivity) getActivity()).setXAxisLabel(spinnerChannelSelect1.getSelectedItem().toString()); - ((OscilloscopeActivity) getActivity()).setLeftYAxisLabel(spinnerChannelSelect2.getSelectedItem().toString()); - ((OscilloscopeActivity) getActivity()).xAxisLabelUnit.setText("(V)"); - ((OscilloscopeActivity) getActivity()).rightYAxisLabel.setVisibility(View.INVISIBLE); - ((OscilloscopeActivity) getActivity()).rightYAxisLabelUnit.setVisibility(View.INVISIBLE); - - - } else { - ViewGroupUtils.replaceView(((OscilloscopeActivity) getActivity()).graph, - ((OscilloscopeActivity) getActivity()).mChart); - ((OscilloscopeActivity) getActivity()).rightYAxisLabel.setVisibility(View.VISIBLE); - ((OscilloscopeActivity) getActivity()).rightYAxisLabelUnit.setVisibility(View.VISIBLE); - ((OscilloscopeActivity) getActivity()).setXAxisLabel("time"); - ((OscilloscopeActivity) getActivity()).setXAxisScale(((OscilloscopeActivity) getActivity()).timebase); - - } - - } - }); - - return v; - } -} diff --git a/app/src/main/java/io/pslab/interfaces/HttpCallback.java b/app/src/main/java/io/pslab/interfaces/HttpCallback.java deleted file mode 100644 index 3bcdd62e8..000000000 --- a/app/src/main/java/io/pslab/interfaces/HttpCallback.java +++ /dev/null @@ -1,6 +0,0 @@ -package io.pslab.interfaces; - -public interface HttpCallback { - void success(T t1); - void error(Exception e); -} diff --git a/app/src/main/java/io/pslab/interfaces/OperationCallback.java b/app/src/main/java/io/pslab/interfaces/OperationCallback.java deleted file mode 100644 index b9f584425..000000000 --- a/app/src/main/java/io/pslab/interfaces/OperationCallback.java +++ /dev/null @@ -1,10 +0,0 @@ -package io.pslab.interfaces; - -/** - * created by VIKAS9899 on 14/05/2020 - */ -public interface OperationCallback { - void playData(); - void stopData(); - void saveGraph(); -} diff --git a/app/src/main/java/io/pslab/interfaces/sensorloggers/AccelerometerRecordables.java b/app/src/main/java/io/pslab/interfaces/sensorloggers/AccelerometerRecordables.java deleted file mode 100644 index e1043368e..000000000 --- a/app/src/main/java/io/pslab/interfaces/sensorloggers/AccelerometerRecordables.java +++ /dev/null @@ -1,17 +0,0 @@ -package io.pslab.interfaces.sensorloggers; - -import io.pslab.models.AccelerometerData; -import io.realm.RealmResults; - -public interface AccelerometerRecordables { - - AccelerometerData getAccelerometerData(long timeStamp); - - void clearAllAccelerometerRecords(); - - void clearBlockOfAccelerometerRecords(long block); - - RealmResults getAllAccelerometerRecords(); - - RealmResults getBlockOfAccelerometerRecords(long block); -} diff --git a/app/src/main/java/io/pslab/interfaces/sensorloggers/BaroMeterRecordables.java b/app/src/main/java/io/pslab/interfaces/sensorloggers/BaroMeterRecordables.java deleted file mode 100644 index d8ced963c..000000000 --- a/app/src/main/java/io/pslab/interfaces/sensorloggers/BaroMeterRecordables.java +++ /dev/null @@ -1,21 +0,0 @@ -package io.pslab.interfaces.sensorloggers; - -import io.pslab.models.BaroData; -import io.realm.RealmResults; - -/** - * Created by Padmal on 12/13/18. - */ - -public interface BaroMeterRecordables { - - BaroData getBaroData(long timeStamp); - - void clearAllBaroRecords(); - - void clearBlockOfBaroRecords(long block); - - RealmResults getAllBaroRecords(); - - RealmResults getBlockOfBaroRecords(long block); -} diff --git a/app/src/main/java/io/pslab/interfaces/sensorloggers/CompassRecordables.java b/app/src/main/java/io/pslab/interfaces/sensorloggers/CompassRecordables.java deleted file mode 100644 index a99dfedfb..000000000 --- a/app/src/main/java/io/pslab/interfaces/sensorloggers/CompassRecordables.java +++ /dev/null @@ -1,16 +0,0 @@ -package io.pslab.interfaces.sensorloggers; - -import io.pslab.models.CompassData; -import io.realm.RealmResults; - -public interface CompassRecordables { - CompassData getCompassData(long timeStamp); - - void clearAllCompassRecords(); - - void clearBlockOfCompassRecords(long block); - - RealmResults getAllCompassRecords(); - - RealmResults getBlockOfCompassRecords(long block); -} diff --git a/app/src/main/java/io/pslab/interfaces/sensorloggers/DustSensorRecordables.java b/app/src/main/java/io/pslab/interfaces/sensorloggers/DustSensorRecordables.java deleted file mode 100644 index d4bbbe4c5..000000000 --- a/app/src/main/java/io/pslab/interfaces/sensorloggers/DustSensorRecordables.java +++ /dev/null @@ -1,13 +0,0 @@ -package io.pslab.interfaces.sensorloggers; - -import io.pslab.models.DustSensorData; -import io.realm.RealmResults; - -public interface DustSensorRecordables { - - DustSensorData getDustSensorData(long timeStamp); - void clearAllDustSensorRecords(); - void clearBlockOfDustSensorRecords(long block); - RealmResults getAllDustSensorRecords(); - RealmResults getBlockOfDustSensorRecords(long block); -} diff --git a/app/src/main/java/io/pslab/interfaces/sensorloggers/GasSensorRecordables.java b/app/src/main/java/io/pslab/interfaces/sensorloggers/GasSensorRecordables.java deleted file mode 100644 index 5ceb00a89..000000000 --- a/app/src/main/java/io/pslab/interfaces/sensorloggers/GasSensorRecordables.java +++ /dev/null @@ -1,12 +0,0 @@ -package io.pslab.interfaces.sensorloggers; - -import io.pslab.models.GasSensorData; -import io.realm.RealmResults; - -public interface GasSensorRecordables { - GasSensorData getGasSensorData(long timeStamp); - void clearAllGasSensorRecords(); - void clearBlockOfGasSensorRecords(long block); - RealmResults getAllGasSensorRecords(); - RealmResults getBlockOfGasSensorRecords(long block); -} diff --git a/app/src/main/java/io/pslab/interfaces/sensorloggers/GyroscopeRecordables.java b/app/src/main/java/io/pslab/interfaces/sensorloggers/GyroscopeRecordables.java deleted file mode 100644 index 578243e9d..000000000 --- a/app/src/main/java/io/pslab/interfaces/sensorloggers/GyroscopeRecordables.java +++ /dev/null @@ -1,16 +0,0 @@ -package io.pslab.interfaces.sensorloggers; - -import io.pslab.models.GyroData; -import io.realm.RealmResults; - -public interface GyroscopeRecordables { - GyroData getGyroData(long timeStamp); - - void clearAllGyroRecords(); - - void clearBlockOfGyroRecords(long block); - - RealmResults getAllGyroRecords(); - - RealmResults getBlockOfGyroRecords(long block); -} diff --git a/app/src/main/java/io/pslab/interfaces/sensorloggers/LogicAnalyzerRecordables.java b/app/src/main/java/io/pslab/interfaces/sensorloggers/LogicAnalyzerRecordables.java deleted file mode 100644 index 266e68af1..000000000 --- a/app/src/main/java/io/pslab/interfaces/sensorloggers/LogicAnalyzerRecordables.java +++ /dev/null @@ -1,12 +0,0 @@ -package io.pslab.interfaces.sensorloggers; - -import io.pslab.models.LogicAnalyzerData; -import io.realm.RealmResults; - -public interface LogicAnalyzerRecordables { - LogicAnalyzerData getLAData(long timeStamp); - void clearAllLARecords(); - void clearBlockOfLARecords(long block); - RealmResults getAllLARecords(); - RealmResults getBlockOfLARecords(long block); -} diff --git a/app/src/main/java/io/pslab/interfaces/sensorloggers/LuxMeterRecordables.java b/app/src/main/java/io/pslab/interfaces/sensorloggers/LuxMeterRecordables.java deleted file mode 100644 index bfa0c9249..000000000 --- a/app/src/main/java/io/pslab/interfaces/sensorloggers/LuxMeterRecordables.java +++ /dev/null @@ -1,21 +0,0 @@ -package io.pslab.interfaces.sensorloggers; - -import io.pslab.models.LuxData; -import io.realm.RealmResults; - -/** - * Created by Padmal on 11/5/18. - */ - -public interface LuxMeterRecordables { - - LuxData getLuxData(long timeStamp); - - void clearAllLuxRecords(); - - void clearBlockOfLuxRecords(long block); - - RealmResults getAllLuxRecords(); - - RealmResults getBlockOfLuxRecords(long block); -} diff --git a/app/src/main/java/io/pslab/interfaces/sensorloggers/MultimeterRecordables.java b/app/src/main/java/io/pslab/interfaces/sensorloggers/MultimeterRecordables.java deleted file mode 100644 index 0b859db4c..000000000 --- a/app/src/main/java/io/pslab/interfaces/sensorloggers/MultimeterRecordables.java +++ /dev/null @@ -1,12 +0,0 @@ -package io.pslab.interfaces.sensorloggers; - -import io.pslab.models.MultimeterData; -import io.realm.RealmResults; - -public interface MultimeterRecordables { - MultimeterData getMultimeterData(long timeStamp); - void clearAllMultimeterRecords(); - void clearBlockOfMultimeterRecords(long block); - RealmResults getAllMultimeterRecords(); - RealmResults getBlockOfMultimeterRecords(long block); -} diff --git a/app/src/main/java/io/pslab/interfaces/sensorloggers/OscilloscopeRecordables.java b/app/src/main/java/io/pslab/interfaces/sensorloggers/OscilloscopeRecordables.java deleted file mode 100644 index c68f14632..000000000 --- a/app/src/main/java/io/pslab/interfaces/sensorloggers/OscilloscopeRecordables.java +++ /dev/null @@ -1,16 +0,0 @@ -package io.pslab.interfaces.sensorloggers; - -import io.pslab.models.OscilloscopeData; -import io.realm.RealmResults; - -public interface OscilloscopeRecordables { - OscilloscopeData getOscilloscopeData(long timeStamp); - - void clearAllOscilloscopeRecords(); - - void clearBlockOfOscilloscopeRecords(long block); - - RealmResults getAllOscilloscopeRecords(); - - RealmResults getBlockOfOscilloscopeRecords(long block); -} diff --git a/app/src/main/java/io/pslab/interfaces/sensorloggers/PowerSourceRecordables.java b/app/src/main/java/io/pslab/interfaces/sensorloggers/PowerSourceRecordables.java deleted file mode 100644 index d912e52d3..000000000 --- a/app/src/main/java/io/pslab/interfaces/sensorloggers/PowerSourceRecordables.java +++ /dev/null @@ -1,12 +0,0 @@ -package io.pslab.interfaces.sensorloggers; - -import io.pslab.models.PowerSourceData; -import io.realm.RealmResults; - -public interface PowerSourceRecordables { - PowerSourceData getPowerData(long timeStamp); - void clearAllPowerRecords(); - void clearBlockOfPowerRecords(long block); - RealmResults getAllPowerRecords(); - RealmResults getBlockOfPowerRecords(long block); -} diff --git a/app/src/main/java/io/pslab/interfaces/sensorloggers/SensorRecordables.java b/app/src/main/java/io/pslab/interfaces/sensorloggers/SensorRecordables.java deleted file mode 100644 index 93e8019e2..000000000 --- a/app/src/main/java/io/pslab/interfaces/sensorloggers/SensorRecordables.java +++ /dev/null @@ -1,23 +0,0 @@ -package io.pslab.interfaces.sensorloggers; - -import io.pslab.models.SensorDataBlock; -import io.realm.RealmResults; - -/** - * Created by Padmal on 11/5/18. - */ - -public interface SensorRecordables { - - SensorDataBlock getSensorBlock(long block); - - void clearAllSensorBlocks(); - - void clearTypeOfSensorBlock(String type); - - void clearSensorBlock(long block); - - RealmResults getAllSensorBlocks(); - - RealmResults getTypeOfSensorBlocks(String type); -} diff --git a/app/src/main/java/io/pslab/interfaces/sensorloggers/ServoRecordables.java b/app/src/main/java/io/pslab/interfaces/sensorloggers/ServoRecordables.java deleted file mode 100644 index 7ce53c65b..000000000 --- a/app/src/main/java/io/pslab/interfaces/sensorloggers/ServoRecordables.java +++ /dev/null @@ -1,16 +0,0 @@ -package io.pslab.interfaces.sensorloggers; - -import io.pslab.models.ServoData; -import io.realm.RealmResults; - -public interface ServoRecordables { - ServoData getServoData(long timeStamp); - - void clearAllServoRecords(); - - void clearBlockOfServoRecords(long block); - - RealmResults getAllServoRecords(); - - RealmResults getBlockOfServoRecords(long block); -} diff --git a/app/src/main/java/io/pslab/interfaces/sensorloggers/SoundMeterRecordables.java b/app/src/main/java/io/pslab/interfaces/sensorloggers/SoundMeterRecordables.java deleted file mode 100644 index 2748c7168..000000000 --- a/app/src/main/java/io/pslab/interfaces/sensorloggers/SoundMeterRecordables.java +++ /dev/null @@ -1,21 +0,0 @@ -package io.pslab.interfaces.sensorloggers; - -import io.pslab.models.SoundData; -import io.realm.RealmResults; - -/** - * @author reckoner1429 - * - */ -public interface SoundMeterRecordables { - - SoundData getSoundMeterData(long timeStamp); - - void clearAllSoundRecords(); - - void clearBlockOfSoundRecords(long block); - - RealmResults getAllSoundRecords(); - - RealmResults getBlockOfSoundRecords(long block); -} diff --git a/app/src/main/java/io/pslab/interfaces/sensorloggers/ThermometerRecordables.java b/app/src/main/java/io/pslab/interfaces/sensorloggers/ThermometerRecordables.java deleted file mode 100644 index 5a8a2c85b..000000000 --- a/app/src/main/java/io/pslab/interfaces/sensorloggers/ThermometerRecordables.java +++ /dev/null @@ -1,16 +0,0 @@ -package io.pslab.interfaces.sensorloggers; - -import io.pslab.models.ThermometerData; -import io.realm.RealmResults; - -public interface ThermometerRecordables { - ThermometerData getThermometerData(long timeStamp); - - void clearAllThermometerRecords(); - - void clearBlockOfThermometerRecords(long block); - - RealmResults getAllThermometerRecords(); - - RealmResults getBlockOfThermometerRecords(long block); -} diff --git a/app/src/main/java/io/pslab/interfaces/sensorloggers/WaveGeneratorRecordables.java b/app/src/main/java/io/pslab/interfaces/sensorloggers/WaveGeneratorRecordables.java deleted file mode 100644 index 5458b9c41..000000000 --- a/app/src/main/java/io/pslab/interfaces/sensorloggers/WaveGeneratorRecordables.java +++ /dev/null @@ -1,16 +0,0 @@ -package io.pslab.interfaces.sensorloggers; - -import io.pslab.models.WaveGeneratorData; -import io.realm.RealmResults; - -public interface WaveGeneratorRecordables { - WaveGeneratorData getWaveData(long timeStamp); - - void clearAllWaveRecords(); - - void clearBlockOfWaveRecords(long block); - - RealmResults getAllWaveRecords(); - - RealmResults getBlockOfWaveRecords(long block); -} diff --git a/app/src/main/java/io/pslab/items/ApplicationItem.java b/app/src/main/java/io/pslab/items/ApplicationItem.java deleted file mode 100644 index 0bf19666b..000000000 --- a/app/src/main/java/io/pslab/items/ApplicationItem.java +++ /dev/null @@ -1,43 +0,0 @@ -package io.pslab.items; - -/** - * Created by Padmal on 5/7/17. - */ - -public class ApplicationItem { - - private String applicationName; - private int applicationIcon; - private String applicationDescription; - - public ApplicationItem() {} - - public ApplicationItem(String applicationName, int applicationIcon, String applicationDescription) { - this.applicationName = applicationName; - this.applicationDescription = applicationDescription; - this.applicationIcon = applicationIcon; - } - - public String getApplicationName() { - return applicationName; - } - - public String getApplicationDescription(){ return applicationDescription; } - - public int getApplicationIcon() { - return applicationIcon; - } - - public void setApplicationName(String applicationName) { - this.applicationName = applicationName; - } - - public void setApplicationDescription(String applicationDescription){ - this.applicationDescription = applicationDescription; - } - - public void setApplicationIcon(int applicationIcon) { - this.applicationIcon = applicationIcon; - } - -} diff --git a/app/src/main/java/io/pslab/items/PinDetails.java b/app/src/main/java/io/pslab/items/PinDetails.java deleted file mode 100644 index c5029fc74..000000000 --- a/app/src/main/java/io/pslab/items/PinDetails.java +++ /dev/null @@ -1,36 +0,0 @@ -package io.pslab.items; - -/** - * Created by Padmal on 5/22/18. - */ - -public class PinDetails { - - private final String name; - private final String description; - private final int categoryColor; - private final int colorID; - - public PinDetails(String name, String description, int categoryColor, int colorID) { - this.name = name; - this.description = description; - this.categoryColor = categoryColor; - this.colorID = colorID; - } - - public String getName() { - return name; - } - - public String getDescription() { - return description; - } - - public int getCategoryColor() { - return categoryColor; - } - - public int getColorID() { - return colorID; - } -} diff --git a/app/src/main/java/io/pslab/items/SquareImageButton.java b/app/src/main/java/io/pslab/items/SquareImageButton.java deleted file mode 100644 index 399ead486..000000000 --- a/app/src/main/java/io/pslab/items/SquareImageButton.java +++ /dev/null @@ -1,35 +0,0 @@ -package io.pslab.items; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.util.AttributeSet; -import android.widget.ImageButton; - -@SuppressLint("AppCompatCustomView") -public class SquareImageButton extends ImageButton { - - public SquareImageButton(Context context) { - super(context); - } - - public SquareImageButton(Context context, AttributeSet attrs) { - super(context, attrs); - } - - public SquareImageButton(Context context, AttributeSet attrs, int defStyleAttr) { - super(context, attrs, defStyleAttr); - } - - @Override - protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - super.onMeasure(widthMeasureSpec, heightMeasureSpec); - - int width = getMeasuredWidth(); - setMeasuredDimension(width, width); - } - - @Override - public boolean performClick() { - return super.performClick(); - } -} diff --git a/app/src/main/java/io/pslab/items/SquareLinearLayout.java b/app/src/main/java/io/pslab/items/SquareLinearLayout.java deleted file mode 100644 index b03f087d7..000000000 --- a/app/src/main/java/io/pslab/items/SquareLinearLayout.java +++ /dev/null @@ -1,31 +0,0 @@ -package io.pslab.items; - -import android.content.Context; -import androidx.annotation.Nullable; -import android.util.AttributeSet; -import android.widget.LinearLayout; - -/** - * Created by Your name on 25-07-2018. - */ -public class SquareLinearLayout extends LinearLayout { - public SquareLinearLayout(Context context) { - super(context); - } - - public SquareLinearLayout(Context context, @Nullable AttributeSet attrs) { - super(context, attrs); - } - - public SquareLinearLayout(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { - super(context, attrs, defStyleAttr); - } - - @Override - protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - super.onMeasure(widthMeasureSpec, heightMeasureSpec); - - int width = getMeasuredWidth(); - setMeasuredDimension(width, width); - } -} diff --git a/app/src/main/java/io/pslab/models/AccelerometerData.java b/app/src/main/java/io/pslab/models/AccelerometerData.java deleted file mode 100644 index 9320cbcc0..000000000 --- a/app/src/main/java/io/pslab/models/AccelerometerData.java +++ /dev/null @@ -1,96 +0,0 @@ -package io.pslab.models; - -import io.realm.RealmObject; -import io.realm.annotations.PrimaryKey; - -/** - * Created by Kunal on 18-12-2018. - */ - -public class AccelerometerData extends RealmObject { - - @PrimaryKey - private long time; - private long block; - private float accelerometerX; - private float accelerometerY; - private float accelerometerZ; - private double lat, lon; - - public AccelerometerData() {/**/} - - public AccelerometerData(long time, long block, float accelerometerX, float accelerometerY, float accelerometerZ, double lat, double lon) { - this.time = time; - this.block = block; - this.accelerometerX = accelerometerX; - this.accelerometerY = accelerometerY; - this.accelerometerZ = accelerometerZ; - this.lat = lat; - this.lon = lon; - } - - public long getTime() { - return time; - } - - public void setTime(long time) { - this.time = time; - } - - public long getBlock() { - return block; - } - - public void setBlock(long block) { - this.block = block; - } - - public float getAccelerometerX() { - return accelerometerX; - } - - public void setAccelerometerX(float accelerometerX) { - this.accelerometerX = accelerometerX; - } - - public float getAccelerometerY() { - return accelerometerY; - } - - public void setAccelerometerY(float accelerometerY) { - this.accelerometerY = accelerometerY; - } - - public float getAccelerometerZ() { - return accelerometerZ; - } - - public void setAccelerometerZ(float accelerometerZ) { - this.accelerometerZ = accelerometerZ; - } - - public float[] getAccelerometer() { - return new float[]{this.accelerometerX, this.accelerometerY, this.accelerometerZ}; - } - - public double getLat() { - return lat; - } - - public void setLat(double lat) { - this.lat = lat; - } - - public double getLon() { - return lon; - } - - public void setLon(double lon) { - this.lon = lon; - } - - @Override - public String toString() { - return "Block - " + block + ", Time - " + time + ", Accelerometer_X - " + accelerometerX + ", Accelerometer_Y - " + accelerometerY + ", Accelerometer_Z - " + accelerometerZ + ", Lat - " + lat + ", Lon - " + lon; - } -} diff --git a/app/src/main/java/io/pslab/models/BaroData.java b/app/src/main/java/io/pslab/models/BaroData.java deleted file mode 100644 index d8b5e69a1..000000000 --- a/app/src/main/java/io/pslab/models/BaroData.java +++ /dev/null @@ -1,82 +0,0 @@ -package io.pslab.models; - -import io.realm.RealmObject; -import io.realm.annotations.PrimaryKey; - -/** - * Created by Padmal on 12/13/18. - */ - -public class BaroData extends RealmObject { - - @PrimaryKey - private long time; - private long block; - private float baro; - private float altitude; - private double lat, lon; - - public BaroData() {/**/} - - public BaroData(long time, long block, float baro, float altitude, double lat, double lon) { - this.time = time; - this.block = block; - this.baro = baro; - this.altitude = altitude; - this.lat = lat; - this.lon = lon; - } - - public long getTime() { - return time; - } - - public void setTime(long time) { - this.time = time; - } - - public long getBlock() { - return block; - } - - public void setBlock(long block) { - this.block = block; - } - - public float getBaro() { - return baro; - } - - public void setBaro(float baro) { - this.baro = baro; - } - - public float getAltitude() { - return altitude; - } - - public void setAltitude(float altitude) { - this.altitude = altitude; - } - - public double getLat() { - return lat; - } - - public void setLat(double lat) { - this.lat = lat; - } - - public double getLon() { - return lon; - } - - public void setLon(double lon) { - this.lon = lon; - } - - @Override - public String toString() { - return "Block - " + block + ", Time - " + time + ", Baro - " + baro + ", Altitude - " + altitude + ", Lat - " + lat + ", Lon - " + lon; - } -} \ No newline at end of file diff --git a/app/src/main/java/io/pslab/models/CompassData.java b/app/src/main/java/io/pslab/models/CompassData.java deleted file mode 100644 index eb41bf592..000000000 --- a/app/src/main/java/io/pslab/models/CompassData.java +++ /dev/null @@ -1,95 +0,0 @@ -package io.pslab.models; - -import io.realm.RealmObject; - -public class CompassData extends RealmObject { - private Float Bx; - private Float By; - private Float Bz; - private String Axis = "X-axis"; - private long time; - private long block; - private double lat,lon; - - public CompassData() {/**/} - - public CompassData(long time, long block, float Bx, float By, float Bz, String axis, double lat, double lon) { - this.Bx = Bx; - this.By = By; - this.Bz = Bz; - this.time = time; - this.block = block; - this.lat = lat; - this.lon = lon; - this.Axis = axis; - } - - public Float getBx() { - return Bx; - } - - public void setBx(Float Bx) { - this.Bx = Bx; - } - - public Float getBy() { - return By; - } - - public void setBy(Float By) { - this.By = By; - } - - public Float getBz() { - return Bz; - } - - public void setBz(Float Bz) { - this.Bz = Bz; - } - - public void setAxis(String axis) { - Axis = axis; - } - - public String getAxis() { - return Axis; - } - - public void setBlock(long block) { - this.block = block; - } - - public long getBlock() { - return block; - } - - public void setTime(long time) { - this.time = time; - } - - public long getTime() { - return time; - } - - public void setLat(double lat) { - this.lat = lat; - } - - public double getLat() { - return lat; - } - - public void setLon(double lon) { - this.lon = lon; - } - - public double getLon() { - return lon; - } - - @Override - public String toString() { - return "Block - " + block + ", Time - " + time + ", Compass_X - " + Bx + ", Compass_Y - " + By + ", Compass_Z - " + Bz + ", Compass_axis" + Axis + ", Lat - " + lat + ", Lon - " + lon; - } -} diff --git a/app/src/main/java/io/pslab/models/DataMPU6050.java b/app/src/main/java/io/pslab/models/DataMPU6050.java deleted file mode 100644 index f37051fd8..000000000 --- a/app/src/main/java/io/pslab/models/DataMPU6050.java +++ /dev/null @@ -1,102 +0,0 @@ -package io.pslab.models; - -import io.realm.RealmObject; - -/** - * Created by viveksb007 on 4/8/17. - */ - -public class DataMPU6050 extends RealmObject { - - private long trial; - private long id; - private double ax, ay, az; - private double gx, gy, gz; - private double temperature; - - public DataMPU6050() { - - } - - public DataMPU6050(double ax, double ay, double az, double gx, double gy, double gz, double temperature) { - this.ax = ax; - this.ay = ay; - this.az = az; - this.gx = gx; - this.gy = gy; - this.gz = gz; - this.temperature = temperature; - } - - public double getAx() { - return ax; - } - - public void setAx(double ax) { - this.ax = ax; - } - - public double getAy() { - return ay; - } - - public void setAy(double ay) { - this.ay = ay; - } - - public double getAz() { - return az; - } - - public void setAz(double az) { - this.az = az; - } - - public double getGx() { - return gx; - } - - public void setGx(double gx) { - this.gx = gx; - } - - public double getGy() { - return gy; - } - - public void setGy(double gy) { - this.gy = gy; - } - - public double getGz() { - return gz; - } - - public void setGz(double gz) { - this.gz = gz; - } - - public double getTemperature() { - return temperature; - } - - public void setTemperature(double temperature) { - this.temperature = temperature; - } - - public long getTrial() { - return trial; - } - - public void setTrial(long trial) { - this.trial = trial; - } - - public long getId() { - return id; - } - - public void setId(long id) { - this.id = id; - } -} diff --git a/app/src/main/java/io/pslab/models/DustSensorData.java b/app/src/main/java/io/pslab/models/DustSensorData.java deleted file mode 100644 index b337d8b52..000000000 --- a/app/src/main/java/io/pslab/models/DustSensorData.java +++ /dev/null @@ -1,68 +0,0 @@ -package io.pslab.models; - -import io.realm.RealmObject; -import io.realm.annotations.PrimaryKey; - -public class DustSensorData extends RealmObject { - - @PrimaryKey - private long time; - private long block; - private float ppmValue; - private double lat, lon; - - public DustSensorData() { /**/ } - - public DustSensorData(long time, long block, float ppmValue, double lat, double lon) { - this.time = time; - this.block = block; - this.ppmValue = ppmValue; - this.lat = lat; - this.lon = lon; - } - - public long getTime() { - return time; - } - - public void setTime(long time) { - this.time = time; - } - - public long getBlock() { - return block; - } - - public void setBlock(long block) { - this.block = block; - } - - public float getPpmValue() { - return ppmValue; - } - - public void setPpmValue(float ppmValue) { - this.ppmValue = ppmValue; - } - - public double getLat() { - return lat; - } - - public void setLat(double lat) { - this.lat = lat; - } - - public double getLon() { - return lon; - } - - public void setLon(double lon) { - this.lon = lon; - } - - @Override - public String toString() { - return "Block - " + block + ", Time - " + time + ", PPM value - " + ppmValue + ", Lat - " + lat + ", Lon - " + lon; - } -} diff --git a/app/src/main/java/io/pslab/models/GasSensorData.java b/app/src/main/java/io/pslab/models/GasSensorData.java deleted file mode 100644 index 7613d23ce..000000000 --- a/app/src/main/java/io/pslab/models/GasSensorData.java +++ /dev/null @@ -1,68 +0,0 @@ -package io.pslab.models; - -import io.realm.RealmObject; -import io.realm.annotations.PrimaryKey; - -public class GasSensorData extends RealmObject { - - @PrimaryKey - private long time; - private long block; - private float ppmValue; - private double lat, lon; - - public GasSensorData() {/**/} - - public GasSensorData(long time, long block, float ppmValue, double lat, double lon) { - this.time = time; - this.block = block; - this.ppmValue = ppmValue; - this.lat = lat; - this.lon = lon; - } - - public long getTime() { - return time; - } - - public void setTime(long time) { - this.time = time; - } - - public long getBlock() { - return block; - } - - public void setBlock(long block) { - this.block = block; - } - - public float getPpmValue() { - return ppmValue; - } - - public void setPpmValue(float ppmValue) { - this.ppmValue = ppmValue; - } - - public double getLat() { - return lat; - } - - public void setLat(double lat) { - this.lat = lat; - } - - public double getLon() { - return lon; - } - - public void setLon(double lon) { - this.lon = lon; - } - - @Override - public String toString() { - return "Block - " + block + ", Time - " + time + ", PPM value - " + ppmValue + ", Lat - " + lat + ", Lon - " + lon; - } -} diff --git a/app/src/main/java/io/pslab/models/GyroData.java b/app/src/main/java/io/pslab/models/GyroData.java deleted file mode 100644 index e76d43274..000000000 --- a/app/src/main/java/io/pslab/models/GyroData.java +++ /dev/null @@ -1,91 +0,0 @@ -package io.pslab.models; - -import io.realm.RealmObject; -import io.realm.annotations.PrimaryKey; - -public class GyroData extends RealmObject { - - @PrimaryKey - private long time; - private long block; - private float gyro_x; - private float gyro_y; - private float gyro_z; - private double lat, lon; - - public GyroData() {/**/} - - public GyroData(long time, long block, float gyro_x, float gyro_y, float gyro_z, double lat, double lon) { - this.time = time; - this.block = block; - this.gyro_x = gyro_x; - this.gyro_y = gyro_y; - this.gyro_z = gyro_z; - this.lat = lat; - this.lon = lon; - } - - public long getTime() { - return time; - } - - public void setTime(long time) { - this.time = time; - } - - public long getBlock() { - return block; - } - - public void setBlock(long block) { - this.block = block; - } - - public float getGyroX() { - return gyro_x; - } - - public void setGyroX(float gyro_x) { - this.gyro_x = gyro_x; - } - - public float getGyroY() { - return gyro_y; - } - - public void setGyroY(float gyro_y) { - this.gyro_y = gyro_y; - } - - public float getGyroZ() { - return gyro_z; - } - - public void setGyroZ(float gyro_z) { - this.gyro_z = gyro_z; - } - - public float[] getGyro(){ - return new float[]{this.gyro_x, this.gyro_y, this.gyro_z}; - } - public double getLat() { - return lat; - } - - public void setLat(double lat) { - this.lat = lat; - } - - public double getLon() { - return lon; - } - - public void setLon(double lon) { - this.lon = lon; - } - - @Override - public String toString() { - return "Block - " + block + ", Time - " + time + ", Gyroscope_X - " + gyro_x + ", Gyroscope_Y - " + gyro_y + ", Gyroscope_Y - " + gyro_z + ", Lat - " + lat + ", Lon - " + lon; - } -} diff --git a/app/src/main/java/io/pslab/models/LogicAnalyzerData.java b/app/src/main/java/io/pslab/models/LogicAnalyzerData.java deleted file mode 100644 index 7f00bdf11..000000000 --- a/app/src/main/java/io/pslab/models/LogicAnalyzerData.java +++ /dev/null @@ -1,95 +0,0 @@ -package io.pslab.models; - -import io.realm.RealmObject; -import io.realm.annotations.PrimaryKey; - -public class LogicAnalyzerData extends RealmObject { - @PrimaryKey - private long time; - private long block; - private String dataX, dataY, channel; - private double lat, lon; - private int channelMode; - - public LogicAnalyzerData() {/**/} - - public LogicAnalyzerData(long time, long block, String channel, int channelMode, String dataX, String dataY, double lat, double lon) { - this.time = time; - this.block = block; - this.channel = channel; - this.channelMode = channelMode; - this.dataX = dataX; - this.dataY = dataY; - this.lat = lat; - this.lon = lon; - } - - public long getBlock() { - return block; - } - - public void setBlock(long block) { - this.block = block; - } - - public long getTime() { - return time; - } - - public void setTime(long time) { - this.time = time; - } - - public String getChannel() { - return channel; - } - - public void setChannel(String channel) { - this.channel = channel; - } - - public int getChannelMode() { - return channelMode; - } - - public void setChannelMode(int channelMode) { - this.channelMode = channelMode; - } - - public String getDataY() { - return dataY; - } - - public void setDataY(String dataY) { - this.dataY = dataY; - } - - public String getDataX() { - return dataX; - } - - public void setDataX(String dataX) { - this.dataX = dataX; - } - - public double getLon() { - return lon; - } - - public void setLon(double lon) { - this.lon = lon; - } - - public double getLat() { - return lat; - } - - public void setLat(double lat) { - this.lat = lat; - } - - @Override - public String toString() { - return "Block - " + block + ", Time - " + time + ", Channel - " + channel + ", ChannelMode - " + channelMode + ", dataX - " + dataX + ", dataY - " + dataY + ", Lat - " + lat + ", Lon - " + lon; - } -} diff --git a/app/src/main/java/io/pslab/models/LuxData.java b/app/src/main/java/io/pslab/models/LuxData.java deleted file mode 100644 index a596c5898..000000000 --- a/app/src/main/java/io/pslab/models/LuxData.java +++ /dev/null @@ -1,72 +0,0 @@ -package io.pslab.models; - -import io.realm.RealmObject; -import io.realm.annotations.PrimaryKey; - -/** - * Created by Avjeet on 31-07-2018. - */ - -public class LuxData extends RealmObject { - - @PrimaryKey - private long time; - private long block; - private float lux; - private double lat, lon; - - public LuxData() {/**/} - - public LuxData(long time, long block, float lux, double lat, double lon) { - this.time = time; - this.block = block; - this.lux = lux; - this.lat = lat; - this.lon = lon; - } - - public long getTime() { - return time; - } - - public void setTime(long time) { - this.time = time; - } - - public long getBlock() { - return block; - } - - public void setBlock(long block) { - this.block = block; - } - - public float getLux() { - return lux; - } - - public void setLux(float lux) { - this.lux = lux; - } - - public double getLat() { - return lat; - } - - public void setLat(double lat) { - this.lat = lat; - } - - public double getLon() { - return lon; - } - - public void setLon(double lon) { - this.lon = lon; - } - - @Override - public String toString() { - return "Block - " + block + ", Time - " + time + ", Lux - " + lux + ", Lat - " + lat + ", Lon - " + lon; - } -} diff --git a/app/src/main/java/io/pslab/models/MultimeterData.java b/app/src/main/java/io/pslab/models/MultimeterData.java deleted file mode 100644 index f5c51b0a0..000000000 --- a/app/src/main/java/io/pslab/models/MultimeterData.java +++ /dev/null @@ -1,78 +0,0 @@ -package io.pslab.models; - -import io.realm.RealmObject; -import io.realm.annotations.PrimaryKey; - -public class MultimeterData extends RealmObject { - @PrimaryKey - private long time; - private long block; - private String data; - private String value; - private double lat; - private double lon; - - public MultimeterData() {/**/} - - public MultimeterData(long time, long block, String data, String value, double lat, double lon) { - this.time = time; - this.block = block; - this.data = data; - this.value = value; - this.lat = lat; - this.lon = lon; - } - - public long getTime() { - return time; - } - - public void setTime(long time) { - this.time = time; - } - - public long getBlock() { - return block; - } - - public void setBlock(long block) { - this.block = block; - } - - public String getData() { - return data; - } - - public void setData(String data) { - this.data = data; - } - - public String getValue() { - return value; - } - - public void setValue(String value) { - this.value = value; - } - - public double getLat() { - return lat; - } - - public void setLat(double lat) { - this.lat = lat; - } - - public double getLon() { - return lon; - } - - public void setLon(double lon) { - this.lon = lon; - } - - @Override - public String toString() { - return "Block - " + block + ", Time - " + time + ", Data - " + data + ", Value - " + value + ", Lat - " + lat + ", Lon - " + lon; - } -} diff --git a/app/src/main/java/io/pslab/models/OscilloscopeData.java b/app/src/main/java/io/pslab/models/OscilloscopeData.java deleted file mode 100644 index 74b835636..000000000 --- a/app/src/main/java/io/pslab/models/OscilloscopeData.java +++ /dev/null @@ -1,105 +0,0 @@ -package io.pslab.models; - -import io.realm.RealmObject; -import io.realm.annotations.PrimaryKey; - -public class OscilloscopeData extends RealmObject { - - @PrimaryKey - private long time; - private long block; - private String dataX, dataY, channel; - private double lat, lon, timebase; - private int mode; - - public OscilloscopeData() {/**/} - - public OscilloscopeData(long time, long block, int mode, String channel, String dataX, String dataY, double timebase, double lat, double lon) { - this.time = time; - this.block = block; - this.mode = mode; - this.channel = channel; - this.dataX = dataX; - this.dataY = dataY; - this.timebase = timebase; - this.lat = lat; - this.lon = lon; - } - - public long getTime() { - return time; - } - - public void setTime(long time) { - this.time = time; - } - - public long getBlock() { - return block; - } - - public void setBlock(long block) { - this.block = block; - } - - public String getDataX() { - return dataX; - } - - public void setDataX(String dataX) { - this.dataX = dataX; - } - - public String getChannel() { - return channel; - } - - public void setChannel(String channel) { - this.channel = channel; - } - - public int getMode() { - return mode; - } - - public void setMode(int mode) { - this.mode = mode; - } - - public String getDataY() { - return dataY; - } - - public void setDataY(String dataY) { - this.dataY = dataY; - } - - public double getTimebase() { - return timebase; - } - - public void setTimebase(double timebase) { - this.timebase = timebase; - } - - public double getLon() { - return lon; - } - - public void setLon(double lon) { - this.lon = lon; - } - - public double getLat() { - return lat; - } - - public void setLat(double lat) { - this.lat = lat; - } - - @Override - public String toString() { - return "Block - " + block + ", Time - " + time + ", Channel - " + channel + ", Mode - " + mode + ", dataX - " + dataX + ", dataY - " + dataY + ", timebase - " + timebase + ", Lat - " + lat + ", Lon - " + lon; - } -} diff --git a/app/src/main/java/io/pslab/models/PSLabSensor.java b/app/src/main/java/io/pslab/models/PSLabSensor.java deleted file mode 100644 index c1cf246b3..000000000 --- a/app/src/main/java/io/pslab/models/PSLabSensor.java +++ /dev/null @@ -1,535 +0,0 @@ -package io.pslab.models; - -import android.content.Context; -import android.content.Intent; -import android.content.SharedPreferences; -import android.content.pm.PackageManager; -import android.location.LocationManager; -import android.os.Bundle; -import android.os.Environment; -import android.view.LayoutInflater; -import android.view.Menu; -import android.view.MenuInflater; -import android.view.MenuItem; -import android.view.View; -import android.widget.ImageView; -import android.widget.LinearLayout; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.appcompat.app.ActionBar; -import androidx.appcompat.widget.Toolbar; -import androidx.coordinatorlayout.widget.CoordinatorLayout; -import androidx.fragment.app.Fragment; -import androidx.fragment.app.FragmentTransaction; - -import com.google.android.material.snackbar.Snackbar; - -import org.json.JSONArray; - -import java.io.File; -import java.io.IOException; -import java.text.SimpleDateFormat; -import java.util.Locale; - -import butterknife.BindView; -import butterknife.ButterKnife; -import io.pslab.R; -import io.pslab.activity.DataLoggerActivity; -import io.pslab.activity.MapsActivity; -import io.pslab.activity.SettingsActivity; -import io.pslab.activity.guide.GuideActivity; -import io.pslab.communication.ScienceLab; -import io.pslab.fragment.SoundMeterDataFragment; -import io.pslab.interfaces.OperationCallback; -import io.pslab.others.CSVLogger; -import io.pslab.others.CustomSnackBar; -import io.pslab.others.GPSLogger; -import io.pslab.others.LocalDataLog; -import io.pslab.others.PSLabPermission; -import io.pslab.others.ScienceLabCommon; -import io.realm.Realm; -import io.realm.RealmObject; - -public abstract class PSLabSensor extends GuideActivity { - - public boolean isRecording = false; - public boolean locationEnabled = true; - public boolean addLocation = true; - public boolean checkGPSOnResume = false; - public boolean writeHeaderToFile = true; - public boolean playingData = false; - public boolean viewingData = false; - public boolean startedPlay = false; - - public CoordinatorLayout sensorParentView; - public ScienceLab scienceLab; - - public JSONArray markers; - - public Fragment sensorFragment; - public PSLabPermission psLabPermission; - public GPSLogger gpsLogger; - public CSVLogger csvLogger; - public Realm realm; - private Intent map; - - public SimpleDateFormat titleFormat; - public final String KEY_LOG = "has_log"; - public final String DATA_BLOCK = "data_block"; - - public static final String LUXMETER = "Lux Meter"; - public static final String LUXMETER_CONFIGURATIONS = "Lux Meter Configurations"; - public static final String LUXMETER_DATA_FORMAT = "%.2f"; - public static final String BAROMETER = "Barometer"; - public static final String BAROMETER_CONFIGURATIONS = "Barometer Configurations"; - public static final String BAROMETER_DATA_FORMAT = "%.2f"; - public static final String GYROSCOPE = "Gyroscope"; - public static final String GYROSCOPE_DATA_FORMAT = "%.2f"; - public static final String GYROSCOPE_CONFIGURATIONS = "Gyroscope Configurations"; - public static final String COMPASS = "Compass"; - public static final String COMPASS_CONFIGURATIONS = "Compass Configurations"; - public static final String ACCELEROMETER = "Accelerometer"; - public static final String ACCELEROMETER_CONFIGURATIONS = "Accelerometer Configurations"; - public static final String THERMOMETER = "Thermometer"; - public static final String THERMOMETER_CONFIGURATIONS = "Thermometer Configurations"; - public static final String THERMOMETER_DATA_FORMAT = "%.2f"; - public static final String DUSTSENSOR_CONFIGURATIONS = "Dust Sensor Configurations"; - public static final String ROBOTIC_ARM = "Robotic Arm"; - public static final String WAVE_GENERATOR = "Wave Generator"; - public static final String OSCILLOSCOPE = "Oscilloscope"; - public static final String POWER_SOURCE = "Power Source"; - public static final String MULTIMETER = "Multimeter"; - public static final String LOGIC_ANALYZER = "Logic Analyzer"; - public static final String GAS_SENSOR = "Gas Sensor"; - public static final String SOUND_METER = "Sound Meter"; - public static final String SOUNDMETER_CONFIGURATIONS = "Sound Meter Configurations"; - public static final String SOUNDMETER_DATA_FORMAT = "%.2f"; - - @BindView(R.id.sensor_toolbar) - Toolbar sensorToolBar; - @BindView(R.id.sensor_cl) - CoordinatorLayout coordinatorLayout; - - @BindView(R.id.guide_title) - TextView bottomSheetGuideTitle; - @BindView(R.id.custom_dialog_text) - TextView bottomSheetText; - @BindView(R.id.custom_dialog_schematic) - ImageView bottomSheetSchematic; - @BindView(R.id.custom_dialog_desc) - TextView bottomSheetDesc; - @BindView(R.id.custom_dialog_additional_content) - LinearLayout bottomSheetAdditionalContent; - - public PSLabSensor() { - super(R.layout.activity_generic_sensor); - } - - /** - * Getting menu layout distinct to each sensor - * - * @return Menu resource file in 'R.menu.id' format - */ - public abstract int getMenu(); - - /** - * Getting saved setting configurations for dialogs - * - * @return SharedPreferences in Private mode - */ - public abstract SharedPreferences getStateSettings(); - - /** - * Getting ID to fetch first time usage of each sensor - * - * @return String ID of the first time usage ID of sensor - */ - public abstract String getFirstTimeSettingID(); - - /** - * Sensor ID - * - * @return String ID of the sensor - */ - public abstract String getSensorName(); - - /** - * Title of the sensor guide - * - * @return Sensor name as a String resource - */ - public abstract int getGuideTitle(); - - /** - * Abstract of the sensor guide - * - * @return Sensor abstract as a String resource - */ - public abstract int getGuideAbstract(); - - /** - * Circuit diagrams and pin settings for the sensor - * - * @return Schematics as a drawable resource - */ - public abstract int getGuideSchematics(); - - /** - * Description of the sensor guide - * - * @return Sensor guide description as a String resource - */ - public abstract int getGuideDescription(); - - /** - * Extra content for a specific sensor if it is not a generic one - * - * @return Layout id of the content file - */ - public abstract int getGuideExtraContent(); - - /** - * This method will create a new entry in Realm database with a new block - * - * @param block Start timestamp of the recording - */ - public abstract void recordSensorDataBlockID(SensorDataBlock block); - - /** - * This method will be called upon when menu button for recording data has been clicked - */ - public abstract void recordSensorData(RealmObject sensorData); - - /** - * This method will be called upon when menu button for stop recording data has been clicked - */ - public abstract void stopRecordSensorData(); - - /** - * Fragment implementation of each individual sensor - * - * @return Custom fragment instance of the sensor - */ - public abstract Fragment getSensorFragment(); - - /** - * This method will fetch logged data information from the data logger activity - */ - public abstract void getDataFromDataLogger(); - - /** - * This method will check whether the device has in-built sensor or not - **/ - public abstract boolean sensorFound(); - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - ButterKnife.bind(this); - setSupportActionBar(sensorToolBar); - final ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setTitle(getSensorName()); - actionBar.setDisplayHomeAsUpEnabled(true); - } - markers = new JSONArray(); - psLabPermission = PSLabPermission.getInstance(); - gpsLogger = new GPSLogger(this, - (LocationManager) getSystemService(Context.LOCATION_SERVICE)); - map = new Intent(this, MapsActivity.class); - csvLogger = new CSVLogger(getSensorName()); - realm = LocalDataLog.with().getRealm(); - titleFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.ROOT); - sensorParentView = coordinatorLayout; - setupGuideLayout(); - fillUpFragment(); - invalidateOptionsMenu(); - scienceLab = ScienceLabCommon.scienceLab; - } - - /** - * Fill up the frame with the individual sensor fragment layout - */ - private void fillUpFragment() { - try { - FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); - sensorFragment = getSensorFragment(); - transaction.replace(R.id.sensor_frame, sensorFragment, getSensorName()); - transaction.commit(); - } catch (Exception e) { - e.printStackTrace(); - } - } - - private void setUpMenu(Menu menu) { - if (playingData || viewingData) { - for (int i = 0; i < menu.size(); i++) { - menu.getItem(i).setVisible(false); - } - } - menu.findItem(R.id.save_graph).setVisible(viewingData || playingData); - menu.findItem(R.id.play_data).setVisible(viewingData || playingData); - menu.findItem(R.id.settings).setTitle(getSensorName() + " Configurations"); - menu.findItem(R.id.stop_data).setVisible(viewingData).setEnabled(startedPlay); - } - - @Override - public boolean onCreateOptionsMenu(Menu menu) { - MenuInflater inflater = getMenuInflater(); - inflater.inflate(getMenu(), menu); - setUpMenu(menu); - return true; - } - - @Override - public boolean onPrepareOptionsMenu(Menu menu) { - MenuItem record = menu.findItem(R.id.record_data); - record.setIcon(isRecording ? R.drawable.ic_record_stop_white : R.drawable.ic_record_white); - MenuItem play = menu.findItem(R.id.play_data); - play.setIcon(playingData ? R.drawable.ic_pause_white_24dp : R.drawable.ic_play_arrow_white_24dp); - MenuItem stop = menu.findItem(R.id.stop_data); - stop.setVisible(startedPlay); - return super.onPrepareOptionsMenu(menu); - } - - private void prepareMarkers() { - if (markers.length() > 0) { - map.putExtra("hasMarkers", true); - map.putExtra("markers", markers.toString()); - } else { - map.putExtra("hasMarkers", false); - } - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - - Fragment fragment; - - switch (item.getItemId()) { - /* - When record data button has been pressed, check if the device has write permission - to log and access to location. checkPermission method will prompt user with a dialog - box to allow app to use those features. Upon allowing, onRequestPermissionsResult - will fire up. If user declines to give permission, don't do anything. - */ - case R.id.record_data: - if (!isRecording && (sensorFound() || scienceLab.isConnected())) { - dataRecordingCycle(); - } else if (!isRecording && !sensorFound() && !scienceLab.isConnected()) { - CustomSnackBar.showSnackBar(sensorParentView, getString(R.string.device_not_connected), null, null, Snackbar.LENGTH_SHORT); - } else { - stopRecordSensorData(); - displayLogLocationOnSnackBar(); - isRecording = false; - prepareMarkers(); - } - invalidateOptionsMenu(); - break; - case R.id.play_data: - playingData = !playingData; - if (!startedPlay) { - fragment = getSupportFragmentManager() - .findFragmentByTag(getSensorName()); - - if (fragment instanceof OperationCallback) { - ((OperationCallback) fragment).playData(); - } - } else { - if (getSensorFragment() instanceof SoundMeterDataFragment) { - if (!playingData) { - ((SoundMeterDataFragment) getSupportFragmentManager() - .findFragmentByTag(getSensorName())).pause(); - } else { - ((SoundMeterDataFragment) getSupportFragmentManager() - .findFragmentByTag(getSensorName())).resume(); - } - } - } - invalidateOptionsMenu(); - break; - case R.id.stop_data: - fragment = getSupportFragmentManager() - .findFragmentByTag(getSensorName()); - - if (fragment instanceof OperationCallback) { - ((OperationCallback) fragment).stopData(); - } - break; - case R.id.show_map: - if (psLabPermission.checkPermissions(PSLabSensor.this, - PSLabPermission.MAP_PERMISSION)) { - startActivity(map); - } - break; - case R.id.settings: - Intent settingIntent = new Intent(this, SettingsActivity.class); - settingIntent.putExtra("title", getSensorName() + " Configurations"); - startActivity(settingIntent); - break; - case R.id.show_logged_data: - if (psLabPermission.checkPermissions(PSLabSensor.this, - PSLabPermission.CSV_PERMISSION)) { - Intent intent = new Intent(this, DataLoggerActivity.class); - intent.putExtra(DataLoggerActivity.CALLER_ACTIVITY, getSensorName()); - startActivity(intent); - } - break; - case R.id.show_guide: - toggleGuide(); - break; - case R.id.save_graph: - displayLogLocationOnSnackBar(); - fragment = getSupportFragmentManager() - .findFragmentByTag(getSensorName()); - - if (fragment instanceof OperationCallback) { - ((OperationCallback) fragment).saveGraph(); - } - break; - case android.R.id.home: - this.finish(); - break; - default: - break; - } - return true; - } - - private void dataRecordingCycle() { - if (psLabPermission.checkPermissions(PSLabSensor.this, PSLabPermission.LOG_PERMISSION)) { - if (locationEnabled) { - if (psLabPermission.checkPermissions(PSLabSensor.this, PSLabPermission.GPS_PERMISSION)) { - gpsRecordingCycle(); - } - } else { - CustomSnackBar.showSnackBar(sensorParentView, - getString(R.string.data_recording_without_location), null, null, Snackbar.LENGTH_LONG); - isRecording = true; - } - } - } - - private void gpsRecordingCycle() { - addLocation = true; - gpsLogger.startCaptureLocation(); - if (gpsLogger.isGPSEnabled()) { - CustomSnackBar.showSnackBar(sensorParentView, - getString(R.string.data_recording_with_location), null, null, Snackbar.LENGTH_LONG); - isRecording = true; - } else { - gpsLogger.gpsAlert.show(); - } - } - - public void displayLogLocationOnSnackBar() { - final File logDirectory = new File( - Environment.getExternalStorageDirectory().getAbsolutePath() + - File.separator + CSVLogger.CSV_DIRECTORY + File.separator + getSensorName()); - String logLocation; - try { - logLocation = getString(R.string.log_saved_directory) + logDirectory.getCanonicalPath(); - } catch (IOException e) { - // This message wouldn't appear in usual cases. Added in order to handle ex: - logLocation = getString(R.string.log_saved_failed); - } - CustomSnackBar.showSnackBar(sensorParentView, logLocation, getString(R.string.open), - new View.OnClickListener() { - @Override - public void onClick(View view) { - Intent intent = new Intent(PSLabSensor.this, DataLoggerActivity.class); - intent.putExtra(DataLoggerActivity.CALLER_ACTIVITY, getSensorName()); - startActivity(intent); - } - }, Snackbar.LENGTH_INDEFINITE); - } - - private void nogpsRecordingCycle() { - CustomSnackBar.showSnackBar(sensorParentView, - getString(R.string.data_recording_without_location), null, null, Snackbar.LENGTH_LONG); - addLocation = false; - isRecording = true; - } - - @Override - public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, - @NonNull int[] grantResults) { - super.onRequestPermissionsResult(requestCode, permissions, grantResults); - switch (requestCode) { - case PSLabPermission.MAP_PERMISSION: - if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { - Intent map = new Intent(getApplicationContext(), MapsActivity.class); - startActivity(map); - } else { - CustomSnackBar.showSnackBar(findViewById(android.R.id.content), - getString(R.string.no_permission_for_maps), null, null, Snackbar.LENGTH_LONG); - } - break; - case PSLabPermission.LOG_PERMISSION: - if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { - dataRecordingCycle(); - invalidateOptionsMenu(); - } - break; - case PSLabPermission.GPS_PERMISSION: - if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { - gpsRecordingCycle(); - } else { - nogpsRecordingCycle(); - } - invalidateOptionsMenu(); - break; - case PSLabPermission.CSV_PERMISSION: - if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { - Intent intent = new Intent(this, DataLoggerActivity.class); - intent.putExtra(DataLoggerActivity.CALLER_ACTIVITY, getSensorName()); - startActivity(intent); - } - break; - default: - break; - } - } - - /** - * Inflate each individual view with content to fill up the sensor guide - */ - private void setupGuideLayout() { - bottomSheetGuideTitle.setText(getGuideTitle()); - bottomSheetText.setText(getGuideAbstract()); - bottomSheetSchematic.setImageResource(getGuideSchematics()); - bottomSheetDesc.setText(getGuideDescription()); - // if sensor doesn't image in it's guide and hence returns 0 for getGuideSchematics(), hide the visibility of bottomSheetSchematic - if (getGuideSchematics() != 0) { - bottomSheetSchematic.setImageResource(getGuideSchematics()); - } else { - bottomSheetSchematic.setVisibility(View.GONE); - } - // If a sensor has extra content than provided in the standard layout, create a new layout - // and attach the layout id with getGuideExtraContent() - if (getGuideExtraContent() != 0) { - LayoutInflater I = (LayoutInflater) this.getSystemService(LAYOUT_INFLATER_SERVICE); - assert I != null; - View childLayout = I.inflate(getGuideExtraContent(), null); - bottomSheetAdditionalContent.addView(childLayout); - } - } - - @Override - protected void onResume() { - super.onResume(); - try { - getDataFromDataLogger(); - } catch (ArrayIndexOutOfBoundsException e) { - CustomSnackBar.showSnackBar(findViewById(android.R.id.content), - getString(R.string.no_data_fetched), null, null, Snackbar.LENGTH_LONG); - } - if (checkGPSOnResume) { - isRecording = true; - checkGPSOnResume = false; - invalidateOptionsMenu(); - } - } -} diff --git a/app/src/main/java/io/pslab/models/PowerSourceData.java b/app/src/main/java/io/pslab/models/PowerSourceData.java deleted file mode 100644 index 971594f75..000000000 --- a/app/src/main/java/io/pslab/models/PowerSourceData.java +++ /dev/null @@ -1,99 +0,0 @@ -package io.pslab.models; - -import io.realm.RealmObject; -import io.realm.annotations.PrimaryKey; - -public class PowerSourceData extends RealmObject { - - @PrimaryKey - private long time; - private long block; - private float pv1; - private float pv2; - private float pv3; - private float pcs; - private double lat; - private double lon; - - public PowerSourceData() {/**/} - - public PowerSourceData(long time, long block, float pv1, float pv2, float pv3, float pcs, double lat, double lon) { - this.time = time; - this.block = block; - this.pv1 = pv1; - this.pv2 = pv2; - this.pv3 = pv3; - this.pcs = pcs; - this.lat = lat; - this.lon = lon; - } - - public float getPv1() { - return pv1; - } - - public void setPv1(float pv1) { - this.pv1 = pv1; - } - - public float getPv2() { - return pv2; - } - - public void setPv2(float pv2) { - this.pv2 = pv2; - } - - public float getPv3() { - return pv3; - } - - public void setPv3(float pv3) { - this.pv3 = pv3; - } - - public float getPcs() { - return pcs; - } - - public void setPcs(float pcs) { - this.pcs = pcs; - } - - public long getBlock() { - return block; - } - - public void setBlock(long block) { - this.block = block; - } - - public long getTime() { - return time; - } - - public void setTime(long time) { - this.time = time; - } - - public double getLat() { - return lat; - } - - public void setLat(double lat) { - this.lat = lat; - } - - public double getLon() { - return lon; - } - - public void setLon(double lon) { - this.lon = lon; - } - - @Override - public String toString() { - return "Block - " + block + ", Time - " + time + ", PV1 - " + pv1 + ", PV2 - " + pv2 + ", PV3 - " + pv3 + ", PCS - " + pcs + ", Lat - " + lat + ", Lon - " + lon; - } -} diff --git a/app/src/main/java/io/pslab/models/SensorDataBlock.java b/app/src/main/java/io/pslab/models/SensorDataBlock.java deleted file mode 100644 index e25d8a200..000000000 --- a/app/src/main/java/io/pslab/models/SensorDataBlock.java +++ /dev/null @@ -1,36 +0,0 @@ -package io.pslab.models; - -import io.realm.RealmObject; - -/** - * Created by Padmal on 11/5/18. - */ - -public class SensorDataBlock extends RealmObject { - - private long block; - private String sensorType; - - public SensorDataBlock() {/**/} - - public SensorDataBlock(long block, String sensorType) { - this.block = block; - this.sensorType = sensorType; - } - - public long getBlock() { - return block; - } - - public void setBlock(long block) { - this.block = block; - } - - public String getSensorType() { - return sensorType; - } - - public void setSensorType(String sensorType) { - this.sensorType = sensorType; - } -} diff --git a/app/src/main/java/io/pslab/models/SensorLogged.java b/app/src/main/java/io/pslab/models/SensorLogged.java deleted file mode 100644 index 26b71f1ff..000000000 --- a/app/src/main/java/io/pslab/models/SensorLogged.java +++ /dev/null @@ -1,86 +0,0 @@ -package io.pslab.models; - -import io.realm.RealmObject; -import io.realm.annotations.PrimaryKey; - -/** - * Created by viveksb007 on 15/8/17. - */ - -public class SensorLogged extends RealmObject { - - private String sensor; - private long dateTimeStart; - @PrimaryKey - private long uniqueRef; - private double latitude; - private double longitude; - private long dateTimeEnd; - private String timeZone; - - - public SensorLogged() { - } - - public SensorLogged(String sensor) { - this.sensor = sensor; - } - - public String getSensor() { - return sensor; - } - - public void setSensor(String sensor) { - this.sensor = sensor; - } - - public long getDateTimeStart() { - return dateTimeStart; - } - - public void setDateTimeStart(long dateTimeStart) { - this.dateTimeStart = dateTimeStart; - } - - public long getUniqueRef() { - return uniqueRef; - } - - public void setUniqueRef(long uniqueRef) { - this.uniqueRef = uniqueRef; - } - - public double getLatitude() { - return latitude; - } - - public void setLatitude(double latitude) { - this.latitude = latitude; - } - - public double getLongitude() { - return longitude; - } - - public void setLongitude(double longitude) { - this.longitude = longitude; - } - - - public long getDateTimeEnd() { - return dateTimeEnd; - } - - public void setDateTimeEnd(long dateTimeEnd) { - this.dateTimeEnd = dateTimeEnd; - } - - - public String getTimeZone() { - return timeZone; - } - - public void setTimeZone(String timeZone) { - this.timeZone = timeZone; - } -} diff --git a/app/src/main/java/io/pslab/models/ServoData.java b/app/src/main/java/io/pslab/models/ServoData.java deleted file mode 100644 index 2ff93d3a3..000000000 --- a/app/src/main/java/io/pslab/models/ServoData.java +++ /dev/null @@ -1,95 +0,0 @@ -package io.pslab.models; - -import io.realm.RealmObject; -import io.realm.annotations.PrimaryKey; - -public class ServoData extends RealmObject { - - @PrimaryKey - private long time; - private long block; - private String degree1, degree2, degree3, degree4; - private double lat, lon; - - public ServoData() {/**/} - - public ServoData(long time, long block, String degree1, String degree2, String degree3, String degree4, double lat, double lon) { - this.time = time; - this.block = block; - this.degree1 = degree1; - this.degree2 = degree2; - this.degree3 = degree3; - this.degree4 = degree4; - this.lat = lat; - this.lon = lon; - } - - public long getTime() { - return time; - } - - public void setTime(long time) { - this.time = time; - } - - public long getBlock() { - return block; - } - - public void setBlock(long block) { - this.block = block; - } - - public String getDegree1() { - return degree1; - } - - public void setDegree1(String degree) { - this.degree1 = degree; - } - - public String getDegree2() { - return degree2; - } - - public void setDegree2(String degree) { - this.degree2 = degree; - } - - public String getDegree3() { - return degree3; - } - - public void setDegree3(String degree) { - this.degree3 = degree; - } - - public String getDegree4() { - return degree4; - } - - public void setDegree4(String degree) { - this.degree4 = degree; - } - - public double getLat() { - return lat; - } - - public void setLat(double lat) { - this.lat = lat; - } - - public double getLon() { - return lon; - } - - public void setLon(double lon) { - this.lon = lon; - } - - @Override - public String toString() { - return "Block - " + block + ", Time - " + time + ", Servo1 - " + degree1 + ", Servo2 - " + degree2 + ", Servo3 - " + degree3 + ", Servo4 - " + degree4 + ", Lat - " + lat + ", Lon - " + lon; - } -} diff --git a/app/src/main/java/io/pslab/models/SoundData.java b/app/src/main/java/io/pslab/models/SoundData.java deleted file mode 100644 index ae07b47c7..000000000 --- a/app/src/main/java/io/pslab/models/SoundData.java +++ /dev/null @@ -1,67 +0,0 @@ -package io.pslab.models; - -import io.realm.RealmObject; -import io.realm.annotations.PrimaryKey; - -/** - * @author reckoner1429 - */ -public class SoundData extends RealmObject { - - @PrimaryKey - private long time; - private long block; - private float dB; - private float avgLoudness; - private float maxLoudness; - private float minLoudness; - private double lat; - private double lon; - - public SoundData() { - /* no arg constructor */ - } - - public SoundData(long time, long block, float dB, float avgLoudness, float maxLoudness, - float minLoudness, double lat, double lon) { - this.time = time; - this.block = block; - this.dB = dB; - this.avgLoudness = avgLoudness; - this.minLoudness = minLoudness; - this.maxLoudness = maxLoudness; - this.lat = lat; - this.lon = lon; - } - public long getTime() { - return time; - } - - public long getBlock() { - return block; - } - - public float getdB() { - return dB; - } - - public double getLat() { - return lat; - } - - public double getLon() { - return lon; - } - - public float getAvgLoudness() { - return avgLoudness; - } - - public float getMaxLoudness() { - return maxLoudness; - } - - public float getMinLoudness() { - return minLoudness; - } -} diff --git a/app/src/main/java/io/pslab/models/ThermometerData.java b/app/src/main/java/io/pslab/models/ThermometerData.java deleted file mode 100644 index 56d4e9a1d..000000000 --- a/app/src/main/java/io/pslab/models/ThermometerData.java +++ /dev/null @@ -1,67 +0,0 @@ -package io.pslab.models; - -import io.realm.RealmObject; - -public class ThermometerData extends RealmObject { - private long time; - private long block; - private float temp; - private double lat, lon; - - public ThermometerData() {/**/} - - public ThermometerData(long time, long block,float temp, double lat, double lon) { - - this.time = time; - this.block = block; - this.lat = lat; - this.lon = lon; - this.temp = temp; - - } - - public long getTime() { - return time; - } - - public void setTime(long time) { - this.time = time; - } - - public long getBlock() { - return block; - } - - public void setBlock(long block) { - this.block = block; - } - - public float getTemp() { - return temp; - } - - public void setTemp(float temp) { - this.temp = temp; - } - - public double getLat() { - return lat; - } - - public void setLat(double lat) { - this.lat = lat; - } - - public double getLon() { - return lon; - } - - public void setLon(double lon) { - this.lon = lon; - } - - @Override - public String toString() { - return "Block - " + block + ", Time - " + time + ",Temperature - " + temp + ", Lat - " + lat + ", Lon - " + lon; - } -} diff --git a/app/src/main/java/io/pslab/models/WaveGeneratorData.java b/app/src/main/java/io/pslab/models/WaveGeneratorData.java deleted file mode 100644 index 3d3c5d4b8..000000000 --- a/app/src/main/java/io/pslab/models/WaveGeneratorData.java +++ /dev/null @@ -1,113 +0,0 @@ -package io.pslab.models; - -import io.realm.RealmObject; -import io.realm.annotations.PrimaryKey; - -public class WaveGeneratorData extends RealmObject { - - @PrimaryKey - private long time; - private long block; - private String mode, wave, shape, freq, phase, duty; - private double lat, lon; - - public WaveGeneratorData() {/**/} - - public WaveGeneratorData(long time, long block, String mode, String wave, String shape, String freq, String phase, String duty, double lat, double lon) { - this.time = time; - this.block = block; - this.mode = mode; - this.wave = wave; - this.shape = shape; - this.freq = freq; - this.phase = phase; - this.duty = duty; - this.lat = lat; - this.lon = lon; - } - - public long getTime() { - return time; - } - - public void setTime(long time) { - this.time = time; - } - - public long getBlock() { - return block; - } - - public void setBlock(long block) { - this.block = block; - } - - public String getMode() { - return mode; - } - - public void setMode(String mode) { - this.mode = mode; - } - - public String getFreq() { - return freq; - } - - public void setFreq(String freq) { - this.freq = freq; - } - - public String getWave() { - return wave; - } - - public void setWave(String wave) { - this.wave = wave; - } - - public String getShape() { - return shape; - } - - public void setShape(String shape) { - this.shape = shape; - } - - public String getDuty() { - return duty; - } - - public void setDuty(String duty) { - this.duty = duty; - } - - public String getPhase() { - return phase; - } - - public void setPhase(String phase) { - this.phase = phase; - } - - public double getLat() { - return lat; - } - - public void setLat(double lat) { - this.lat = lat; - } - - public double getLon() { - return lon; - } - - public void setLon(double lon) { - this.lon = lon; - } - - @Override - public String toString() { - return "Block - " + block + ", Time - " + time + ", Mode - " + mode + ", Wave - " + wave + ", Shape - " + shape + ", Freq - " + freq + ", Phase - " + phase + ", Duty - " + duty + ", Lat - " + lat + ", Lon - " + lon; - } -} diff --git a/app/src/main/java/io/pslab/others/AudioJack.java b/app/src/main/java/io/pslab/others/AudioJack.java deleted file mode 100644 index ac6836aab..000000000 --- a/app/src/main/java/io/pslab/others/AudioJack.java +++ /dev/null @@ -1,122 +0,0 @@ -package io.pslab.others; - -import android.media.AudioFormat; -import android.media.AudioManager; -import android.media.AudioRecord; -import android.media.AudioTrack; -import android.media.MediaRecorder; -import android.util.Log; - -import java.util.Random; - -/** - * Created by viveksb007 on 11/7/17. - */ - -public class AudioJack { - - /* TODO : Output value in buffer would be between -2^16 and 2^16, need to map it too or show its FFT */ - - private static final String TAG = "AudioJack"; - - public static final int SAMPLING_RATE = 44100; - private static final int RECORDING_CHANNEL = AudioFormat.CHANNEL_IN_MONO; - private static final int RECORDER_AUDIO_ENCODING = AudioFormat.ENCODING_PCM_16BIT; - - private AudioRecord audioRecord = null; - private AudioTrack audioTrack = null; - private int minRecorderBufferSize; - private int minTrackBufferSize; - private String io; - private Random random; - - public boolean configurationStatus; - - /* - * Context to obtain AudioManager Instance and string io to classify if requested input or output. - * */ - public AudioJack(String io) { - this.io = io; - random = new Random(); - configurationStatus = configure(); - } - - private boolean configure() { - if ("input".equals(io)) { - /* Initialize audioRecord */ - minRecorderBufferSize = AudioRecord.getMinBufferSize(SAMPLING_RATE, RECORDING_CHANNEL, RECORDER_AUDIO_ENCODING); - if (minRecorderBufferSize == AudioRecord.ERROR || minRecorderBufferSize == AudioRecord.ERROR_BAD_VALUE) { - minRecorderBufferSize = SAMPLING_RATE * 2; - } - audioRecord = new AudioRecord( - MediaRecorder.AudioSource.MIC, - SAMPLING_RATE, - RECORDING_CHANNEL, - RECORDER_AUDIO_ENCODING, - minRecorderBufferSize); - if (audioRecord.getState() != AudioRecord.STATE_INITIALIZED) { - Log.e(TAG, "Audio Record can't be initialized"); - return false; - } - audioRecord.startRecording(); - } else { - /* Initialize audioTrack */ - minTrackBufferSize = AudioTrack.getMinBufferSize(SAMPLING_RATE, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT); - if (minTrackBufferSize == AudioTrack.ERROR || minTrackBufferSize == AudioTrack.ERROR_BAD_VALUE) { - minTrackBufferSize = SAMPLING_RATE * 2; - } - // Using STREAM_MUSIC. So to change amplitude stream music needs to be changed - audioTrack = new AudioTrack( - AudioManager.STREAM_MUSIC, - SAMPLING_RATE, - AudioFormat.CHANNEL_OUT_MONO, - AudioFormat.ENCODING_PCM_16BIT, - minTrackBufferSize, - AudioTrack.MODE_STREAM); - if (audioTrack.getState() != AudioTrack.STATE_INITIALIZED) { - Log.e(TAG, "AudioTrack can't be initialized"); - return false; - } - audioTrack.play(); - } - return true; - } - - public short[] read() { - /* return captured audio buffer */ - short[] audioBuffer = new short[minRecorderBufferSize / 2]; - audioRecord.read(audioBuffer, 0, audioBuffer.length); - return audioBuffer; - } - - public void write(short[] buffer) { - /* write buffer to audioTrack */ - audioTrack.write(buffer, 0, buffer.length); - } - - /* - * Would generate a buffer based on frequency value which would be played by AudioTrack to generate wave - * */ - public short[] createBuffer(int frequency) { - // generating a random buffer for now - short[] buffer = new short[minTrackBufferSize]; - for (int i = 0; i < minTrackBufferSize; i++) { - buffer[i] = (short) (random.nextInt(32767) + (-32768)); - } - return buffer; - } - - public void release() { - Log.v(TAG, "AudioJack object released"); - if (audioRecord != null) { - if (audioRecord.getState() == AudioRecord.RECORDSTATE_RECORDING) - audioRecord.stop(); - audioRecord.release(); - } - if (audioTrack != null) { - if (audioTrack.getState() == AudioTrack.PLAYSTATE_PLAYING) - audioTrack.stop(); - audioTrack.release(); - } - } -} diff --git a/app/src/main/java/io/pslab/others/CSVDataLine.java b/app/src/main/java/io/pslab/others/CSVDataLine.java deleted file mode 100644 index 2ea09f77e..000000000 --- a/app/src/main/java/io/pslab/others/CSVDataLine.java +++ /dev/null @@ -1,53 +0,0 @@ -package io.pslab.others; - -import androidx.annotation.NonNull; - -import androidx.annotation.Nullable; - -import java.text.NumberFormat; -import java.util.ArrayList; -import java.util.List; -import java.util.Locale; - -/** - * Contains data of a single line of a CSV file. - * - * @author Marc Nause, marc.nause@gmx.de - */ -public class CSVDataLine { - - private static final char DELIMITER = ','; - private static final String LINEBREAK = System.lineSeparator(); - private static final NumberFormat NUMBER_FORMAT = NumberFormat.getInstance(Locale.ROOT); - - private final List lineData = new ArrayList<>(); - - public CSVDataLine add(@Nullable final String data) { - lineData.add(data); - return this; - } - - public CSVDataLine add(@Nullable final Number data) { - lineData.add(data == null ? null : NUMBER_FORMAT.format(data)); - return this; - } - - @NonNull - @Override - public String toString() { - final StringBuilder stringBuilder = new StringBuilder(); - - for (int i = 0, len = lineData.size(); i < len; i++) { - if (i > 0) { - stringBuilder.append(DELIMITER); - } - final String data = lineData.get(i); - if (data != null) { - stringBuilder.append(data); - } - } - stringBuilder.append(LINEBREAK); - - return stringBuilder.toString(); - } -} diff --git a/app/src/main/java/io/pslab/others/CSVLogger.java b/app/src/main/java/io/pslab/others/CSVLogger.java deleted file mode 100644 index 92791becb..000000000 --- a/app/src/main/java/io/pslab/others/CSVLogger.java +++ /dev/null @@ -1,114 +0,0 @@ -package io.pslab.others; - -import android.os.Environment; - -import java.io.BufferedWriter; -import java.io.File; -import java.io.FileWriter; -import java.io.IOException; -import java.io.PrintWriter; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.Locale; - -/** - * Created by Padmal on 6/24/18. - */ - -public class CSVLogger { - - private File csvFile; - private String category; - - public static final String CSV_DIRECTORY = "PSLab"; - public static final SimpleDateFormat FILE_NAME_FORMAT = new SimpleDateFormat( - "yyyy-MM-dd HH:mm:ss.SSS", Locale.ROOT); - - /** - * Constructor initiate logger with a category folder - * - * @param category type of readings - */ - public CSVLogger(String category) { - this.category = category; - setupPath(); - } - - /** - * Create required directories and csv files to record data - */ - private void setupPath() { - File csvDirectory = new File( - Environment.getExternalStorageDirectory().getAbsolutePath() + - File.separator + CSV_DIRECTORY); - if (!csvDirectory.exists()) { - try { - csvDirectory.mkdir(); - } catch (Exception e) { - e.printStackTrace(); - } - } - File categoryDirectory = new File( - Environment.getExternalStorageDirectory().getAbsolutePath() + - File.separator + CSV_DIRECTORY + File.separator + category); - if (!categoryDirectory.exists()) { - try { - categoryDirectory.mkdir(); - } catch (Exception e) { - e.printStackTrace(); - } - } - } - - public void prepareLogFile() { - String uniqueFileName = FILE_NAME_FORMAT.format(new Date()); - csvFile = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + - File.separator + CSV_DIRECTORY + File.separator + category + - File.separator + uniqueFileName + ".csv"); - if (!csvFile.exists()) { - try { - csvFile.createNewFile(); - } catch (IOException e) { - e.printStackTrace(); - } - } - } - - /** - * Write comma seperated data lines to the file created - * - * @param data comma separated data line ends with a new line character - */ - public void writeCSVFile(CSVDataLine data) { - if (csvFile.exists()) { - try { - PrintWriter out - = new PrintWriter(new BufferedWriter(new FileWriter(csvFile, true))); - out.write(data.toString()); - out.flush(); - out.close(); - } catch (IOException e) { - e.printStackTrace(); - } - } - } - - public String getCurrentFilePath() { - return Environment.getExternalStorageDirectory().getAbsolutePath() + - File.separator + CSV_DIRECTORY + File.separator + category; - } - - public void deleteFile() { - csvFile.delete(); - } - - public void writeMetaData(String instrumentName) { - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - String metaDataTime = sdf.format(System.currentTimeMillis()); - CSVDataLine metaData = new CSVDataLine() - .add(instrumentName) - .add(metaDataTime.split(" ")[0]) - .add(metaDataTime.split(" ")[1]); - writeCSVFile(metaData); - } -} diff --git a/app/src/main/java/io/pslab/others/ChannelAxisFormatter.java b/app/src/main/java/io/pslab/others/ChannelAxisFormatter.java deleted file mode 100644 index 5dc8aa267..000000000 --- a/app/src/main/java/io/pslab/others/ChannelAxisFormatter.java +++ /dev/null @@ -1,36 +0,0 @@ -package io.pslab.others; - -import com.github.mikephil.charting.components.AxisBase; -import com.github.mikephil.charting.formatter.IAxisValueFormatter; - -import java.util.ArrayList; - -/** - * Created by viveksb007 on 14/6/17. - */ - -public class ChannelAxisFormatter implements IAxisValueFormatter { - - private ArrayList laChannelNames; - - public ChannelAxisFormatter(ArrayList channelNames) { - this.laChannelNames = channelNames; - } - - @Override - public String getFormattedValue(float value, AxisBase axis) { - switch ((int) value) { - case 1: - return laChannelNames.get(0); - case 3: - return laChannelNames.get(1); - case 5: - return laChannelNames.get(2); - case 7: - return laChannelNames.get(3); - default: - return ""; - } - } - -} diff --git a/app/src/main/java/io/pslab/others/ControlActivityCommon.java b/app/src/main/java/io/pslab/others/ControlActivityCommon.java deleted file mode 100644 index e04ff5aca..000000000 --- a/app/src/main/java/io/pslab/others/ControlActivityCommon.java +++ /dev/null @@ -1,16 +0,0 @@ -package io.pslab.others; - -import java.util.HashMap; - -/** - * Created by AVJEET on 16-02-2018. - */ - -public class ControlActivityCommon { - public static HashMap editTextValues ; - - public ControlActivityCommon(){ - editTextValues= new HashMap<>(); - } - -} diff --git a/app/src/main/java/io/pslab/others/CustomScrollView.java b/app/src/main/java/io/pslab/others/CustomScrollView.java deleted file mode 100644 index d75c0b0ad..000000000 --- a/app/src/main/java/io/pslab/others/CustomScrollView.java +++ /dev/null @@ -1,42 +0,0 @@ -package io.pslab.others; - -import android.content.Context; -import android.util.AttributeSet; -import android.view.MotionEvent; -import android.view.View; -import android.widget.ScrollView; - -/** - * Created by Avjeet on 20-07-2018. - */ -public class CustomScrollView extends ScrollView { - public CustomScrollView(Context context) { - super(context); - } - - public CustomScrollView(Context context, AttributeSet attrs) { - super(context, attrs); - } - - public CustomScrollView(Context context, AttributeSet attrs, int defStyleAttr) { - super(context, attrs, defStyleAttr); - } - - @Override - public boolean onInterceptTouchEvent(MotionEvent event) { - return super.onInterceptTouchEvent(event); - } - - @Override - public boolean onTouchEvent(MotionEvent event) { - View view = getChildAt(getChildCount() - 1); - int diff = (view.getBottom() - (getHeight() + getScrollY())); - - if (event.getAction() == MotionEvent.ACTION_DOWN) { - if (diff == 0) { - return false; - } - } - return super.onTouchEvent(event); - } -} diff --git a/app/src/main/java/io/pslab/others/CustomSnackBar.java b/app/src/main/java/io/pslab/others/CustomSnackBar.java deleted file mode 100644 index ea526446c..000000000 --- a/app/src/main/java/io/pslab/others/CustomSnackBar.java +++ /dev/null @@ -1,31 +0,0 @@ -package io.pslab.others; - -import android.graphics.Color; - -import androidx.annotation.NonNull; -import androidx.core.content.ContextCompat; -import android.view.View; -import android.widget.TextView; - -import com.google.android.material.snackbar.Snackbar; - -import io.pslab.R; - -/** - * Created by Avjeet on 12-07-2018. - */ -public class CustomSnackBar { - - public static Snackbar snackbar; - - public static void showSnackBar(@NonNull View holderLayout, @NonNull String displayText, - String actionText, View.OnClickListener clickListener, int duration) { - snackbar = Snackbar.make(holderLayout, displayText, duration) - .setAction(actionText, clickListener); - snackbar.setActionTextColor(ContextCompat.getColor(holderLayout.getContext(), R.color.colorPrimary)); - View sbView = snackbar.getView(); - TextView textView = sbView.findViewById(R.id.snackbar_text); - textView.setTextColor(Color.WHITE); - snackbar.show(); - } -} diff --git a/app/src/main/java/io/pslab/others/CustomTabService.java b/app/src/main/java/io/pslab/others/CustomTabService.java deleted file mode 100644 index 9ba84d535..000000000 --- a/app/src/main/java/io/pslab/others/CustomTabService.java +++ /dev/null @@ -1,66 +0,0 @@ -package io.pslab.others; - -import android.app.Activity; -import android.content.ComponentName; -import android.net.Uri; -import androidx.browser.customtabs.CustomTabsClient; -import androidx.browser.customtabs.CustomTabsIntent; -import androidx.browser.customtabs.CustomTabsServiceConnection; -import androidx.browser.customtabs.CustomTabsSession; -import com.google.android.material.snackbar.Snackbar; -import androidx.core.content.ContextCompat; - -import io.pslab.R; - -/** - * Created by nikit on 28/9/17. - */ - -public class CustomTabService { - private CustomTabsClient mCustomTabsClient; - private CustomTabsSession mCustomTabsSession; - private CustomTabsServiceConnection mCustomTabsServiceConnection; - private CustomTabsIntent mCustomTabsIntent; - - private Activity activity; - - public CustomTabService (Activity currentActivity) { - this.activity = currentActivity; - init(); - } - - public CustomTabService (Activity currentActivity, CustomTabsServiceConnection serviceConnection) { - this.activity = currentActivity; - this.mCustomTabsServiceConnection = serviceConnection; - init(); - } - - private void init() { - mCustomTabsServiceConnection = new CustomTabsServiceConnection() { - @Override - public void onCustomTabsServiceConnected(ComponentName componentName, CustomTabsClient customTabsClient) { - mCustomTabsClient = customTabsClient; - mCustomTabsClient.warmup(0L); - mCustomTabsSession = mCustomTabsClient.newSession(null); - } - @Override - public void onServiceDisconnected(ComponentName name) { - mCustomTabsClient= null; - } - }; - CustomTabsClient.bindCustomTabsService(activity, activity.getPackageName(), mCustomTabsServiceConnection); - mCustomTabsIntent = new CustomTabsIntent.Builder(mCustomTabsSession) - .setShowTitle(true) - .setToolbarColor(ContextCompat.getColor(activity, R.color.colorPrimary)) - .build(); - } - - public void launchUrl(String Url){ - try{ - mCustomTabsIntent.launchUrl(activity, Uri.parse(Url)); - }catch (Exception e){ - CustomSnackBar.showSnackBar(activity.findViewById(android.R.id.content), - "Error: "+ e,null,null, Snackbar.LENGTH_SHORT); - } - } -} diff --git a/app/src/main/java/io/pslab/others/EditTextWidget.java b/app/src/main/java/io/pslab/others/EditTextWidget.java deleted file mode 100644 index b522bf075..000000000 --- a/app/src/main/java/io/pslab/others/EditTextWidget.java +++ /dev/null @@ -1,136 +0,0 @@ -package io.pslab.others; - -import android.content.Context; -import android.content.res.TypedArray; -import android.text.Editable; -import android.text.TextWatcher; -import android.util.AttributeSet; -import android.view.View; -import android.widget.Button; -import android.widget.EditText; -import android.widget.LinearLayout; - -import io.pslab.DataFormatter; -import io.pslab.R; - - -/** - * Created by asitava on 22/6/17. - */ - -public class EditTextWidget extends LinearLayout{ - - private EditText editText; - private Button button1; - private Button button2; - private double leastCount; - private double maxima; - private double minima; - - public EditTextWidget(Context context, AttributeSet attrs, int defStyle) { - super(context, attrs, defStyle); - applyAttrs(attrs); - } - - public EditTextWidget(Context context, AttributeSet attrs) { - super(context, attrs); - applyAttrs(attrs); - } - - public EditTextWidget(Context context) { - super(context); - } - - public void init(Context context, final double leastCount, final double minima, final double maxima) { - View.inflate(context, R.layout.edittext_control, this); - editText = findViewById(R.id.edittext_control); - editText.setText("0"); - button1 = findViewById(R.id.button_control_plus); - button2 = findViewById(R.id.button_control_minus); - - button1.setEnabled(false); - button2.setEnabled(false); - - editText.addTextChangedListener(new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) {} - - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - if(!s.toString().equals("")){ - button1.setEnabled(true); - button2.setEnabled(true); - } - } - - @Override - public void afterTextChanged(Editable s) {} - }); - - button1.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View v) { - try { - double data = Double.parseDouble(editText.getText().toString()); - data = data - leastCount; - data = Math.round(data*100.0)/100.0; - data = data > maxima ? maxima : data; - data = data < minima ? minima : data; - String editTextValue = DataFormatter.formatDouble(data, DataFormatter.MEDIUM_PRECISION_FORMAT); - editText.setText(editTextValue); - editText.setSelection(editTextValue.length()); - } catch (Exception e) { - editText.setText("0"); - editText.setSelection(1); - } - } - }); - - button2.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View v) { - try { - double data = Double.valueOf(editText.getText().toString()); - data = data + leastCount; - data = Math.round(data*100.0)/100.0; - data = data > maxima ? maxima : data; - data = data < minima ? minima : data; - String editTextValue = DataFormatter.formatDouble(data, DataFormatter.MEDIUM_PRECISION_FORMAT); - editText.setText(editTextValue); - editText.setSelection(editTextValue.length()); - } catch (Exception e) { - editText.setText("0"); - editText.setSelection(1); - } - } - }); - } - - private void applyAttrs(AttributeSet attrs) { - TypedArray a = getContext().obtainStyledAttributes(attrs, R.styleable.EditTextWidget); - final int N = a.getIndexCount(); - for (int i = 0; i < N; ++i) { - int attr = a.getIndex(i); - switch (attr) { - case R.styleable.EditTextWidget_leastcount: - this.leastCount = a.getFloat(attr, 1.0f); - break; - case R.styleable.EditTextWidget_maxima: - this.maxima = a.getFloat(attr, 1.0f); - break; - case R.styleable.EditTextWidget_minima: - this.minima = a.getFloat(attr, 1.0f); - } - } - a.recycle(); - } - - public String getText() { - return editText.getText().toString(); - } - - public void setText(String text) { - editText.setText(text); - editText.setSelection(text.length()); - } -} diff --git a/app/src/main/java/io/pslab/others/FloatSeekBar.java b/app/src/main/java/io/pslab/others/FloatSeekBar.java deleted file mode 100644 index 68ca2e83c..000000000 --- a/app/src/main/java/io/pslab/others/FloatSeekBar.java +++ /dev/null @@ -1,66 +0,0 @@ -package io.pslab.others; - - -import android.content.Context; -import android.content.res.TypedArray; -import android.util.AttributeSet; - -import androidx.appcompat.widget.AppCompatSeekBar; - -import io.pslab.R; - - -/** - * Created by akarshan on 4/10/17. - */ - -public class FloatSeekBar extends AppCompatSeekBar { - private double max = 3.0; - private double min = 0.0; - - public FloatSeekBar(Context context, AttributeSet attrs, int defStyle) { - super(context, attrs, defStyle); - applyAttrs(attrs); - } - - public FloatSeekBar(Context context, AttributeSet attrs) { - super(context, attrs); - applyAttrs(attrs); - } - - public FloatSeekBar(Context context) { - super(context); - } - - public double getValue() { - double value = (max - min) * ((float) getProgress() / (float) getMax()) + min; - value = (double) Math.round(value * 100) / 100; - return value; - } - - public void setValue(double value) { - setProgress((int) ((value - min) / (max - min) * getMax())); - } - - private void applyAttrs(AttributeSet attrs) { - TypedArray a = getContext().obtainStyledAttributes(attrs, R.styleable.FloatSeekBar); - final int N = a.getIndexCount(); - for (int i = 0; i < N; ++i) { - int attr = a.getIndex(i); - switch (attr) { - case R.styleable.FloatSeekBar_floatMax: - this.max = a.getFloat(attr, 1.0f); - break; - case R.styleable.FloatSeekBar_floatMin: - this.min = a.getFloat(attr, 0.0f); - break; - } - } - a.recycle(); - } - public void setters(double a, double b) - { - min = a; - max = b; - } -} diff --git a/app/src/main/java/io/pslab/others/GPSLogger.java b/app/src/main/java/io/pslab/others/GPSLogger.java deleted file mode 100644 index a4bbd8d0d..000000000 --- a/app/src/main/java/io/pslab/others/GPSLogger.java +++ /dev/null @@ -1,147 +0,0 @@ -package io.pslab.others; - -import android.annotation.SuppressLint; -import android.app.Activity; -import android.app.AlertDialog; -import android.content.Context; -import android.content.DialogInterface; -import android.content.Intent; -import android.location.Location; -import android.location.LocationListener; -import android.location.LocationManager; -import android.os.Bundle; -import android.provider.Settings; -import com.google.android.material.snackbar.Snackbar; - -import io.pslab.R; -import io.pslab.models.PSLabSensor; - -/** - * Created by Padmal on 6/29/18. - */ - -public class GPSLogger { - - public static final int PSLAB_PERMISSION_FOR_MAPS = 102; - private static final int UPDATE_INTERVAL_IN_MILLISECONDS = 400; - private static final int MIN_DISTANCE_CHANGE_FOR_UPDATES = 1; - private LocationManager locationManager; - private Context context; - private Location bestLocation; - private PSLabSensor sensorActivity; - private PSLabPermission psLabPermission; - private String provider = LocationManager.GPS_PROVIDER; - public AlertDialog gpsAlert; - - public GPSLogger(Context context, LocationManager locationManager) { - this.context = context; - this.locationManager = locationManager; - psLabPermission = PSLabPermission.getInstance(); - if (context instanceof PSLabSensor) { - sensorActivity = (PSLabSensor) context; - buildUpGPSAlert(); - } - } - - private void buildUpGPSAlert() { - gpsAlert = new AlertDialog.Builder(sensorActivity, R.style.AlertDialogStyle) - .setTitle(R.string.allow_gps) - .setMessage(R.string.allow_gps_info) - .setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialogInterface, int i) { - Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); - context.startActivity(intent); - sensorActivity.checkGPSOnResume = true; - } - }) - .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialogInterface, int i) { - if (sensorActivity.isRecording) { - CustomSnackBar.showSnackBar(sensorActivity.sensorParentView, - context.getResources().getString(R.string.data_recording_with_gps_off), - null, null, Snackbar.LENGTH_LONG); - } else { - sensorActivity.isRecording = true; - sensorActivity.invalidateOptionsMenu(); - CustomSnackBar.showSnackBar(sensorActivity.sensorParentView, - context.getResources().getString(R.string.data_recording_with_nogps), - null, null, Snackbar.LENGTH_LONG); - } - } - }) - .create(); - } - - private LocationListener locationListener = new LocationListener() { - @Override - public void onLocationChanged(Location location) { - bestLocation = location; - } - - @Override - public void onStatusChanged(String s, int i, Bundle bundle) {/**/} - - @Override - public void onProviderEnabled(String s) { /**/} - - @Override - public void onProviderDisabled(String s) { - if (sensorActivity.isRecording && !gpsAlert.isShowing()) { - gpsAlert.show(); - } - } - }; - - public boolean isGPSEnabled() { - return locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER); - } - - /** - * Stop requesting updates - */ - public void removeUpdate() { - locationManager.removeUpdates(locationListener); - } - - /** - * @return the best location fetched - */ - @SuppressLint("MissingPermission") - public Location getDeviceLocation() { - if (bestLocation == null) { - if (psLabPermission.checkPermissions((Activity) context, PSLabPermission.MAP_PERMISSION)) { - locationManager.requestLocationUpdates(provider, - UPDATE_INTERVAL_IN_MILLISECONDS, MIN_DISTANCE_CHANGE_FOR_UPDATES, - locationListener); - return locationManager.getLastKnownLocation(provider); - } else { - return dummyLocation(); - } - } else { - return bestLocation; - } - } - - private Location dummyLocation() { - Location l = new Location(""); - l.setLatitude(0.0); - l.setLongitude(0.0); - return l; - } - - /** - * Set location updates - */ - @SuppressLint("MissingPermission") - public void startCaptureLocation() { - if (psLabPermission.checkPermissions((Activity) context, PSLabPermission.MAP_PERMISSION)) { - locationManager.requestLocationUpdates(provider, UPDATE_INTERVAL_IN_MILLISECONDS, MIN_DISTANCE_CHANGE_FOR_UPDATES, - locationListener); - } else { - CustomSnackBar.showSnackBar(((Activity) context).findViewById(android.R.id.content), - context.getString(R.string.no_permission_for_maps),null,null,Snackbar.LENGTH_LONG); - } - } -} diff --git a/app/src/main/java/io/pslab/others/InitializationVariable.java b/app/src/main/java/io/pslab/others/InitializationVariable.java deleted file mode 100644 index 4593c8d6f..000000000 --- a/app/src/main/java/io/pslab/others/InitializationVariable.java +++ /dev/null @@ -1,33 +0,0 @@ -package io.pslab.others; - -/** - * Created by viveksb007 on 17/6/17. - */ - -public class InitializationVariable { - - private boolean initialised = false; - private onValueChangeListener valueChangeListener; - - public boolean isInitialised() { - return initialised; - } - - public void setVariable(boolean value) { - initialised = value; - if (valueChangeListener != null) valueChangeListener.onChange(); - } - - public onValueChangeListener getValueChangeListener() { - return valueChangeListener; - } - - public void setValueChangeListener(onValueChangeListener valueChangeListener) { - this.valueChangeListener = valueChangeListener; - } - - public interface onValueChangeListener { - void onChange(); - } - -} diff --git a/app/src/main/java/io/pslab/others/LocalDataLog.java b/app/src/main/java/io/pslab/others/LocalDataLog.java deleted file mode 100644 index 61c09cb4c..000000000 --- a/app/src/main/java/io/pslab/others/LocalDataLog.java +++ /dev/null @@ -1,656 +0,0 @@ -package io.pslab.others; - -import io.pslab.interfaces.sensorloggers.AccelerometerRecordables; -import io.pslab.interfaces.sensorloggers.BaroMeterRecordables; -import io.pslab.interfaces.sensorloggers.CompassRecordables; -import io.pslab.interfaces.sensorloggers.DustSensorRecordables; -import io.pslab.interfaces.sensorloggers.GasSensorRecordables; -import io.pslab.interfaces.sensorloggers.GyroscopeRecordables; -import io.pslab.interfaces.sensorloggers.LogicAnalyzerRecordables; -import io.pslab.interfaces.sensorloggers.LuxMeterRecordables; -import io.pslab.interfaces.sensorloggers.MultimeterRecordables; -import io.pslab.interfaces.sensorloggers.OscilloscopeRecordables; -import io.pslab.interfaces.sensorloggers.PowerSourceRecordables; -import io.pslab.interfaces.sensorloggers.SensorRecordables; -import io.pslab.interfaces.sensorloggers.ServoRecordables; -import io.pslab.interfaces.sensorloggers.SoundMeterRecordables; -import io.pslab.interfaces.sensorloggers.ThermometerRecordables; -import io.pslab.interfaces.sensorloggers.WaveGeneratorRecordables; -import io.pslab.models.AccelerometerData; -import io.pslab.models.BaroData; -import io.pslab.models.CompassData; -import io.pslab.models.DustSensorData; -import io.pslab.models.GasSensorData; -import io.pslab.models.GyroData; -import io.pslab.models.LogicAnalyzerData; -import io.pslab.models.LuxData; -import io.pslab.models.MultimeterData; -import io.pslab.models.OscilloscopeData; -import io.pslab.models.PowerSourceData; -import io.pslab.models.SensorDataBlock; -import io.pslab.models.ServoData; -import io.pslab.models.SoundData; -import io.pslab.models.ThermometerData; -import io.pslab.models.WaveGeneratorData; -import io.realm.Realm; -import io.realm.RealmResults; -import io.realm.Sort; - -/** - * Created by Padmal on 11/5/18. - */ - -public class LocalDataLog implements SoundMeterRecordables, DustSensorRecordables, LuxMeterRecordables, BaroMeterRecordables, SensorRecordables, CompassRecordables, AccelerometerRecordables, GyroscopeRecordables, ThermometerRecordables, ServoRecordables, WaveGeneratorRecordables, OscilloscopeRecordables, PowerSourceRecordables, MultimeterRecordables, LogicAnalyzerRecordables, GasSensorRecordables { - - private static LocalDataLog instance; - private final Realm realm; - - private LocalDataLog() { - realm = Realm.getDefaultInstance(); - } - - public static LocalDataLog with() { - if (instance == null) { - instance = new LocalDataLog(); - } - return instance; - } - - public static LocalDataLog getInstance() { - return instance; - } - - public Realm getRealm() { - return realm; - } - - public void refresh() { - realm.refresh(); - } - - /*********************************************************************************************** - * Generic Sensor Section - ***********************************************************************************************/ - @Override - public SensorDataBlock getSensorBlock(long block) { - return realm.where(SensorDataBlock.class).equalTo("block", block).findFirst(); - } - - @Override - public void clearAllSensorBlocks() { - realm.beginTransaction(); - realm.delete(SensorDataBlock.class); - realm.commitTransaction(); - } - - @Override - public void clearTypeOfSensorBlock(String type) { - realm.beginTransaction(); - RealmResults data = getTypeOfSensorBlocks(type); - data.deleteAllFromRealm(); - realm.commitTransaction(); - } - - @Override - public void clearSensorBlock(long block) { - realm.beginTransaction(); - SensorDataBlock dataBlock = getSensorBlock(block); - dataBlock.deleteFromRealm(); - realm.commitTransaction(); - } - - @Override - public RealmResults getAllSensorBlocks() { - return realm.where(SensorDataBlock.class) - .findAll().sort("block", Sort.DESCENDING); - } - - @Override - public RealmResults getTypeOfSensorBlocks(String type) { - return realm.where(SensorDataBlock.class) - .equalTo("sensorType", type) - .findAll().sort("block", Sort.DESCENDING); - } - - /*********************************************************************************************** - * Lux Sensor Section - ***********************************************************************************************/ - @Override - public LuxData getLuxData(long timestamp) { - return realm.where(LuxData.class).equalTo("time", timestamp).findFirst(); - } - - @Override - public void clearAllLuxRecords() { - realm.beginTransaction(); - realm.delete(LuxData.class); - realm.commitTransaction(); - } - - @Override - public void clearBlockOfLuxRecords(long block) { - realm.beginTransaction(); - RealmResults data = getBlockOfLuxRecords(block); - data.deleteAllFromRealm(); - realm.commitTransaction(); - } - - @Override - public RealmResults getAllLuxRecords() { - return realm.where(LuxData.class).findAll(); - } - - @Override - public RealmResults getBlockOfLuxRecords(long block) { - return realm.where(LuxData.class) - .equalTo("block", block) - .findAll(); - } - - /*********************************************************************************************** - * Accelerometer Sensor Section - ***********************************************************************************************/ - @Override - public AccelerometerData getAccelerometerData(long timestamp) { - return realm.where(AccelerometerData.class).equalTo("time", timestamp).findFirst(); - } - - @Override - public void clearAllAccelerometerRecords() { - realm.beginTransaction(); - realm.delete(AccelerometerData.class); - realm.commitTransaction(); - } - - @Override - public void clearBlockOfAccelerometerRecords(long block) { - realm.beginTransaction(); - RealmResults data = getBlockOfAccelerometerRecords(block); - data.deleteAllFromRealm(); - realm.commitTransaction(); - } - - @Override - public RealmResults getAllAccelerometerRecords() { - return realm.where(AccelerometerData.class).findAll(); - } - - @Override - public RealmResults getBlockOfAccelerometerRecords(long block) { - return realm.where(AccelerometerData.class) - .equalTo("block", block) - .findAll(); - } - - /*********************************************************************************************** - * Baro Sensor Section - ***********************************************************************************************/ - @Override - public BaroData getBaroData(long timestamp) { - return realm.where(BaroData.class).equalTo("time", timestamp).findFirst(); - } - - @Override - public void clearAllBaroRecords() { - realm.beginTransaction(); - realm.delete(BaroData.class); - realm.commitTransaction(); - } - - @Override - public void clearBlockOfBaroRecords(long block) { - realm.beginTransaction(); - RealmResults data = getBlockOfBaroRecords(block); - data.deleteAllFromRealm(); - realm.commitTransaction(); - } - - @Override - public RealmResults getAllBaroRecords() { - return realm.where(BaroData.class).findAll(); - } - - @Override - public RealmResults getBlockOfBaroRecords(long block) { - return realm.where(BaroData.class) - .equalTo("block", block) - .findAll(); - } - - /*********************************************************************************************** - * Gyroscope Section - ***********************************************************************************************/ - @Override - public GyroData getGyroData(long timeStamp) { - return realm.where(GyroData.class).equalTo("time", timeStamp).findFirst(); - } - - @Override - public void clearAllGyroRecords() { - realm.beginTransaction(); - realm.delete(GyroData.class); - realm.commitTransaction(); - } - - @Override - public void clearBlockOfGyroRecords(long block) { - realm.beginTransaction(); - RealmResults data = getBlockOfGyroRecords(block); - data.deleteAllFromRealm(); - realm.commitTransaction(); - } - - @Override - public RealmResults getAllGyroRecords() { - return realm.where(GyroData.class).findAll(); - } - - @Override - public RealmResults getBlockOfGyroRecords(long block) { - return realm.where(GyroData.class).equalTo("block", block).findAll(); - } - - /*********************************************************************************************** - * Compass Section - ***********************************************************************************************/ - @Override - public CompassData getCompassData(long timeStamp) { - return realm.where(CompassData.class) - .equalTo("time", timeStamp) - .findFirst(); - } - - @Override - public void clearAllCompassRecords() { - realm.beginTransaction(); - realm.delete(CompassData.class); - realm.commitTransaction(); - } - - public void clearBlockOfCompassRecords(long block) { - realm.beginTransaction(); - RealmResults data = getBlockOfCompassRecords(block); - data.deleteAllFromRealm(); - realm.commitTransaction(); - } - - public RealmResults getAllCompassRecords() { - return realm.where(CompassData.class).findAll(); - } - - @Override - public RealmResults getBlockOfCompassRecords(long block) { - return realm.where(CompassData.class) - .equalTo("block", block) - .findAll(); - } - - /*********************************************************************************************** - * Thermometer Section - ***********************************************************************************************/ - @Override - public ThermometerData getThermometerData(long timeStamp) { - return realm.where(ThermometerData.class) - .equalTo("time", timeStamp) - .findFirst(); - } - - @Override - public void clearAllThermometerRecords() { - realm.beginTransaction(); - realm.delete(CompassData.class); - realm.commitTransaction(); - } - - public void clearBlockOfThermometerRecords(long block) { - realm.beginTransaction(); - RealmResults data = getBlockOfThermometerRecords(block); - data.deleteAllFromRealm(); - realm.commitTransaction(); - } - - public RealmResults getAllThermometerRecords() { - return realm.where(ThermometerData.class).findAll(); - } - - @Override - public RealmResults getBlockOfThermometerRecords(long block) { - return realm.where(ThermometerData.class) - .equalTo("block", block) - .findAll(); - } - - /*********************************************************************************************** - * Servo Section - ***********************************************************************************************/ - @Override - public ServoData getServoData(long timeStamp) { - return realm.where(ServoData.class) - .equalTo("time", timeStamp) - .findFirst(); - } - - @Override - public void clearAllServoRecords() { - realm.beginTransaction(); - realm.delete(ServoData.class); - realm.commitTransaction(); - } - - @Override - public void clearBlockOfServoRecords(long block) { - realm.beginTransaction(); - RealmResults data = getBlockOfServoRecords(block); - data.deleteAllFromRealm(); - realm.commitTransaction(); - } - - @Override - public RealmResults getAllServoRecords() { - return realm.where(ServoData.class).findAll(); - } - - @Override - public RealmResults getBlockOfServoRecords(long block) { - return realm.where(ServoData.class) - .equalTo("block", block) - .findAll(); - } - - /*********************************************************************************************** - * Wave Generator Section - ***********************************************************************************************/ - @Override - public WaveGeneratorData getWaveData(long timeStamp) { - return realm.where(WaveGeneratorData.class) - .equalTo("time", timeStamp) - .findFirst(); - } - - @Override - public void clearAllWaveRecords() { - realm.beginTransaction(); - realm.delete(WaveGeneratorData.class); - realm.commitTransaction(); - } - - @Override - public void clearBlockOfWaveRecords(long block) { - realm.beginTransaction(); - RealmResults data = getBlockOfWaveRecords(block); - data.deleteAllFromRealm(); - realm.commitTransaction(); - } - - @Override - public RealmResults getAllWaveRecords() { - return realm.where(WaveGeneratorData.class).findAll(); - } - - @Override - public RealmResults getBlockOfWaveRecords(long block) { - return realm.where(WaveGeneratorData.class) - .equalTo("block", block) - .findAll(); - } - - /*********************************************************************************************** - * Oscilloscope Section - ***********************************************************************************************/ - - @Override - public OscilloscopeData getOscilloscopeData(long timeStamp) { - return realm.where(OscilloscopeData.class) - .equalTo("time", timeStamp) - .findFirst(); - } - - @Override - public void clearAllOscilloscopeRecords() { - realm.beginTransaction(); - realm.delete(OscilloscopeData.class); - realm.commitTransaction(); - } - - @Override - public void clearBlockOfOscilloscopeRecords(long block) { - realm.beginTransaction(); - RealmResults data = getBlockOfOscilloscopeRecords(block); - data.deleteAllFromRealm(); - realm.commitTransaction(); - } - - @Override - public RealmResults getAllOscilloscopeRecords() { - return realm.where(OscilloscopeData.class).findAll(); - } - - @Override - public RealmResults getBlockOfOscilloscopeRecords(long block) { - return realm.where(OscilloscopeData.class) - .equalTo("block", block) - .findAll(); - } - - /*********************************************************************************************** - * Power Source Section - ***********************************************************************************************/ - - @Override - public PowerSourceData getPowerData(long timeStamp) { - return realm.where(PowerSourceData.class) - .equalTo("time", timeStamp) - .findFirst(); - } - - @Override - public void clearAllPowerRecords() { - realm.beginTransaction(); - realm.delete(PowerSourceData.class); - realm.commitTransaction(); - } - - @Override - public void clearBlockOfPowerRecords(long block) { - realm.beginTransaction(); - RealmResults data = getBlockOfPowerRecords(block); - data.deleteAllFromRealm(); - realm.commitTransaction(); - } - - @Override - public RealmResults getAllPowerRecords() { - return realm.where(PowerSourceData.class).findAll(); - } - - @Override - public RealmResults getBlockOfPowerRecords(long block) { - return realm.where(PowerSourceData.class) - .equalTo("block", block) - .findAll(); - } - - /*********************************************************************************************** - * Multimeter Section - ***********************************************************************************************/ - - @Override - public MultimeterData getMultimeterData(long timeStamp) { - return realm.where(MultimeterData.class) - .equalTo("time", timeStamp) - .findFirst(); - } - - @Override - public void clearAllMultimeterRecords() { - realm.beginTransaction(); - realm.delete(MultimeterData.class); - realm.commitTransaction(); - } - - @Override - public void clearBlockOfMultimeterRecords(long block) { - realm.beginTransaction(); - RealmResults data = getBlockOfMultimeterRecords(block); - data.deleteAllFromRealm(); - realm.commitTransaction(); - } - - @Override - public RealmResults getAllMultimeterRecords() { - return realm.where(MultimeterData.class).findAll(); - } - - @Override - public RealmResults getBlockOfMultimeterRecords(long block) { - return realm.where(MultimeterData.class) - .equalTo("block", block) - .findAll(); - } - - /*********************************************************************************************** - * Logic Analyzer Section - ***********************************************************************************************/ - - @Override - public LogicAnalyzerData getLAData(long timeStamp) { - return realm.where(LogicAnalyzerData.class) - .equalTo("time", timeStamp) - .findFirst(); - } - - @Override - public void clearAllLARecords() { - realm.beginTransaction(); - realm.delete(LogicAnalyzerData.class); - realm.commitTransaction(); - } - - @Override - public void clearBlockOfLARecords(long block) { - realm.beginTransaction(); - RealmResults data = getBlockOfLARecords(block); - data.deleteAllFromRealm(); - realm.commitTransaction(); - } - - @Override - public RealmResults getAllLARecords() { - return realm.where(LogicAnalyzerData.class).findAll(); - } - - @Override - public RealmResults getBlockOfLARecords(long block) { - return realm.where(LogicAnalyzerData.class) - .equalTo("block", block) - .findAll(); - } - - /*********************************************************************************************** - * Gas Sensor Section - ***********************************************************************************************/ - - @Override - public GasSensorData getGasSensorData(long timeStamp) { - return realm.where(GasSensorData.class) - .equalTo("time", timeStamp) - .findFirst(); - } - - @Override - public void clearAllGasSensorRecords() { - realm.beginTransaction(); - realm.delete(GasSensorData.class); - realm.commitTransaction(); - } - - @Override - public void clearBlockOfGasSensorRecords(long block) { - realm.beginTransaction(); - RealmResults data = getBlockOfGasSensorRecords(block); - data.deleteAllFromRealm(); - realm.commitTransaction(); - } - - @Override - public RealmResults getAllGasSensorRecords() { - return realm.where(GasSensorData.class).findAll(); - } - - @Override - public RealmResults getBlockOfGasSensorRecords(long block) { - return realm.where(GasSensorData.class) - .equalTo("block", block) - .findAll(); - } - - /*********************************************************************************************** - * Dust Sensor Section - ***********************************************************************************************/ - @Override - public DustSensorData getDustSensorData(long timestamp) { - return realm.where(DustSensorData.class).equalTo("time", timestamp).findFirst(); - } - - @Override - public void clearAllDustSensorRecords() { - realm.beginTransaction(); - realm.delete(LuxData.class); - realm.commitTransaction(); - } - - @Override - public void clearBlockOfDustSensorRecords(long block) { - realm.beginTransaction(); - RealmResults data = getBlockOfDustSensorRecords(block); - data.deleteAllFromRealm(); - realm.commitTransaction(); - } - - @Override - public RealmResults getAllDustSensorRecords() { - return realm.where(DustSensorData.class).findAll(); - } - - @Override - public RealmResults getBlockOfDustSensorRecords(long block) { - return realm.where(DustSensorData.class) - .equalTo("block", block) - .findAll(); - } - - - /*********************************************************************************************** - * Sound Meter Section - ***********************************************************************************************/ - @Override - public SoundData getSoundMeterData(long timeStamp) { - return realm.where(SoundData.class).equalTo("time",timeStamp).findFirst(); - } - - @Override - public void clearAllSoundRecords() { - realm.beginTransaction(); - realm.delete(SoundData.class); - realm.commitTransaction(); - } - - @Override - public void clearBlockOfSoundRecords(long block) { - realm.beginTransaction(); - RealmResults data = getBlockOfSoundRecords(block); - data.deleteAllFromRealm(); - realm.commitTransaction(); - } - - @Override - public RealmResults getAllSoundRecords() { - return realm.where(SoundData.class).findAll(); - } - - @Override - public RealmResults getBlockOfSoundRecords(long block) { - return realm.where(SoundData.class).equalTo("block",block) - .findAll(); - } -} diff --git a/app/src/main/java/io/pslab/others/LogicAnalyzerAxisFormatter.java b/app/src/main/java/io/pslab/others/LogicAnalyzerAxisFormatter.java deleted file mode 100644 index 15d3ee415..000000000 --- a/app/src/main/java/io/pslab/others/LogicAnalyzerAxisFormatter.java +++ /dev/null @@ -1,47 +0,0 @@ -package io.pslab.others; - -import com.github.mikephil.charting.components.AxisBase; -import com.github.mikephil.charting.formatter.ValueFormatter; - -import java.util.ArrayList; - -public class LogicAnalyzerAxisFormatter extends ValueFormatter { - - private ArrayList laChannelNames; - - public LogicAnalyzerAxisFormatter(ArrayList channelNames) { - this.laChannelNames = channelNames; - } - - @Override - public String getFormattedValue(float value, AxisBase axis) { - if (value > laChannelNames.size() * 2 - 1) { - switch (laChannelNames.size()) { - case 1: - return laChannelNames.get(0); - case 2: - return laChannelNames.get(1); - case 3: - return laChannelNames.get(2); - case 4: - return laChannelNames.get(3); - default: - return ""; - } - } else { - switch ((int) value) { - case 1: - return laChannelNames.get(0); - case 3: - return laChannelNames.get(1); - case 5: - return laChannelNames.get(2); - case 7: - return laChannelNames.get(3); - default: - return ""; - } - } - } - -} diff --git a/app/src/main/java/io/pslab/others/MathUtils.java b/app/src/main/java/io/pslab/others/MathUtils.java deleted file mode 100644 index 4028f3c65..000000000 --- a/app/src/main/java/io/pslab/others/MathUtils.java +++ /dev/null @@ -1,43 +0,0 @@ -package io.pslab.others; - -import java.util.ArrayList; - -/** - * Created by viveksb007 on 28/7/17. - */ - -public class MathUtils { - - - /* - * Maps a number from one range to another. - * */ - public static double map(double x, double in_min, double in_max, double out_min, double out_max) { - return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; - } - - - /* - * Returns evenly spaced numbers over a specified interval. - * */ - public static double[] linSpace(double start, double stop, int samples) { - ArrayList dataPoints = new ArrayList<>(); - double factor = (stop - start) / samples; - for (double i = start; i < stop; i += factor) dataPoints.add(i); - double[] evenlySpacedArray = new double[dataPoints.size()]; - for (int i = 0; i < dataPoints.size(); i++) { - evenlySpacedArray[i] = dataPoints.get(i); - } - return evenlySpacedArray; - } - - /* - * Returns RMS value of a given list of double values - * */ - public static double rms(double[] list) { - double ms = 0; - for (double i : list) ms += i * i; - ms /= list.length; - return Math.sqrt(ms); - } -} diff --git a/app/src/main/java/io/pslab/others/NothingSelectedSpinnerAdapter.java b/app/src/main/java/io/pslab/others/NothingSelectedSpinnerAdapter.java deleted file mode 100644 index ea9f70fee..000000000 --- a/app/src/main/java/io/pslab/others/NothingSelectedSpinnerAdapter.java +++ /dev/null @@ -1,171 +0,0 @@ -package io.pslab.others; - -import android.content.Context; -import android.database.DataSetObserver; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ListAdapter; -import android.widget.SpinnerAdapter; - - -/** - * Created by akarshan on 7/18/17. - */ - -/** - * Decorator Adapter to allow a Spinner to show a 'Nothing Selected...' initially - * displayed instead of the first choice in the Adapter. - */ -public class NothingSelectedSpinnerAdapter implements SpinnerAdapter, ListAdapter { - - private static final int EXTRA = 1; - protected SpinnerAdapter adapter; - protected Context context; - private int nothingSelectedLayout; - private int nothingSelectedDropdownLayout; - private LayoutInflater layoutInflater; - - /** - * Use this constructor to have NO 'Select One...' item, instead use - * the standard prompt or nothing at all. - * - * @param spinnerAdapter wrapped Adapter. - * @param nothingSelectedLayout layout for nothing selected, perhaps - * you want text grayed out like a prompt... - * @param context - */ - public NothingSelectedSpinnerAdapter( - SpinnerAdapter spinnerAdapter, - int nothingSelectedLayout, Context context) { - - this(spinnerAdapter, nothingSelectedLayout, -1, context); - } - - /** - * Use this constructor to Define your 'Select One...' layout as the first - * row in the returned choices. - * If you do this, you probably don't want a prompt on your spinner or it'll - * have two 'Select' rows. - * - * @param spinnerAdapter wrapped Adapter. Should probably return false for isEnabled(0) - * @param nothingSelectedLayout layout for nothing selected, perhaps you want - * text grayed out like a prompt... - * @param nothingSelectedDropdownLayout layout for your 'Select an Item...' in - * the dropdown. - * @param context - */ - private NothingSelectedSpinnerAdapter(SpinnerAdapter spinnerAdapter, - int nothingSelectedLayout, int nothingSelectedDropdownLayout, Context context) { - this.adapter = spinnerAdapter; - this.context = context; - this.nothingSelectedLayout = nothingSelectedLayout; - this.nothingSelectedDropdownLayout = nothingSelectedDropdownLayout; - layoutInflater = LayoutInflater.from(context); - } - - @Override - public final View getView(int position, View convertView, ViewGroup parent) { - // This provides the View for the Selected Item in the Spinner, not - // the dropdown (unless dropdownView is not set). - if (position == 0) { - return getNothingSelectedView(parent); - } - return adapter.getView(position - EXTRA, null, parent); // Could re-use - // the convertView if possible. - } - - /** - * View to show in Spinner with Nothing Selected - * Override this to do something dynamic... e.g. "37 Options Found" - * - * @param parent - * @return - */ - private View getNothingSelectedView(ViewGroup parent) { - return layoutInflater.inflate(nothingSelectedLayout, parent, false); - } - - @Override - public View getDropDownView(int position, View convertView, ViewGroup parent) { - // Android BUG! http://code.google.com/p/android/issues/detail?id=17128 - - // Spinner does not support multiple view types - if (position == 0) { - return nothingSelectedDropdownLayout == -1 ? - new View(context) : - getNothingSelectedDropdownView(parent); - } - - // Could re-use the convertView if possible, use setTag... - return adapter.getDropDownView(position - EXTRA, null, parent); - } - - /** - * Override this to do something dynamic... For example, "Pick your favorite - * of these 37". - * - * @param parent - * @return - */ - private View getNothingSelectedDropdownView(ViewGroup parent) { - return layoutInflater.inflate(nothingSelectedDropdownLayout, parent, false); - } - - @Override - public int getCount() { - int count = adapter.getCount(); - return count == 0 ? 0 : count + EXTRA; - } - - @Override - public Object getItem(int position) { - return position == 0 ? null : adapter.getItem(position - EXTRA); - } - - @Override - public int getItemViewType(int position) { - return 0; - } - - @Override - public int getViewTypeCount() { - return 1; - } - - @Override - public long getItemId(int position) { - return position >= EXTRA ? adapter.getItemId(position - EXTRA) : position - EXTRA; - } - - @Override - public boolean hasStableIds() { - return adapter.hasStableIds(); - } - - @Override - public boolean isEmpty() { - return adapter.isEmpty(); - } - - @Override - public void registerDataSetObserver(DataSetObserver observer) { - adapter.registerDataSetObserver(observer); - } - - @Override - public void unregisterDataSetObserver(DataSetObserver observer) { - adapter.unregisterDataSetObserver(observer); - } - - @Override - public boolean areAllItemsEnabled() { - return false; - } - - @Override - public boolean isEnabled(int position) { - return position != 0; // Don't allow the 'nothing selected' - // item to be picked. - } - -} \ No newline at end of file diff --git a/app/src/main/java/io/pslab/others/OscilloscopeMeasurements.java b/app/src/main/java/io/pslab/others/OscilloscopeMeasurements.java deleted file mode 100644 index 6ee5e708b..000000000 --- a/app/src/main/java/io/pslab/others/OscilloscopeMeasurements.java +++ /dev/null @@ -1,47 +0,0 @@ -package io.pslab.others; - -import java.util.HashMap; -import java.util.Map; - -import io.pslab.activity.OscilloscopeActivity.ChannelMeasurements; -import io.pslab.activity.OscilloscopeActivity.CHANNEL; - - -public class OscilloscopeMeasurements { - - public final static Map> channel = new HashMap<>(); - - static { - channel.put(CHANNEL.CH1, new HashMap() {{ - put(ChannelMeasurements.FREQUENCY, 0.00); - put(ChannelMeasurements.PERIOD, 0.00); - put(ChannelMeasurements.AMPLITUDE, 0.00); - put(ChannelMeasurements.POSITIVE_PEAK, 0.00); - put(ChannelMeasurements.NEGATIVE_PEAK, 0.00); - }}); - - channel.put(CHANNEL.CH2, new HashMap() {{ - put(ChannelMeasurements.FREQUENCY, 0.00); - put(ChannelMeasurements.PERIOD, 0.00); - put(ChannelMeasurements.AMPLITUDE, 0.00); - put(ChannelMeasurements.POSITIVE_PEAK, 0.00); - put(ChannelMeasurements.NEGATIVE_PEAK, 0.00); - }}); - - channel.put(CHANNEL.CH3, new HashMap() {{ - put(ChannelMeasurements.FREQUENCY, 0.00); - put(ChannelMeasurements.PERIOD, 0.00); - put(ChannelMeasurements.AMPLITUDE, 0.00); - put(ChannelMeasurements.POSITIVE_PEAK, 0.00); - put(ChannelMeasurements.NEGATIVE_PEAK, 0.00); - }}); - - channel.put(CHANNEL.MIC, new HashMap() {{ - put(ChannelMeasurements.FREQUENCY, 0.00); - put(ChannelMeasurements.PERIOD, 0.00); - put(ChannelMeasurements.AMPLITUDE, 0.00); - put(ChannelMeasurements.POSITIVE_PEAK, 0.00); - put(ChannelMeasurements.NEGATIVE_PEAK, 0.00); - }}); - } -} diff --git a/app/src/main/java/io/pslab/others/PSLabPermission.java b/app/src/main/java/io/pslab/others/PSLabPermission.java deleted file mode 100644 index 0f0274670..000000000 --- a/app/src/main/java/io/pslab/others/PSLabPermission.java +++ /dev/null @@ -1,149 +0,0 @@ -package io.pslab.others; - - -import android.Manifest; -import android.app.Activity; -import android.app.AlertDialog; -import android.content.pm.PackageManager; -import android.util.Log; -import android.view.View; -import android.widget.Toast; - -import androidx.core.app.ActivityCompat; -import androidx.core.content.ContextCompat; - -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; - -import io.pslab.activity.SplashActivity; - -/** - * Created by Padmal on 11/3/18. - */ - -public class PSLabPermission { - - private String[] allPermissions = new String[] { - Manifest.permission.WRITE_EXTERNAL_STORAGE, - Manifest.permission.RECORD_AUDIO, - Manifest.permission.ACCESS_FINE_LOCATION - }; - - private String[] csvPermissions = new String[] { - Manifest.permission.ACCESS_FINE_LOCATION - }; - - private String[] logPermissions = new String[] { - Manifest.permission.WRITE_EXTERNAL_STORAGE - }; - - private String[] mapPermissions = new String[] { - Manifest.permission.ACCESS_FINE_LOCATION - }; - List listPermissionsNeeded = new ArrayList<>(); - - public static final int ALL_PERMISSION = 100; - public static final int LOG_PERMISSION = 101; - public static final int MAP_PERMISSION = 102; - public static final int GPS_PERMISSION = 103; - public static final int CSV_PERMISSION = 104; - - public static int REQUEST_CODE = 0; - - public static int PERMISSIONS_REQUIRED = 0; - - private static final PSLabPermission pslabPermission = new PSLabPermission(); - - public static PSLabPermission getInstance() { - return pslabPermission; - } - - private PSLabPermission() {/**/} - public boolean checkPermissions(Activity activity, int mode) { - if (mode == ALL_PERMISSION) { - for (String permission : allPermissions) { - if (ContextCompat.checkSelfPermission(activity, permission) - != PackageManager.PERMISSION_GRANTED) { - listPermissionsNeeded.add(permission); - } - } - } else if (mode == LOG_PERMISSION) { - for (String permission : logPermissions) { - if (ContextCompat.checkSelfPermission(activity, permission) - != PackageManager.PERMISSION_GRANTED) { - listPermissionsNeeded.add(permission); - } - } - } else if (mode == MAP_PERMISSION) { - for (String permission : mapPermissions) { - if (ContextCompat.checkSelfPermission(activity, permission) - != PackageManager.PERMISSION_GRANTED) { - listPermissionsNeeded.add(permission); - } - } - } else if (mode == GPS_PERMISSION) { - for (String permission : mapPermissions) { - if (ContextCompat.checkSelfPermission(activity, permission) - != PackageManager.PERMISSION_GRANTED) { - listPermissionsNeeded.add(permission); - } - } - } else if (mode == CSV_PERMISSION) { - for (String permission : csvPermissions) { - if (ContextCompat.checkSelfPermission(activity, permission) - != PackageManager.PERMISSION_GRANTED) { - listPermissionsNeeded.add(permission); - } - } - } - PERMISSIONS_REQUIRED = listPermissionsNeeded.size(); - if (!listPermissionsNeeded.isEmpty()) { - for(String permission : listPermissionsNeeded) { - if (Objects.equals(permission, Manifest.permission.ACCESS_FINE_LOCATION)) { - AlertDialog.Builder alert = new AlertDialog.Builder(activity); - alert.setTitle("Location Permission Disclosure"); - alert.setCancelable(false); - alert.setMessage("PSLab requires access to location data to show the location of measurements on a map."); - alert.setPositiveButton("ACCEPT", (dialog, which) -> { - ActivityCompat.requestPermissions(activity, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, ++REQUEST_CODE); - }); - alert.setNegativeButton("DENY", (dialog, which) -> { - Toast.makeText(activity, "Please grant the permission.", Toast.LENGTH_SHORT).show(); - ActivityCompat.requestPermissions(activity, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, ++REQUEST_CODE); - }); - AlertDialog alertDialog = alert.create(); - alertDialog.show(); - } else if (Objects.equals(permission, Manifest.permission.WRITE_EXTERNAL_STORAGE)) { - AlertDialog.Builder alert = new AlertDialog.Builder(activity); - alert.setTitle("Storage Permission Disclosure"); - alert.setMessage("PSLab requires access to storage to enable the storage and import of sensor data."); - alert.setPositiveButton("ACCEPT", (dialog, which) -> { - ActivityCompat.requestPermissions(activity, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, ++REQUEST_CODE); - }); - alert.setNegativeButton("DENY", (dialog, which) -> { - Toast.makeText(activity, "Please grant the permission.", Toast.LENGTH_SHORT).show(); - ActivityCompat.requestPermissions(activity, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, ++REQUEST_CODE); - }); - AlertDialog alertDialog = alert.create(); - alertDialog.show(); - } else if (Objects.equals(permission, Manifest.permission.RECORD_AUDIO)) { - AlertDialog.Builder alert = new AlertDialog.Builder(activity); - alert.setTitle("Audio Permission Disclosure"); - alert.setMessage("PSLab requires access to record audio for recording data using the Built-In MIC."); - alert.setPositiveButton("ACCEPT", (dialog, which) -> { - ActivityCompat.requestPermissions(activity, new String[]{Manifest.permission.RECORD_AUDIO}, ++REQUEST_CODE); - }); - alert.setNegativeButton("DENY", (dialog, which) -> { - Toast.makeText(activity, "Please grant the permission.", Toast.LENGTH_SHORT).show(); - ActivityCompat.requestPermissions(activity, new String[]{Manifest.permission.RECORD_AUDIO}, ++REQUEST_CODE); - }); - AlertDialog alertDialog = alert.create(); - alertDialog.show(); - } - } - return false; - } - return true; - } -} diff --git a/app/src/main/java/io/pslab/others/Plot2D.java b/app/src/main/java/io/pslab/others/Plot2D.java deleted file mode 100644 index 82d92739f..000000000 --- a/app/src/main/java/io/pslab/others/Plot2D.java +++ /dev/null @@ -1,211 +0,0 @@ -package io.pslab.others; - -/** - * Created by akarshan on 7/15/17. - */ - - -import android.content.Context; -import android.graphics.Canvas; -import android.graphics.Color; -import android.graphics.Paint; -import android.graphics.Typeface; -import android.util.AttributeSet; -import android.view.MotionEvent; -import android.view.ScaleGestureDetector; -import android.view.View; - -public class Plot2D extends View { - - private Paint paint; - private float[] xValues = {0.0f}; - private float[] yValues = {0.0f}; - private float maxX = 0.0f, maxY = 0.0f, minX = 0.0f, minY = 0.0f, - locxAxis = 0.0f, locyAxis = 0.0f; - private int vectorLength; - private int axis = 1; - private static float MIN_ZOOM = 1f; - private static float MAX_ZOOM = 5f; - - private float scaleFactor = 1.f; - private ScaleGestureDetector detector; - - public Plot2D(Context context, AttributeSet attrs) { - super(context, attrs); - detector = new ScaleGestureDetector(getContext(), new ScaleListener()); - paint = new Paint(); - } - - public Plot2D(Context context, AttributeSet attrs, int id) { - super(context, attrs); - detector = new ScaleGestureDetector(getContext(), new ScaleListener()); - paint = new Paint(); - } - - public void plotData(float[] xValues, float[] yValues, int axis) { - this.xValues = xValues; - this.yValues = yValues; - this.axis = axis; - vectorLength = xValues.length; - // paint = new Paint(); - - getAxis(xValues, yValues); - invalidate(); - } - - public void plotData(float[] yValues, int axis) { - if (yValues != null) { - vectorLength = yValues.length; - this.xValues = new float[vectorLength]; - for (int i = 0; i < vectorLength; i++) { - xValues[i] = i; - } - this.yValues = yValues; - this.axis = axis; - // paint = new Paint(); - - getAxis(xValues, yValues); - invalidate(); - } - } - - - public Plot2D(Context context, float[] xValues, float[] yValues, int axis) { - super(context); - this.xValues = xValues; - this.yValues = yValues; - this.axis = axis; - vectorLength = xValues.length; - paint = new Paint(); - detector = new ScaleGestureDetector(getContext(), new ScaleListener()); - getAxis(xValues, yValues); - - } - - @Override - protected void onDraw(Canvas canvas) { - - canvas.save(); - canvas.scale(scaleFactor, scaleFactor); - - float canvasHeight = getHeight(); - float canvasWidth = getWidth(); - int[] xValuesInPixels = toPixel(canvasWidth, minX, maxX, xValues); - int[] yValuesInPixels = toPixel(canvasHeight, minY, maxY, yValues); - int locxAxisInPixels = toPixelInt(canvasHeight, minY, maxY, locxAxis); - int locyAxisInPixels = toPixelInt(canvasWidth, minX, maxX, locyAxis); - - paint.setStrokeWidth(2); - canvas.drawARGB(255, 0, 0, 0); - for (int i = 0; i < vectorLength - 1; i++) { - paint.setColor(Color.RED); - canvas.drawLine(xValuesInPixels[i], canvasHeight - - yValuesInPixels[i], xValuesInPixels[i + 1], canvasHeight - - yValuesInPixels[i + 1], paint); - } - - paint.setColor(Color.WHITE); - paint.setStrokeWidth(5f); - canvas.drawLine(0, canvasHeight - locxAxisInPixels, canvasWidth, - canvasHeight - locxAxisInPixels, paint); - canvas.drawLine(locyAxisInPixels, 0, locyAxisInPixels, canvasHeight, - paint); - - // Automatic axis markings, modify n to control the number of axis labels - if (axis != 0) { - float temp = 0.0f; - int n = 8; - //paint.setTextAlign(Paint.Align.LEFT); - paint.setTextSize(30.0f); - paint.setTypeface(Typeface.create(Typeface.DEFAULT, Typeface.BOLD)); - for (int i = 1; i <= n; i++) { - if (i <= n / 2) { - temp = Math.round(10 * (minX + (i - 1) * (maxX - minX) / n)) / 10; - canvas.drawText("" + temp, - (float) toPixelInt(canvasWidth, minX, maxX, temp), - canvasHeight - locxAxisInPixels - 10, paint); - temp = Math.round(10 * (minY + (i - 1) * (maxY - minY) / n)) / 10; - canvas.drawText("" + temp, locyAxisInPixels + 10, canvasHeight - - (float) toPixelInt(canvasHeight, minY, maxY, temp), - paint); - } else { - temp = Math.round(10 * (minX + (i - 1) * (maxX - minX) / n)) / 10; - canvas.drawText("" + temp, - (float) toPixelInt(canvasWidth, minX, maxX, temp), - canvasHeight - locxAxisInPixels + 30, paint); - temp = Math.round(10 * (minY + (i - 1) * (maxY - minY) / n)) / 10; - canvas.drawText("" + temp, locyAxisInPixels - 65, canvasHeight - - (float) toPixelInt(canvasHeight, minY, maxY, temp), - paint); - } - } - canvas.drawText("" + maxX, - (float) toPixelInt(canvasWidth, minX, maxX, maxX), - canvasHeight - locxAxisInPixels + 30, paint); - canvas.drawText("" + maxY, locyAxisInPixels - 65, canvasHeight - - (float) toPixelInt(canvasHeight, minY, maxY, maxY), paint); - - } - canvas.restore(); - } - - private int[] toPixel(float pixels, float min, float max, float[] value) { - double[] p = new double[value.length]; - int[] pInt = new int[value.length]; - - for (int i = 0; i < value.length; i++) { - p[i] = .1 * pixels + ((value[i] - min) / (max - min)) * .8 * pixels; - pInt[i] = (int) p[i]; - } - return (pInt); - } - - private void getAxis(float[] xValues, float[] yValues) { - - minX = -16f; - minY = -16f; - maxX = 16f; - maxY = 16f; - - if (minX >= 0) - locyAxis = minX; - else if (minX < 0 && maxX >= 0) - locyAxis = 0; - else - locyAxis = maxX; - - if (minY >= 0) - locxAxis = minY; - else if (minY < 0 && maxY >= 0) - locxAxis = 0; - else - locxAxis = maxY; - } - - private int toPixelInt(float pixels, float min, float max, float value) { - - double p; - int pInt; - p = .1 * pixels + ((value - min) / (max - min)) * .8 * pixels; - pInt = (int) p; - return (pInt); - } - - @Override - public boolean onTouchEvent(MotionEvent event) { - detector.onTouchEvent(event); - final int action = event.getAction(); - return true; - } - - private class ScaleListener extends ScaleGestureDetector.SimpleOnScaleGestureListener { - @Override - public boolean onScale(ScaleGestureDetector detector) { - scaleFactor *= detector.getScaleFactor(); - scaleFactor = Math.max(MIN_ZOOM, Math.min(scaleFactor, MAX_ZOOM)); - invalidate(); - return true; - } - } -} - diff --git a/app/src/main/java/io/pslab/others/PreferenceManager.java b/app/src/main/java/io/pslab/others/PreferenceManager.java deleted file mode 100644 index d34f33dee..000000000 --- a/app/src/main/java/io/pslab/others/PreferenceManager.java +++ /dev/null @@ -1,34 +0,0 @@ -package io.pslab.others; - -import android.content.Context; -import android.content.SharedPreferences; - -/** - * Created by viveksb007 on 21/6/17. - */ - -public class PreferenceManager { - - private SharedPreferences sharedPreferences; - private SharedPreferences.Editor editor; - private Context context; - - private static final String preferenceName = "PSLAB"; - private static final String version = "version"; - - public PreferenceManager(Context context) { - this.context = context; - sharedPreferences = context.getSharedPreferences(preferenceName, Context.MODE_PRIVATE); - } - - public void setVersion(String version) { - editor = sharedPreferences.edit(); - editor.putString(version, version); - editor.apply(); - } - - public String getVersion() { - return sharedPreferences.getString(version, "none"); - } - -} diff --git a/app/src/main/java/io/pslab/others/ScienceLabCommon.java b/app/src/main/java/io/pslab/others/ScienceLabCommon.java deleted file mode 100644 index 8bd20b962..000000000 --- a/app/src/main/java/io/pslab/others/ScienceLabCommon.java +++ /dev/null @@ -1,56 +0,0 @@ -package io.pslab.others; - -import android.util.Log; - -import io.pslab.communication.CommunicationHandler; -import io.pslab.communication.ScienceLab; - -/** - * Created by viveksb007 on 8/5/17. - */ - -public class ScienceLabCommon { - - private static final String TAG = "ScienceLabCommon"; - private static ScienceLabCommon scienceLabCommon = null; - public static ScienceLab scienceLab; - public boolean connected = false; - public static boolean isWifiConnected = false; - private static String espBaseIP = ""; - - private ScienceLabCommon() { - } - - public boolean openDevice(CommunicationHandler communicationHandler) { - scienceLab = new ScienceLab(communicationHandler); - if (!scienceLab.isConnected()) { - Log.e(TAG, "Error in connection"); - return false; - } - connected = true; - return true; - } - - public static ScienceLabCommon getInstance() { - if (scienceLabCommon == null) { - scienceLabCommon = new ScienceLabCommon(); - } - return scienceLabCommon; - } - - public static String getEspIP() { - return espBaseIP; - } - - public static void setEspBaseIP(String espBaseIP) { - ScienceLabCommon.espBaseIP = espBaseIP; - } - - public static boolean isWifiConnected() { - return isWifiConnected; - } - - public static void setIsWifiConnected(boolean wifiConnected) { - isWifiConnected = wifiConnected; - } -} diff --git a/app/src/main/java/io/pslab/others/SwipeGestureDetector.java b/app/src/main/java/io/pslab/others/SwipeGestureDetector.java deleted file mode 100644 index 8b30a7ddb..000000000 --- a/app/src/main/java/io/pslab/others/SwipeGestureDetector.java +++ /dev/null @@ -1,59 +0,0 @@ -package io.pslab.others; - -import android.view.GestureDetector; -import android.view.MotionEvent; -import android.view.View; - -import com.google.android.material.bottomsheet.BottomSheetBehavior; - -public class SwipeGestureDetector extends GestureDetector.SimpleOnGestureListener { - - private final BottomSheetBehavior bottomSheet; - - public SwipeGestureDetector(BottomSheetBehavior bt) { - bottomSheet = bt; - } - - @Override - public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { - try { - switch (getDirection(e1.getX(), e1.getY(), e2.getX(), e2.getY())) { - case TOP: - if (bottomSheet.getState() == BottomSheetBehavior.STATE_COLLAPSED) - bottomSheet.setState(BottomSheetBehavior.STATE_EXPANDED); - if (bottomSheet.getState() == BottomSheetBehavior.STATE_HIDDEN) - bottomSheet.setState(BottomSheetBehavior.STATE_COLLAPSED); - return true; - case LEFT: - return true; - case DOWN: - if (bottomSheet.getState() == BottomSheetBehavior.STATE_EXPANDED) - bottomSheet.setState(BottomSheetBehavior.STATE_COLLAPSED); - if (bottomSheet.getState() == BottomSheetBehavior.STATE_COLLAPSED) - bottomSheet.setState(BottomSheetBehavior.STATE_HIDDEN); - return true; - case RIGHT: - return true; - default: - return false; - } - } catch (Exception e) { - return false; - } - } - - private Direction getDirection(float x1, float y1, float x2, float y2) { - double angle = Math.toDegrees(Math.atan2(y1 - y2, x2 - x1)); - if (angle > 45 && angle <= 135) - return Direction.TOP; - if (angle >= 135 && angle < 180 || angle < -135 && angle > -180) - return Direction.LEFT; - if (angle < -45 && angle >= -135) - return Direction.DOWN; - if (angle > -45 && angle <= 45) - return Direction.RIGHT; - return null; - } - - public enum Direction {TOP, RIGHT, LEFT, DOWN} -} diff --git a/app/src/main/java/io/pslab/others/ViewGroupUtils.java b/app/src/main/java/io/pslab/others/ViewGroupUtils.java deleted file mode 100644 index 42511943d..000000000 --- a/app/src/main/java/io/pslab/others/ViewGroupUtils.java +++ /dev/null @@ -1,33 +0,0 @@ -package io.pslab.others; - -import android.view.View; -import android.view.ViewGroup; - -/** - * Created by akarshan on 7/15/17. - */ - -public class ViewGroupUtils { - - private static ViewGroup getParent(View view) { - return (ViewGroup) view.getParent(); - } - - private static void removeView(View view) { - ViewGroup parent = getParent(view); - if (parent != null) { - parent.removeView(view); - } - } - - public static void replaceView(View currentView, View newView) { - ViewGroup parent = getParent(currentView); - if (parent == null) { - return; - } - final int index = parent.indexOfChild(currentView); - removeView(currentView); - removeView(newView); - parent.addView(newView, index); - } -} \ No newline at end of file diff --git a/app/src/main/java/io/pslab/others/WaveGeneratorConstants.java b/app/src/main/java/io/pslab/others/WaveGeneratorConstants.java deleted file mode 100644 index 4e8a76a0d..000000000 --- a/app/src/main/java/io/pslab/others/WaveGeneratorConstants.java +++ /dev/null @@ -1,58 +0,0 @@ -package io.pslab.others; - -import java.util.HashMap; -import java.util.Map; - -import io.pslab.activity.WaveGeneratorActivity; -import io.pslab.activity.WaveGeneratorActivity.WaveConst; -import io.pslab.activity.WaveGeneratorActivity.WaveData; - -public final class WaveGeneratorConstants { - - public final static Map> wave = new HashMap<>(); - - static { - wave.put(WaveConst.WAVE1, new HashMap() {{ - put(WaveConst.FREQUENCY, WaveData.FREQ_MIN.getValue()); - put(WaveConst.WAVETYPE, WaveGeneratorActivity.SIN); - }}); - - wave.put(WaveConst.WAVE2, new HashMap() {{ - put(WaveConst.PHASE, WaveData.PHASE_MIN.getValue()); - put(WaveConst.FREQUENCY, WaveData.FREQ_MIN.getValue()); - put(WaveConst.WAVETYPE, WaveGeneratorActivity.SIN); - }}); - - wave.put(WaveConst.WAVETYPE, new HashMap<>()); - - wave.put(WaveConst.SQR1, new HashMap() {{ - put(WaveConst.FREQUENCY, WaveData.FREQ_MIN.getValue()); //common frequency for all pins(SQR1,SQR2,SQR3,SQR4) - put(WaveConst.DUTY, WaveData.DUTY_MIN.getValue()); - }}); - - wave.put(WaveConst.SQR2, new HashMap() {{ - put(WaveConst.FREQUENCY, WaveData.FREQ_MIN.getValue()); - put(WaveConst.PHASE, WaveData.PHASE_MIN.getValue()); - put(WaveConst.DUTY, WaveData.DUTY_MIN.getValue()); - }}); - - wave.put(WaveConst.SQR3, new HashMap() {{ - put(WaveConst.PHASE, WaveData.PHASE_MIN.getValue()); - put(WaveConst.DUTY, WaveData.DUTY_MIN.getValue()); - }}); - - wave.put(WaveConst.SQR4, new HashMap() {{ - put(WaveConst.PHASE, WaveData.PHASE_MIN.getValue()); - put(WaveConst.DUTY, WaveData.DUTY_MIN.getValue()); - }}); - } - - public static WaveConst mode_selected = WaveConst.SQUARE; - - public final static Map state = new HashMap() {{ - put("SQR1", 0); - put("SQR2", 0); - put("SQR3", 0); - put("SQR4", 0); - }}; -} diff --git a/app/src/main/java/io/pslab/others/ZoomLayout.java b/app/src/main/java/io/pslab/others/ZoomLayout.java deleted file mode 100644 index 9bfa25ff6..000000000 --- a/app/src/main/java/io/pslab/others/ZoomLayout.java +++ /dev/null @@ -1,134 +0,0 @@ -package io.pslab.others; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.util.AttributeSet; -import android.util.Log; -import android.view.MotionEvent; -import android.view.ScaleGestureDetector; -import android.view.View; -import android.widget.RelativeLayout; - -public class ZoomLayout extends RelativeLayout implements ScaleGestureDetector.OnScaleGestureListener { - - private static final float MIN_ZOOM = 1.0f; - private static final float MAX_ZOOM = 4.0f; - private Mode mode = Mode.NONE; - private float scale = 1.0f; - private float lastScaleFactor = 0f; - private float startX = 0f; - private float startY = 0f; - private float dx = 0f; - private float dy = 0f; - private float prevDx = 0f; - private float prevDy = 0f; - - public ZoomLayout(Context context) { - super(context); - init(context); - } - - public ZoomLayout(Context context, AttributeSet attrs) { - super(context, attrs); - init(context); - } - - public ZoomLayout(Context context, AttributeSet attrs, int defStyle) { - super(context, attrs, defStyle); - init(context); - } - - @SuppressLint("ClickableViewAccessibility") - public void init(Context context) { - final ScaleGestureDetector scaleDetector = new ScaleGestureDetector(context, this); - this.setOnTouchListener(new OnTouchListener() { - @Override - public boolean onTouch(View view, MotionEvent motionEvent) { - switch (motionEvent.getAction() & MotionEvent.ACTION_MASK) { - case MotionEvent.ACTION_DOWN: - if (scale > MIN_ZOOM) { - mode = Mode.DRAG; - startX = motionEvent.getX() - prevDx; - startY = motionEvent.getY() - prevDy; - } - break; - case MotionEvent.ACTION_MOVE: - if (mode == Mode.DRAG) { - dx = motionEvent.getX() - startX; - dy = motionEvent.getY() - startY; - } - break; - case MotionEvent.ACTION_POINTER_DOWN: - mode = Mode.ZOOM; - break; - case MotionEvent.ACTION_POINTER_UP: - mode = Mode.DRAG; - break; - case MotionEvent.ACTION_UP: - mode = Mode.NONE; - prevDx = dx; - prevDy = dy; - break; - default: - mode = Mode.NONE; - prevDx = dx; - prevDy = dy; - break; - } - scaleDetector.onTouchEvent(motionEvent); - - if ((mode == Mode.DRAG && scale >= MIN_ZOOM) || mode == Mode.ZOOM) { - getParent().requestDisallowInterceptTouchEvent(true); - float maxDx = (child().getWidth() - (child().getWidth() / scale)) / 2 * scale; - float maxDy = (child().getHeight() - (child().getHeight() / scale)) * scale; - dx = Math.min(Math.max(dx, -maxDx), maxDx); - dy = Math.min(Math.max(dy, -maxDy), maxDy); - applyScaleAndTranslation(); - } - return true; - } - }); - } - - @Override - public boolean onScaleBegin(ScaleGestureDetector scaleDetector) { - return true; - } - - // ScaleGestureDetector - @Override - public boolean onScale(ScaleGestureDetector scaleDetector) { - float scaleFactor = scaleDetector.getScaleFactor(); - Log.i("Zoom Factor", String.valueOf(scaleFactor)); - if (lastScaleFactor == 0 || (Math.signum(scaleFactor) == Math.signum(lastScaleFactor))) { - scale *= scaleFactor; - scale = Math.max(MIN_ZOOM, Math.min(scale, MAX_ZOOM)); - lastScaleFactor = scaleFactor; - } else { - lastScaleFactor = 0; - } - return true; - } - - @Override - public void onScaleEnd(ScaleGestureDetector scaleDetector) { - - } - - private void applyScaleAndTranslation() { - child().setScaleX(scale); - child().setScaleY(scale); - child().setTranslationX(dx); - child().setTranslationY(dy); - } - - private View child() { - return getChildAt(0); - } - - private enum Mode { - NONE, - DRAG, - ZOOM - } -} diff --git a/app/src/main/java/io/pslab/receivers/USBDetachReceiver.java b/app/src/main/java/io/pslab/receivers/USBDetachReceiver.java deleted file mode 100644 index d4d562591..000000000 --- a/app/src/main/java/io/pslab/receivers/USBDetachReceiver.java +++ /dev/null @@ -1,68 +0,0 @@ -package io.pslab.receivers; - -import android.app.Activity; -import android.content.BroadcastReceiver; -import android.content.Context; -import android.content.Intent; -import android.hardware.usb.UsbDevice; -import android.hardware.usb.UsbManager; -import com.google.android.material.snackbar.Snackbar; -import androidx.fragment.app.Fragment; - -import android.util.Log; - -import io.pslab.R; -import io.pslab.activity.MainActivity; -import io.pslab.activity.PowerSourceActivity; -import io.pslab.communication.PacketHandler; -import io.pslab.fragment.HomeFragment; -import io.pslab.others.CustomSnackBar; -import io.pslab.others.ScienceLabCommon; - -/** - * Created by viveksb007 on 21/6/17. - */ - -public class USBDetachReceiver extends BroadcastReceiver { - - private final String TAG = this.getClass().getSimpleName(); - private Context activityContext; - - public USBDetachReceiver(){} - public USBDetachReceiver(Context context) { - this.activityContext = context; - } - - @Override - public void onReceive(Context context, Intent intent) { - try { - if (UsbManager.ACTION_USB_DEVICE_DETACHED.equals(intent.getAction())) { - UsbDevice device = intent.getParcelableExtra(UsbManager.EXTRA_DEVICE); - if (device != null) { - ScienceLabCommon.scienceLab.close(); - // Clear saved values in Power Source Instrument - context.getSharedPreferences(PowerSourceActivity.POWER_PREFERENCES, Context.MODE_PRIVATE).edit().clear().apply(); - CustomSnackBar.showSnackBar(((Activity)context).findViewById(android.R.id.content), - "USB Device Disconnected",null,null, Snackbar.LENGTH_SHORT); - - PacketHandler.version = ""; - - if (activityContext != null) { - MainActivity mainActivity = (MainActivity) activityContext; - Fragment currentFragment = mainActivity.getSupportFragmentManager().findFragmentById(R.id.frame); - if (currentFragment instanceof HomeFragment) { - mainActivity.getSupportFragmentManager().beginTransaction().replace(R.id.frame, HomeFragment.newInstance(false, false)).commitAllowingStateLoss(); - } - mainActivity.PSLabisConnected = false; - mainActivity.invalidateOptionsMenu(); - } - } else { - Log.v(TAG, "USB Device is null"); - } - } - } catch (IllegalStateException ignored){ - - } - - } -} diff --git a/app/src/main/java/io/pslab/sensors/SensorADS1115.java b/app/src/main/java/io/pslab/sensors/SensorADS1115.java deleted file mode 100644 index 5be642de0..000000000 --- a/app/src/main/java/io/pslab/sensors/SensorADS1115.java +++ /dev/null @@ -1,302 +0,0 @@ -package io.pslab.sensors; - -import android.graphics.Color; -import android.os.AsyncTask; -import android.os.Bundle; -import android.view.MenuItem; -import android.view.View; -import android.widget.CheckBox; -import android.widget.CompoundButton; -import android.widget.EditText; -import android.widget.ImageButton; -import android.widget.RelativeLayout; -import android.widget.SeekBar; -import android.widget.Spinner; -import android.widget.TextView; - -import androidx.appcompat.app.ActionBar; -import androidx.appcompat.app.AppCompatActivity; -import androidx.appcompat.widget.Toolbar; - -import com.github.mikephil.charting.charts.LineChart; -import com.github.mikephil.charting.components.Legend; -import com.github.mikephil.charting.components.XAxis; -import com.github.mikephil.charting.components.YAxis; -import com.github.mikephil.charting.data.Entry; -import com.github.mikephil.charting.data.LineData; -import com.github.mikephil.charting.data.LineDataSet; - -import java.io.IOException; -import java.util.ArrayList; - -import io.pslab.R; -import io.pslab.communication.ScienceLab; -import io.pslab.communication.peripherals.I2C; -import io.pslab.communication.sensors.ADS1115; -import io.pslab.others.ScienceLabCommon; - -public class SensorADS1115 extends AppCompatActivity { - private static int counter; - private final Object lock = new Object(); - private ScienceLab scienceLab; - private SensorADS1115.SensorDataFetch sensorDataFetch; - private TextView tvSensorADS1115; - private LineChart mChart; - private long startTime; - private int flag; - private ArrayList entries; - private RelativeLayout sensorDock; - private CheckBox indefiniteSamplesCheckBox; - private EditText samplesEditBox; - private SeekBar timeGapSeekbar; - private TextView timeGapLabel; - private ImageButton playPauseButton; - private boolean play; - private boolean runIndefinitely; - private int timeGap; - - private ADS1115 sensorADS1115; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.sensor_ads1115); - - Toolbar toolbar = findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - final ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setTitle(R.string.ads1115); - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setDisplayShowHomeEnabled(true); - } - - sensorDock = findViewById(R.id.sensor_control_dock_layout); - indefiniteSamplesCheckBox = findViewById(R.id.checkBox_samples_sensor); - samplesEditBox = findViewById(R.id.editBox_samples_sensors); - timeGapSeekbar = findViewById(R.id.seekBar_timegap_sensor); - timeGapLabel = findViewById(R.id.tv_timegap_label); - playPauseButton = findViewById(R.id.imageButton_play_pause_sensor); - setSensorDock(); - sensorDock.setVisibility(View.VISIBLE); - - scienceLab = ScienceLabCommon.scienceLab; - I2C i2c = scienceLab.i2c; - entries = new ArrayList<>(); - try { - sensorADS1115 = new ADS1115(i2c); - } catch (IOException | InterruptedException e) { - e.printStackTrace(); - } - - Runnable runnable = new Runnable() { - @Override - public void run() { - while (true) { - if (scienceLab.isConnected() && shouldPlay()) { - sensorDataFetch = new SensorADS1115.SensorDataFetch(); - sensorDataFetch.execute(); - if (flag == 0) { - startTime = System.currentTimeMillis(); - flag = 1; - } - synchronized (lock) { - try { - lock.wait(); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - try { - Thread.sleep(timeGap); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - } - } - }; - new Thread(runnable).start(); - - tvSensorADS1115 = findViewById(R.id.tv_sensor_ads1115); - mChart = findViewById(R.id.chart_sensor_ads); - - Spinner spinnerSensorADS1115Gain = findViewById(R.id.spinner_sensor_ads1115_gain); - Spinner spinnerSensorADS1115Channel = findViewById(R.id.spinner_sensor_ads1115_channel); - Spinner spinnerSensorADS1115Rate = findViewById(R.id.spinner_sensor_ads1115_rate); - - if (sensorADS1115 != null) { - sensorADS1115.setGain(spinnerSensorADS1115Gain.getSelectedItem().toString()); - } - if (sensorADS1115 != null) { - sensorADS1115.setChannel(spinnerSensorADS1115Channel.getSelectedItem().toString()); - } - if (sensorADS1115 != null) { - sensorADS1115.setDataRate(Integer.parseInt(spinnerSensorADS1115Rate.getSelectedItem().toString())); - } - XAxis x = mChart.getXAxis(); - YAxis y = mChart.getAxisLeft(); - YAxis y2 = mChart.getAxisRight(); - - mChart.setTouchEnabled(true); - mChart.setHighlightPerDragEnabled(true); - mChart.setDragEnabled(true); - mChart.setScaleEnabled(true); - mChart.setDrawGridBackground(false); - mChart.setPinchZoom(true); - mChart.setScaleYEnabled(false); - mChart.setBackgroundColor(Color.BLACK); - mChart.getDescription().setEnabled(false); - - LineData data = new LineData(); - data.setValueTextColor(Color.WHITE); - mChart.setData(data); - - Legend l = mChart.getLegend(); - l.setForm(Legend.LegendForm.LINE); - l.setTextColor(Color.WHITE); - - x.setTextColor(Color.WHITE); - x.setDrawGridLines(true); - x.setAvoidFirstLastClipping(true); - - y.setTextColor(Color.WHITE); - y.setAxisMaximum(6.15f); - y.setAxisMinimum(-6.15f); - y.setDrawGridLines(true); - y.setLabelCount(10); - - y2.setDrawGridLines(false); - } - - private boolean shouldPlay() { - if (play) { - if (indefiniteSamplesCheckBox.isChecked()) - return true; - else if (counter >= 0) { - counter--; - return true; - } else { - play = false; - return false; - } - } else { - return false; - } - } - - private void setSensorDock() { - play = false; - runIndefinitely = true; - timeGap = 100; - final int step = 1; - final int max = 1000; - final int min = 100; - - playPauseButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (play && scienceLab.isConnected()) { - playPauseButton.setImageResource(R.drawable.circle_play_button); - play = false; - } else if (!scienceLab.isConnected()) { - playPauseButton.setImageResource(R.drawable.circle_play_button); - play = false; - } else { - playPauseButton.setImageResource(R.drawable.circle_pause_button); - play = true; - if (!indefiniteSamplesCheckBox.isChecked()) { - counter = Integer.parseInt(samplesEditBox.getText().toString()); - } - } - } - }); - sensorDock.setVisibility(View.VISIBLE); - - indefiniteSamplesCheckBox.setChecked(true); - samplesEditBox.setEnabled(false); - indefiniteSamplesCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - if (isChecked) { - runIndefinitely = true; - samplesEditBox.setEnabled(false); - } else { - runIndefinitely = false; - samplesEditBox.setEnabled(true); - } - } - }); - - timeGapSeekbar.setMax((max - min) / step); - timeGapSeekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { - @Override - public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { - timeGap = min + (progress * step); - timeGapLabel.setText(timeGap + "ms"); - } - - @Override - public void onStartTrackingTouch(SeekBar seekBar) { - - } - - @Override - public void onStopTrackingTouch(SeekBar seekBar) { - - } - }); - } - - private class SensorDataFetch extends AsyncTask { - - private int dataADS1115; - private long timeElapsed; - - @Override - protected Void doInBackground(Void... params) { - try { - if (sensorADS1115 != null) { - dataADS1115 = sensorADS1115.getRaw(); - } - } catch (IOException | InterruptedException e) { - e.printStackTrace(); - } - - timeElapsed = (System.currentTimeMillis() - startTime) / 1000; - entries.add(new Entry((float) timeElapsed, dataADS1115)); - - return null; - } - - protected void onPostExecute(Void aVoid) { - super.onPostExecute(aVoid); - tvSensorADS1115.setText(String.valueOf(dataADS1115)); - - LineDataSet dataSet = new LineDataSet(entries, getString(R.string.bx)); - dataSet.setDrawCircles(true); - LineData data = new LineData(dataSet); - mChart.setData(data); - mChart.notifyDataSetChanged(); - mChart.setVisibleXRangeMaximum(10); - mChart.moveViewToX(data.getEntryCount()); - mChart.invalidate(); - samplesEditBox.setText(String.valueOf(counter)); - if (counter == 0 && !runIndefinitely) { - play = false; - playPauseButton.setImageResource(R.drawable.circle_play_button); - } - synchronized (lock) { - lock.notify(); - } - } - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - if (item.getItemId() == android.R.id.home) { - finish(); - } - return true; - } -} diff --git a/app/src/main/java/io/pslab/sensors/SensorAPDS9960.java b/app/src/main/java/io/pslab/sensors/SensorAPDS9960.java deleted file mode 100644 index 81717129d..000000000 --- a/app/src/main/java/io/pslab/sensors/SensorAPDS9960.java +++ /dev/null @@ -1,393 +0,0 @@ -package io.pslab.sensors; - -import android.graphics.Color; -import android.os.AsyncTask; -import android.os.Bundle; -import android.util.Log; -import android.view.MenuItem; -import android.view.View; -import android.widget.CheckBox; -import android.widget.CompoundButton; -import android.widget.EditText; -import android.widget.ImageButton; -import android.widget.RelativeLayout; -import android.widget.SeekBar; -import android.widget.Spinner; -import android.widget.TextView; - -import androidx.appcompat.app.ActionBar; -import androidx.appcompat.app.AppCompatActivity; -import androidx.appcompat.widget.Toolbar; - -import com.github.mikephil.charting.charts.LineChart; -import com.github.mikephil.charting.components.Legend; -import com.github.mikephil.charting.components.XAxis; -import com.github.mikephil.charting.components.YAxis; -import com.github.mikephil.charting.data.Entry; -import com.github.mikephil.charting.data.LineData; -import com.github.mikephil.charting.data.LineDataSet; - -import java.io.IOException; -import java.util.ArrayList; - -import io.pslab.DataFormatter; -import io.pslab.R; -import io.pslab.communication.ScienceLab; -import io.pslab.communication.peripherals.I2C; -import io.pslab.communication.sensors.APDS9960; -import io.pslab.others.ScienceLabCommon; - -public class SensorAPDS9960 extends AppCompatActivity { - private static final String TAG = SensorAPDS9960.class.getSimpleName(); - private static int counter; - private final Object lock = new Object(); - private ScienceLab scienceLab; - private SensorAPDS9960.SensorDataFetch sensorDataFetch; - private TextView tvSensorAPDS9960Red; - private TextView tvSensorAPDS9960Green; - private TextView tvSensorAPDS9960Blue; - private TextView tvSensorAPDS9960Clear; - private TextView tvSensorAPDS9960Proximity; - private TextView tvSensorAPDS9960Gesture; - private APDS9960 sensorAPDS9960; - private LineChart mChartLux; - private LineChart mChartProximity; - private long startTime; - private int flag; - private ArrayList entriesLux; - private ArrayList entriesProximity; - private RelativeLayout sensorDock; - private CheckBox indefiniteSamplesCheckBox; - private EditText samplesEditBox; - private SeekBar timeGapSeekbar; - private TextView timeGapLabel; - private ImageButton playPauseButton; - private Spinner spinnerMode; - private boolean play; - private boolean runIndefinitely; - private int timeGap; - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.sensor_apds9960); - - Toolbar toolbar = findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - final ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setTitle(R.string.apds9960); - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setDisplayShowHomeEnabled(true); - } - - sensorDock = findViewById(R.id.sensor_control_dock_layout); - indefiniteSamplesCheckBox = findViewById(R.id.checkBox_samples_sensor); - samplesEditBox = findViewById(R.id.editBox_samples_sensors); - timeGapSeekbar = findViewById(R.id.seekBar_timegap_sensor); - timeGapLabel = findViewById(R.id.tv_timegap_label); - playPauseButton = findViewById(R.id.imageButton_play_pause_sensor); - setSensorDock(); - sensorDock.setVisibility(View.VISIBLE); - spinnerMode = findViewById(R.id.spinner_sensor_apds9960); - - scienceLab = ScienceLabCommon.scienceLab; - I2C i2c = scienceLab.i2c; - try { - sensorAPDS9960 = new APDS9960(i2c, scienceLab); - } catch (Exception e) { - Log.e(TAG, "Sensor initialization failed."); - } - - entriesLux = new ArrayList<>(); - entriesProximity = new ArrayList<>(); - - Runnable runnable = new Runnable() { - @Override - public void run() { - while (true) { - if (scienceLab.isConnected() && shouldPlay()) { - sensorDataFetch = new SensorAPDS9960.SensorDataFetch(); - sensorDataFetch.execute(); - - if (flag == 0) { - startTime = System.currentTimeMillis(); - flag = 1; - } - - synchronized (lock) { - try { - lock.wait(); - } catch (InterruptedException e) { - Log.e(TAG, "Thread interrupted while waiting."); - } - } - try { - Thread.sleep(timeGap); - } catch (InterruptedException e) { - Log.e(TAG, "Thread interrupted during sleep."); - } - } - } - } - }; - new Thread(runnable).start(); - - tvSensorAPDS9960Red = findViewById(R.id.tv_sensor_apds9960_red); - tvSensorAPDS9960Green = findViewById(R.id.tv_sensor_apds9960_green); - tvSensorAPDS9960Blue = findViewById(R.id.tv_sensor_apds9960_blue); - tvSensorAPDS9960Clear = findViewById(R.id.tv_sensor_apds9960_clear); - tvSensorAPDS9960Proximity = findViewById(R.id.tv_sensor_apds9960_proximity); - tvSensorAPDS9960Gesture = findViewById(R.id.tv_sensor_apds9960_gesture); - mChartLux = findViewById(R.id.chart_sensor_apds9960_lux); - mChartProximity = findViewById(R.id.chart_sensor_apds9960_proximity); - - XAxis xLux = mChartLux.getXAxis(); - YAxis yLux = mChartLux.getAxisLeft(); - YAxis yLux2 = mChartLux.getAxisRight(); - - XAxis xProximity = mChartProximity.getXAxis(); - YAxis yProximity = mChartProximity.getAxisLeft(); - YAxis yProximity2 = mChartProximity.getAxisRight(); - - mChartLux.setTouchEnabled(true); - mChartLux.setHighlightPerDragEnabled(true); - mChartLux.setDragEnabled(true); - mChartLux.setScaleEnabled(true); - mChartLux.setDrawGridBackground(false); - mChartLux.setPinchZoom(true); - mChartLux.setScaleYEnabled(false); - mChartLux.setBackgroundColor(Color.BLACK); - mChartLux.getDescription().setEnabled(false); - - LineData data = new LineData(); - data.setValueTextColor(Color.WHITE); - mChartLux.setData(data); - - Legend l = mChartLux.getLegend(); - l.setForm(Legend.LegendForm.LINE); - l.setTextColor(Color.WHITE); - - xLux.setTextColor(Color.WHITE); - xLux.setDrawGridLines(true); - xLux.setAvoidFirstLastClipping(true); - - yLux.setTextColor(Color.WHITE); - yLux.setAxisMaximum(10000f); - yLux.setAxisMinimum(0); - yLux.setDrawGridLines(true); - yLux.setLabelCount(10); - - yLux2.setDrawGridLines(false); - - mChartProximity.setTouchEnabled(true); - mChartProximity.setHighlightPerDragEnabled(true); - mChartProximity.setDragEnabled(true); - mChartProximity.setScaleEnabled(true); - mChartProximity.setDrawGridBackground(false); - mChartProximity.setPinchZoom(true); - mChartProximity.setScaleYEnabled(false); - mChartProximity.setBackgroundColor(Color.BLACK); - mChartProximity.getDescription().setEnabled(false); - - LineData data2 = new LineData(); - data.setValueTextColor(Color.WHITE); - mChartProximity.setData(data2); - - Legend l2 = mChartProximity.getLegend(); - l2.setForm(Legend.LegendForm.LINE); - l2.setTextColor(Color.WHITE); - - xProximity.setTextColor(Color.WHITE); - xProximity.setDrawGridLines(true); - xProximity.setAvoidFirstLastClipping(true); - - yProximity.setTextColor(Color.WHITE); - yProximity.setAxisMaximum(256f); - yProximity.setAxisMinimum(0f); - yProximity.setDrawGridLines(true); - yProximity.setLabelCount(10); - - yProximity2.setDrawGridLines(false); - } - - private boolean shouldPlay() { - if (play) { - if (indefiniteSamplesCheckBox.isChecked()) - return true; - else if (counter >= 0) { - counter--; - return true; - } else { - play = false; - return false; - } - } else { - return false; - } - } - - private void setSensorDock() { - play = false; - runIndefinitely = true; - timeGap = 100; - final int step = 1; - final int max = 1000; - final int min = 100; - - playPauseButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (play && scienceLab.isConnected()) { - playPauseButton.setImageResource(R.drawable.circle_play_button); - play = false; - } else if (!scienceLab.isConnected()) { - playPauseButton.setImageResource(R.drawable.circle_play_button); - play = false; - } else { - playPauseButton.setImageResource(R.drawable.circle_pause_button); - play = true; - if (!indefiniteSamplesCheckBox.isChecked()) { - counter = Integer.parseInt(samplesEditBox.getText().toString()); - } - } - } - }); - sensorDock.setVisibility(View.VISIBLE); - - indefiniteSamplesCheckBox.setChecked(true); - samplesEditBox.setEnabled(false); - indefiniteSamplesCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - if (isChecked) { - runIndefinitely = true; - samplesEditBox.setEnabled(false); - } else { - runIndefinitely = false; - samplesEditBox.setEnabled(true); - } - } - }); - - timeGapSeekbar.setMax((max - min) / step); - timeGapSeekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { - @Override - public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { - timeGap = min + (progress * step); - timeGapLabel.setText(timeGap + "ms"); - } - - @Override - public void onStartTrackingTouch(SeekBar seekBar) { - // Do nothing - } - - @Override - public void onStopTrackingTouch(SeekBar seekBar) { - // Do nothing - } - }); - } - - private class SensorDataFetch extends AsyncTask { - - private int[] dataAPDS9960Color; - private double dataAPDS9960Lux; - private int dataAPDS9960Proximity; - private int dataAPDS9960Gesture; - private long timeElapsed; - - @Override - protected Void doInBackground(Void... params) { - try { - if (sensorAPDS9960 != null) { - if (spinnerMode.getSelectedItemPosition() == 0) { - sensorAPDS9960.enableGesture(false); - sensorAPDS9960.enableColor(true); - sensorAPDS9960.enableProximity(true); - dataAPDS9960Color = sensorAPDS9960.getColorData(); - dataAPDS9960Lux = (-0.32466 * dataAPDS9960Color[0]) + (1.57837 * dataAPDS9960Color[1]) + (-0.73191 * dataAPDS9960Color[2]); - dataAPDS9960Proximity = sensorAPDS9960.getProximity(); - } else { - sensorAPDS9960.enableColor(false); - sensorAPDS9960.enableGesture(true); - sensorAPDS9960.enableProximity(true); - dataAPDS9960Gesture = sensorAPDS9960.getGesture(); - } - } - } catch (IOException | InterruptedException e) { - e.printStackTrace(); - } - timeElapsed = (System.currentTimeMillis() - startTime) / 1000; - entriesLux.add(new Entry((float) timeElapsed, (float) dataAPDS9960Lux)); - entriesProximity.add(new Entry((float) timeElapsed, dataAPDS9960Proximity)); - return null; - } - - protected void onPostExecute(Void aVoid) { - super.onPostExecute(aVoid); - if (spinnerMode.getSelectedItemPosition() == 0) { - tvSensorAPDS9960Red.setText(DataFormatter.formatDouble(dataAPDS9960Color[0], DataFormatter.HIGH_PRECISION_FORMAT)); - tvSensorAPDS9960Green.setText(DataFormatter.formatDouble(dataAPDS9960Color[1], DataFormatter.HIGH_PRECISION_FORMAT)); - tvSensorAPDS9960Blue.setText(DataFormatter.formatDouble(dataAPDS9960Color[2], DataFormatter.HIGH_PRECISION_FORMAT)); - tvSensorAPDS9960Clear.setText(DataFormatter.formatDouble(dataAPDS9960Color[3], DataFormatter.HIGH_PRECISION_FORMAT)); - tvSensorAPDS9960Proximity.setText(DataFormatter.formatDouble(dataAPDS9960Proximity, DataFormatter.HIGH_PRECISION_FORMAT)); - - LineDataSet dataSet1 = new LineDataSet(entriesLux, getString(R.string.light_lux)); - LineDataSet dataSet2 = new LineDataSet(entriesProximity, getString(R.string.proximity)); - - dataSet1.setDrawCircles(true); - dataSet2.setDrawCircles(true); - - LineData data = new LineData(dataSet1); - mChartLux.setData(data); - mChartLux.notifyDataSetChanged(); - mChartLux.setVisibleXRangeMaximum(10); - mChartLux.moveViewToX(data.getEntryCount()); - mChartLux.invalidate(); - - LineData data2 = new LineData(dataSet2); - mChartProximity.setData(data2); - mChartProximity.notifyDataSetChanged(); - mChartProximity.setVisibleXRangeMaximum(10); - mChartProximity.moveViewToX(data2.getEntryCount()); - mChartProximity.invalidate(); - } else { - switch (dataAPDS9960Gesture) { - case 1: - tvSensorAPDS9960Gesture.setText(R.string.up); - break; - case 2: - tvSensorAPDS9960Gesture.setText(R.string.down); - break; - case 3: - tvSensorAPDS9960Gesture.setText(R.string.left); - break; - case 4: - tvSensorAPDS9960Gesture.setText(R.string.right); - break; - default: - break; - } - } - - samplesEditBox.setText(String.valueOf(counter)); - if (counter == 0 && !runIndefinitely) { - play = false; - playPauseButton.setImageResource(R.drawable.circle_play_button); - } - synchronized (lock) { - lock.notify(); - } - } - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - if (item.getItemId() == android.R.id.home) { - finish(); - } - return true; - } -} diff --git a/app/src/main/java/io/pslab/sensors/SensorBMP180.java b/app/src/main/java/io/pslab/sensors/SensorBMP180.java deleted file mode 100644 index 449366240..000000000 --- a/app/src/main/java/io/pslab/sensors/SensorBMP180.java +++ /dev/null @@ -1,400 +0,0 @@ -package io.pslab.sensors; - -import android.graphics.Color; -import android.os.AsyncTask; -import android.os.Bundle; -import android.view.MenuItem; -import android.view.View; -import android.widget.CheckBox; -import android.widget.CompoundButton; -import android.widget.EditText; -import android.widget.ImageButton; -import android.widget.RelativeLayout; -import android.widget.SeekBar; -import android.widget.TextView; - -import androidx.appcompat.app.ActionBar; -import androidx.appcompat.app.AppCompatActivity; -import androidx.appcompat.widget.Toolbar; - -import com.github.mikephil.charting.charts.LineChart; -import com.github.mikephil.charting.components.Legend; -import com.github.mikephil.charting.components.XAxis; -import com.github.mikephil.charting.components.YAxis; -import com.github.mikephil.charting.data.Entry; -import com.github.mikephil.charting.data.LineData; -import com.github.mikephil.charting.data.LineDataSet; - -import java.io.IOException; -import java.util.ArrayList; - -import io.pslab.DataFormatter; -import io.pslab.R; -import io.pslab.communication.ScienceLab; -import io.pslab.communication.peripherals.I2C; -import io.pslab.communication.sensors.BMP180; -import io.pslab.others.ScienceLabCommon; - -/** - * Created by Harsh on 6/6/18. - */ - -public class SensorBMP180 extends AppCompatActivity { - private static int counter; - private final Object lock = new Object(); - private ScienceLab scienceLab; - private SensorBMP180.SensorDataFetch sensorDataFetch; - private TextView tvSensorBMP180Temp; - private TextView tvSensorBMP180Altitude; - private TextView tvSensorBMP180Pressure; - private BMP180 sensorBMP180; - private LineChart mChartTemperature; - private LineChart mChartAltitude; - private LineChart mChartPressure; - private long startTime; - private int flag; - private ArrayList entriesTemperature; - private ArrayList entriesAltitude; - private ArrayList entriesPressure; - private RelativeLayout sensorDock; - private CheckBox indefiniteSamplesCheckBox; - private EditText samplesEditBox; - private SeekBar timeGapSeekbar; - private TextView timeGapLabel; - private ImageButton playPauseButton; - private boolean play; - private boolean runIndefinitely; - private int timeGap; - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.sensor_bmp180); - - Toolbar toolbar = findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - final ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setTitle(R.string.bmp180); - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setDisplayShowHomeEnabled(true); - } - - sensorDock = findViewById(R.id.sensor_control_dock_layout); - indefiniteSamplesCheckBox = findViewById(R.id.checkBox_samples_sensor); - samplesEditBox = findViewById(R.id.editBox_samples_sensors); - timeGapSeekbar = findViewById(R.id.seekBar_timegap_sensor); - timeGapLabel = findViewById(R.id.tv_timegap_label); - playPauseButton = findViewById(R.id.imageButton_play_pause_sensor); - setSensorDock(); - sensorDock.setVisibility(View.VISIBLE); - - scienceLab = ScienceLabCommon.scienceLab; - I2C i2c = scienceLab.i2c; - try { - sensorBMP180 = new BMP180(i2c, scienceLab); - } catch (IOException | InterruptedException e) { - e.printStackTrace(); - } - - Runnable runnable = new Runnable() { - @Override - public void run() { - while (true) { - if (scienceLab.isConnected() && shouldPlay()) { - sensorDataFetch = new SensorBMP180.SensorDataFetch(); - sensorDataFetch.execute(); - - if (flag == 0) { - startTime = System.currentTimeMillis(); - flag = 1; - } - - synchronized (lock) { - try { - lock.wait(); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - try { - Thread.sleep(timeGap); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - - } - } - }; - new Thread(runnable).start(); - - tvSensorBMP180Temp = findViewById(R.id.tv_sensor_bmp180_temp); - tvSensorBMP180Altitude = findViewById(R.id.tv_sensor_bmp180_altitude); - tvSensorBMP180Pressure = findViewById(R.id.tv_sensor_bmp180_pressure); - - mChartTemperature = findViewById(R.id.chart_temp_bmp180); - mChartAltitude = findViewById(R.id.chart_alt_bmp180); - mChartPressure = findViewById(R.id.chart_pre_bmp180); - - XAxis xTemperature = mChartTemperature.getXAxis(); - YAxis yTemperature = mChartTemperature.getAxisLeft(); - YAxis yTemperature2 = mChartTemperature.getAxisRight(); - - XAxis xAltitude = mChartAltitude.getXAxis(); - YAxis yAltitude = mChartAltitude.getAxisLeft(); - YAxis yAltitude2 = mChartAltitude.getAxisRight(); - - XAxis xPressure = mChartPressure.getXAxis(); - YAxis yPressure = mChartPressure.getAxisLeft(); - YAxis yPressure2 = mChartPressure.getAxisRight(); - - entriesTemperature = new ArrayList<>(); - entriesAltitude = new ArrayList<>(); - entriesPressure = new ArrayList<>(); - - mChartTemperature.setTouchEnabled(true); - mChartTemperature.setHighlightPerDragEnabled(true); - mChartTemperature.setDragEnabled(true); - mChartTemperature.setScaleEnabled(true); - mChartTemperature.setDrawGridBackground(false); - mChartTemperature.setPinchZoom(true); - mChartTemperature.setScaleYEnabled(false); - mChartTemperature.setBackgroundColor(Color.BLACK); - mChartTemperature.getDescription().setEnabled(false); - - LineData data = new LineData(); - data.setValueTextColor(Color.WHITE); - mChartTemperature.setData(data); - - Legend l = mChartTemperature.getLegend(); - l.setForm(Legend.LegendForm.LINE); - l.setTextColor(Color.WHITE); - - xTemperature.setTextColor(Color.WHITE); - xTemperature.setDrawGridLines(true); - xTemperature.setAvoidFirstLastClipping(true); - - yTemperature.setTextColor(Color.WHITE); - yTemperature.setAxisMaximum(70f); - yTemperature.setAxisMinimum(0f); - yTemperature.setDrawGridLines(true); - yTemperature.setLabelCount(10); - - yTemperature2.setDrawGridLines(false); - - mChartAltitude.setTouchEnabled(true); - mChartAltitude.setHighlightPerDragEnabled(true); - mChartAltitude.setDragEnabled(true); - mChartAltitude.setScaleEnabled(true); - mChartAltitude.setDrawGridBackground(false); - mChartAltitude.setPinchZoom(true); - mChartAltitude.setScaleYEnabled(false); - mChartAltitude.setBackgroundColor(Color.BLACK); - mChartAltitude.getDescription().setEnabled(false); - - LineData data2 = new LineData(); - data.setValueTextColor(Color.WHITE); - mChartAltitude.setData(data2); - - Legend l2 = mChartAltitude.getLegend(); - l2.setForm(Legend.LegendForm.LINE); - l2.setTextColor(Color.WHITE); - - xAltitude.setTextColor(Color.WHITE); - xAltitude.setDrawGridLines(true); - xAltitude.setAvoidFirstLastClipping(true); - - yAltitude.setTextColor(Color.WHITE); - yAltitude.setAxisMaximum(3000f); - yAltitude.setAxisMinimum(0f); - yAltitude.setDrawGridLines(true); - yAltitude.setLabelCount(10); - - yAltitude2.setDrawGridLines(false); - - mChartPressure.setTouchEnabled(true); - mChartPressure.setHighlightPerDragEnabled(true); - mChartPressure.setDragEnabled(true); - mChartPressure.setScaleEnabled(true); - mChartPressure.setDrawGridBackground(false); - mChartPressure.setPinchZoom(true); - mChartPressure.setScaleYEnabled(false); - mChartPressure.setBackgroundColor(Color.BLACK); - mChartPressure.getDescription().setEnabled(false); - - LineData data3 = new LineData(); - data.setValueTextColor(Color.WHITE); - mChartTemperature.setData(data3); - - Legend l3 = mChartTemperature.getLegend(); - l3.setForm(Legend.LegendForm.LINE); - l3.setTextColor(Color.WHITE); - - xPressure.setTextColor(Color.WHITE); - xPressure.setDrawGridLines(true); - xPressure.setAvoidFirstLastClipping(true); - - yPressure.setTextColor(Color.WHITE); - yPressure.setAxisMaximum(1000000f); - yPressure.setAxisMinimum(0f); - yPressure.setDrawGridLines(true); - yPressure.setLabelCount(10); - - yPressure2.setDrawGridLines(false); - } - - private boolean shouldPlay() { - if (play && scienceLab.isConnected()) { - if (indefiniteSamplesCheckBox.isChecked()) - return true; - else if (counter >= 0) { - counter--; - return true; - } else { - play = false; - return false; - } - } else { - return false; - } - } - - private void setSensorDock() { - play = false; - runIndefinitely = true; - timeGap = 100; - final int step = 1; - final int max = 1000; - final int min = 100; - - playPauseButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (play && scienceLab.isConnected()) { - playPauseButton.setImageResource(R.drawable.circle_play_button); - play = false; - } else if (!scienceLab.isConnected()) { - playPauseButton.setImageResource(R.drawable.circle_play_button); - play = false; - } else { - playPauseButton.setImageResource(R.drawable.circle_pause_button); - play = true; - if (!indefiniteSamplesCheckBox.isChecked()) { - counter = Integer.parseInt(samplesEditBox.getText().toString()); - } - } - } - }); - sensorDock.setVisibility(View.VISIBLE); - - indefiniteSamplesCheckBox.setChecked(true); - samplesEditBox.setEnabled(false); - indefiniteSamplesCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - if (isChecked) { - runIndefinitely = true; - samplesEditBox.setEnabled(false); - } else { - runIndefinitely = false; - samplesEditBox.setEnabled(true); - } - } - }); - - timeGapSeekbar.setMax((max - min) / step); - timeGapSeekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { - @Override - public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { - timeGap = min + (progress * step); - timeGapLabel.setText(timeGap + "ms"); - } - - @Override - public void onStartTrackingTouch(SeekBar seekBar) { - - } - - @Override - public void onStopTrackingTouch(SeekBar seekBar) { - - } - }); - } - - private class SensorDataFetch extends AsyncTask { - - private double[] dataBMP180 = new double[3]; - private long timeElapsed; - - @Override - protected Void doInBackground(Void... params) { - try { - if (sensorBMP180 != null && scienceLab.isConnected()) { - dataBMP180 = sensorBMP180.getRaw(); - } - } catch (IOException | InterruptedException e) { - e.printStackTrace(); - } - - timeElapsed = (System.currentTimeMillis() - startTime) / 1000; - entriesTemperature.add(new Entry((float) timeElapsed, (float) dataBMP180[0])); - entriesAltitude.add(new Entry((float) timeElapsed, (float) dataBMP180[1])); - entriesPressure.add(new Entry((float) timeElapsed, (float) dataBMP180[2])); - return null; - } - - protected void onPostExecute(Void aVoid) { - super.onPostExecute(aVoid); - tvSensorBMP180Temp.setText(DataFormatter.formatDouble(dataBMP180[0], DataFormatter.HIGH_PRECISION_FORMAT)); - tvSensorBMP180Altitude.setText(DataFormatter.formatDouble(dataBMP180[1], DataFormatter.HIGH_PRECISION_FORMAT)); - tvSensorBMP180Pressure.setText(DataFormatter.formatDouble(dataBMP180[2], DataFormatter.HIGH_PRECISION_FORMAT)); - - LineDataSet dataSet1 = new LineDataSet(entriesTemperature, getString(R.string.temperature)); - LineDataSet dataSet2 = new LineDataSet(entriesAltitude, getString(R.string.altitude)); - LineDataSet dataSet3 = new LineDataSet(entriesPressure, getString(R.string.pressure)); - - dataSet1.setColor(Color.BLUE); - dataSet2.setColor(Color.GREEN); - dataSet3.setColor(Color.RED); - - LineData data = new LineData(dataSet1); - mChartTemperature.setData(data); - mChartTemperature.notifyDataSetChanged(); - mChartTemperature.setVisibleXRangeMaximum(10); - mChartTemperature.moveViewToX(data.getEntryCount()); - mChartTemperature.invalidate(); - - LineData data2 = new LineData(dataSet2); - mChartAltitude.setData(data2); - mChartAltitude.notifyDataSetChanged(); - mChartAltitude.setVisibleXRangeMaximum(10); - mChartAltitude.moveViewToX(data.getEntryCount()); - mChartAltitude.invalidate(); - - LineData data3 = new LineData(dataSet3); - mChartPressure.setData(data3); - mChartPressure.notifyDataSetChanged(); - mChartPressure.setVisibleXRangeMaximum(10); - mChartPressure.moveViewToX(data.getEntryCount()); - mChartPressure.invalidate(); - samplesEditBox.setText(String.valueOf(counter)); - if (counter == 0 && !runIndefinitely) { - play = false; - playPauseButton.setImageResource(R.drawable.circle_play_button); - } - synchronized (lock) { - lock.notify(); - } - } - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - if (item.getItemId() == android.R.id.home) { - finish(); - } - return true; - } -} diff --git a/app/src/main/java/io/pslab/sensors/SensorCCS811.java b/app/src/main/java/io/pslab/sensors/SensorCCS811.java deleted file mode 100644 index c2218009e..000000000 --- a/app/src/main/java/io/pslab/sensors/SensorCCS811.java +++ /dev/null @@ -1,349 +0,0 @@ -package io.pslab.sensors; - -import android.graphics.Color; -import android.os.AsyncTask; -import android.os.Bundle; -import android.view.MenuItem; -import android.view.View; -import android.widget.CheckBox; -import android.widget.CompoundButton; -import android.widget.EditText; -import android.widget.ImageButton; -import android.widget.RelativeLayout; -import android.widget.SeekBar; -import android.widget.TextView; - -import androidx.appcompat.app.ActionBar; -import androidx.appcompat.app.AppCompatActivity; -import androidx.appcompat.widget.Toolbar; - -import com.github.mikephil.charting.charts.LineChart; -import com.github.mikephil.charting.components.Legend; -import com.github.mikephil.charting.components.XAxis; -import com.github.mikephil.charting.components.YAxis; -import com.github.mikephil.charting.data.Entry; -import com.github.mikephil.charting.data.LineData; -import com.github.mikephil.charting.data.LineDataSet; - -import java.io.IOException; -import java.util.ArrayList; - -import io.pslab.DataFormatter; -import io.pslab.R; -import io.pslab.communication.ScienceLab; -import io.pslab.communication.peripherals.I2C; -import io.pslab.communication.sensors.CCS811; -import io.pslab.communication.sensors.SHT21; -import io.pslab.others.ScienceLabCommon; - -public class SensorCCS811 extends AppCompatActivity { - private static int counter; - private final Object lock = new Object(); - private ScienceLab scienceLab; - private SensorCCS811.SensorDataFetch sensorDataFetch; - private TextView tvSensorCCS811eCO2; - private TextView tvSensorCCS811TVOC; - private CCS811 sensorCCS811; - private LineChart mCharteCO2; - private LineChart mChartTVOC; - private long startTime; - private int flag; - private ArrayList entrieseCO2; - private ArrayList entriesTVOC; - private RelativeLayout sensorDock; - private CheckBox indefiniteSamplesCheckBox; - private EditText samplesEditBox; - private SeekBar timeGapSeekbar; - private TextView timeGapLabel; - private ImageButton playPauseButton; - private boolean play; - private boolean runIndefinitely; - private int timeGap; - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.sensor_ccs811); - - Toolbar toolbar = findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - final ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setTitle(R.string.ccs811); - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setDisplayShowHomeEnabled(true); - } - - sensorDock = findViewById(R.id.sensor_control_dock_layout); - indefiniteSamplesCheckBox = findViewById(R.id.checkBox_samples_sensor); - samplesEditBox = findViewById(R.id.editBox_samples_sensors); - timeGapSeekbar = findViewById(R.id.seekBar_timegap_sensor); - timeGapLabel = findViewById(R.id.tv_timegap_label); - playPauseButton = findViewById(R.id.imageButton_play_pause_sensor); - setSensorDock(); - sensorDock.setVisibility(View.VISIBLE); - - scienceLab = ScienceLabCommon.scienceLab; - I2C i2c = scienceLab.i2c; - try { - sensorCCS811 = new CCS811(i2c, scienceLab); - } catch (Exception e) { - e.printStackTrace(); - } - - entrieseCO2 = new ArrayList<>(); - entriesTVOC = new ArrayList<>(); - - Runnable runnable = new Runnable() { - @Override - public void run() { - while (true) { - if (scienceLab.isConnected() && shouldPlay()) { - sensorDataFetch = new SensorCCS811.SensorDataFetch(); - sensorDataFetch.execute(); - - if (flag == 0) { - startTime = System.currentTimeMillis(); - flag = 1; - } - - synchronized (lock) { - try { - lock.wait(); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - - try { - Thread.sleep(timeGap); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - } - } - }; - new Thread(runnable).start(); - - tvSensorCCS811eCO2 = findViewById(R.id.tv_sensor_ccs811_eCO2); - tvSensorCCS811TVOC = findViewById(R.id.tv_sensor_ccs811_TVOC); - mCharteCO2 = findViewById(R.id.chart_eCO2_ccs811); - mChartTVOC = findViewById(R.id.chart_TVOC_ccs811); - - XAxis xeCO2 = mCharteCO2.getXAxis(); - YAxis yeCO2 = mCharteCO2.getAxisLeft(); - YAxis yeCO22 = mCharteCO2.getAxisRight(); - - XAxis xTVOC = mChartTVOC.getXAxis(); - YAxis yTVOC = mChartTVOC.getAxisLeft(); - YAxis yTVOC2 = mChartTVOC.getAxisRight(); - - mCharteCO2.setTouchEnabled(true); - mCharteCO2.setHighlightPerDragEnabled(true); - mCharteCO2.setDragEnabled(true); - mCharteCO2.setScaleEnabled(true); - mCharteCO2.setDrawGridBackground(false); - mCharteCO2.setPinchZoom(true); - mCharteCO2.setScaleYEnabled(false); - mCharteCO2.setBackgroundColor(Color.BLACK); - mCharteCO2.getDescription().setEnabled(false); - - LineData data = new LineData(); - data.setValueTextColor(Color.WHITE); - mCharteCO2.setData(data); - - Legend l = mCharteCO2.getLegend(); - l.setForm(Legend.LegendForm.LINE); - l.setTextColor(Color.WHITE); - - xeCO2.setTextColor(Color.WHITE); - xeCO2.setDrawGridLines(true); - xeCO2.setAvoidFirstLastClipping(true); - - yeCO2.setTextColor(Color.WHITE); - yeCO2.setAxisMaximum(10000f); - yeCO2.setAxisMinimum(0); - yeCO2.setDrawGridLines(true); - yeCO2.setLabelCount(10); - - yeCO22.setDrawGridLines(false); - - mChartTVOC.setTouchEnabled(true); - mChartTVOC.setHighlightPerDragEnabled(true); - mChartTVOC.setDragEnabled(true); - mChartTVOC.setScaleEnabled(true); - mChartTVOC.setDrawGridBackground(false); - mChartTVOC.setPinchZoom(true); - mChartTVOC.setScaleYEnabled(false); - mChartTVOC.setBackgroundColor(Color.BLACK); - mChartTVOC.getDescription().setEnabled(false); - - LineData data2 = new LineData(); - data.setValueTextColor(Color.WHITE); - mChartTVOC.setData(data2); - - Legend l2 = mChartTVOC.getLegend(); - l2.setForm(Legend.LegendForm.LINE); - l2.setTextColor(Color.WHITE); - - xTVOC.setTextColor(Color.WHITE); - xTVOC.setDrawGridLines(true); - xTVOC.setAvoidFirstLastClipping(true); - - yTVOC.setTextColor(Color.WHITE); - yTVOC.setAxisMaximum(2000f); - yTVOC.setAxisMinimum(0f); - yTVOC.setDrawGridLines(true); - yTVOC.setLabelCount(10); - - yTVOC2.setDrawGridLines(false); - - } - - private boolean shouldPlay() { - if (play) { - if (indefiniteSamplesCheckBox.isChecked()) - return true; - else if (counter >= 0) { - counter--; - return true; - } else { - play = false; - return false; - } - } else { - return false; - } - } - - private void setSensorDock() { - play = false; - runIndefinitely = true; - timeGap = 100; - final int step = 1; - final int max = 1000; - final int min = 100; - - playPauseButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (play && scienceLab.isConnected()) { - playPauseButton.setImageResource(R.drawable.circle_play_button); - play = false; - } else if (!scienceLab.isConnected()) { - playPauseButton.setImageResource(R.drawable.circle_play_button); - play = false; - } else { - playPauseButton.setImageResource(R.drawable.circle_pause_button); - play = true; - if (!indefiniteSamplesCheckBox.isChecked()) { - counter = Integer.parseInt(samplesEditBox.getText().toString()); - } - } - } - }); - sensorDock.setVisibility(View.VISIBLE); - - indefiniteSamplesCheckBox.setChecked(true); - samplesEditBox.setEnabled(false); - indefiniteSamplesCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - if (isChecked) { - runIndefinitely = true; - samplesEditBox.setEnabled(false); - } else { - runIndefinitely = false; - samplesEditBox.setEnabled(true); - } - } - }); - - timeGapSeekbar.setMax((max - min) / step); - timeGapSeekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { - @Override - public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { - timeGap = min + (progress * step); - timeGapLabel.setText(timeGap + "ms"); - } - - @Override - public void onStartTrackingTouch(SeekBar seekBar) { - // Do nothing - } - - @Override - public void onStopTrackingTouch(SeekBar seekBar) { - // Do nothing - } - }); - } - - private class SensorDataFetch extends AsyncTask { - - private int[] dataCS811; - private int dataCCS811eCO2; - private int dataCCS811TVOC; - private long timeElapsed; - - @Override - protected Void doInBackground(Void... params) { - try { - if (sensorCCS811 != null) { - dataCS811 = sensorCCS811.getRaw(); - dataCCS811eCO2 = dataCS811[0]; - dataCCS811TVOC = dataCS811[1]; - } - } catch (IOException e) { - e.printStackTrace(); - } - timeElapsed = (System.currentTimeMillis() - startTime) / 1000; - entrieseCO2.add(new Entry((float) timeElapsed, dataCCS811eCO2)); - entriesTVOC.add(new Entry((float) timeElapsed, dataCCS811TVOC)); - return null; - } - - protected void onPostExecute(Void aVoid) { - super.onPostExecute(aVoid); - tvSensorCCS811eCO2.setText(DataFormatter.formatDouble(dataCCS811eCO2, DataFormatter.HIGH_PRECISION_FORMAT)); - tvSensorCCS811TVOC.setText(DataFormatter.formatDouble(dataCCS811TVOC, DataFormatter.HIGH_PRECISION_FORMAT)); - - LineDataSet dataSet1 = new LineDataSet(entrieseCO2, getString(R.string.eCO2)); - LineDataSet dataSet2 = new LineDataSet(entriesTVOC, getString(R.string.eTVOC)); - - dataSet1.setDrawCircles(true); - dataSet2.setDrawCircles(true); - - LineData data = new LineData(dataSet1); - mCharteCO2.setData(data); - mCharteCO2.notifyDataSetChanged(); - mCharteCO2.setVisibleXRangeMaximum(10); - mCharteCO2.moveViewToX(data.getEntryCount()); - mCharteCO2.invalidate(); - - LineData data2 = new LineData(dataSet2); - mChartTVOC.setData(data2); - mChartTVOC.notifyDataSetChanged(); - mChartTVOC.setVisibleXRangeMaximum(10); - mChartTVOC.moveViewToX(data2.getEntryCount()); - mChartTVOC.invalidate(); - samplesEditBox.setText(String.valueOf(counter)); - if (counter == 0 && !runIndefinitely) { - play = false; - playPauseButton.setImageResource(R.drawable.circle_play_button); - } - synchronized (lock) { - lock.notify(); - } - } - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - if (item.getItemId() == android.R.id.home) { - finish(); - } - return true; - } -} diff --git a/app/src/main/java/io/pslab/sensors/SensorHMC5883L.java b/app/src/main/java/io/pslab/sensors/SensorHMC5883L.java deleted file mode 100644 index 395dfd7a8..000000000 --- a/app/src/main/java/io/pslab/sensors/SensorHMC5883L.java +++ /dev/null @@ -1,323 +0,0 @@ -package io.pslab.sensors; - -import android.graphics.Color; -import android.os.AsyncTask; -import android.os.Bundle; -import android.view.MenuItem; -import android.view.View; -import android.widget.CheckBox; -import android.widget.CompoundButton; -import android.widget.EditText; -import android.widget.ImageButton; -import android.widget.RelativeLayout; -import android.widget.SeekBar; -import android.widget.TextView; - -import androidx.appcompat.app.ActionBar; -import androidx.appcompat.app.AppCompatActivity; -import androidx.appcompat.widget.Toolbar; - -import com.github.mikephil.charting.charts.LineChart; -import com.github.mikephil.charting.components.Legend; -import com.github.mikephil.charting.components.XAxis; -import com.github.mikephil.charting.components.YAxis; -import com.github.mikephil.charting.data.Entry; -import com.github.mikephil.charting.data.LineData; -import com.github.mikephil.charting.data.LineDataSet; -import com.github.mikephil.charting.interfaces.datasets.ILineDataSet; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; - -import io.pslab.DataFormatter; -import io.pslab.R; -import io.pslab.communication.ScienceLab; -import io.pslab.communication.peripherals.I2C; -import io.pslab.communication.sensors.HMC5883L; -import io.pslab.others.ScienceLabCommon; - -/** - * Created by Harsh on 6/6/18. - */ - -public class SensorHMC5883L extends AppCompatActivity { - private static int counter; - private final Object lock = new Object(); - private ScienceLab scienceLab; - private SensorHMC5883L.SensorDataFetch sensorDataFetch; - private TextView tvSensorHMC5883Lbx; - private TextView tvSensorHMC5883Lby; - private TextView tvSensorHMC5883Lbz; - private HMC5883L sensorHMC5883L; - private LineChart mChart; - private long startTime; - private int flag; - private ArrayList entriesBx; - private ArrayList entriesBy; - private ArrayList entriesBz; - private RelativeLayout sensorDock; - private CheckBox indefiniteSamplesCheckBox; - private EditText samplesEditBox; - private SeekBar timeGapSeekbar; - private TextView timeGapLabel; - private ImageButton playPauseButton; - private boolean play; - private boolean runIndefinitely; - private int timeGap; - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.sensor_hmc5883l); - - Toolbar toolbar = findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - final ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setTitle(R.string.hmc5883l); - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setDisplayShowHomeEnabled(true); - } - - sensorDock = findViewById(R.id.sensor_control_dock_layout); - indefiniteSamplesCheckBox = findViewById(R.id.checkBox_samples_sensor); - samplesEditBox = findViewById(R.id.editBox_samples_sensors); - timeGapSeekbar = findViewById(R.id.seekBar_timegap_sensor); - timeGapLabel = findViewById(R.id.tv_timegap_label); - playPauseButton = findViewById(R.id.imageButton_play_pause_sensor); - setSensorDock(); - sensorDock.setVisibility(View.VISIBLE); - - scienceLab = ScienceLabCommon.scienceLab; - I2C i2c = scienceLab.i2c; - try { - sensorHMC5883L = new HMC5883L(i2c, scienceLab); - } catch (IOException e) { - e.printStackTrace(); - } - - entriesBx = new ArrayList<>(); - entriesBy = new ArrayList<>(); - entriesBz = new ArrayList<>(); - sensorDock.setVisibility(View.VISIBLE); - - Runnable runnable = new Runnable() { - @Override - public void run() { - while (true) { - if (scienceLab.isConnected() && shouldPlay()) { - sensorDataFetch = new SensorHMC5883L.SensorDataFetch(); - sensorDataFetch.execute(); - if (flag == 0) { - startTime = System.currentTimeMillis(); - flag = 1; - } - synchronized (lock) { - try { - lock.wait(); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - try { - Thread.sleep(timeGap); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - } - } - }; - new Thread(runnable).start(); - - tvSensorHMC5883Lbx = findViewById(R.id.tv_sensor_hmc5883l_bx); - tvSensorHMC5883Lby = findViewById(R.id.tv_sensor_hmc5883l_by); - tvSensorHMC5883Lbz = findViewById(R.id.tv_sensor_hmc5883l_bz); - mChart = findViewById(R.id.chart_hmc5883l); - XAxis x = mChart.getXAxis(); - YAxis y = mChart.getAxisLeft(); - YAxis y2 = mChart.getAxisRight(); - - mChart.setTouchEnabled(true); - mChart.setHighlightPerDragEnabled(true); - mChart.setDragEnabled(true); - mChart.setScaleEnabled(true); - mChart.setDrawGridBackground(false); - mChart.setPinchZoom(true); - mChart.setScaleYEnabled(false); - mChart.setBackgroundColor(Color.BLACK); - mChart.getDescription().setEnabled(false); - - LineData data = new LineData(); - data.setValueTextColor(Color.WHITE); - mChart.setData(data); - - Legend l = mChart.getLegend(); - l.setForm(Legend.LegendForm.LINE); - l.setTextColor(Color.WHITE); - - x.setTextColor(Color.WHITE); - x.setDrawGridLines(true); - x.setAvoidFirstLastClipping(true); - - y.setTextColor(Color.WHITE); - y.setAxisMaximum(10f); - y.setAxisMinimum(-10f); - y.setDrawGridLines(true); - y.setLabelCount(10); - - y2.setDrawGridLines(false); - } - - private boolean shouldPlay() { - if (play) { - if (indefiniteSamplesCheckBox.isChecked()) - return true; - else if (counter >= 0) { - counter--; - return true; - } else { - play = false; - return false; - } - } else { - return false; - } - } - - private void setSensorDock() { - play = false; - runIndefinitely = true; - timeGap = 100; - final int step = 1; - final int max = 1000; - final int min = 100; - - playPauseButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (play && scienceLab.isConnected()) { - playPauseButton.setImageResource(R.drawable.circle_play_button); - play = false; - } else if (!scienceLab.isConnected()) { - playPauseButton.setImageResource(R.drawable.circle_play_button); - play = false; - } else { - playPauseButton.setImageResource(R.drawable.circle_pause_button); - play = true; - if (!indefiniteSamplesCheckBox.isChecked()) { - counter = Integer.parseInt(samplesEditBox.getText().toString()); - } - } - } - }); - sensorDock.setVisibility(View.VISIBLE); - - indefiniteSamplesCheckBox.setChecked(true); - samplesEditBox.setEnabled(false); - indefiniteSamplesCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - if (isChecked) { - runIndefinitely = true; - samplesEditBox.setEnabled(false); - } else { - runIndefinitely = false; - samplesEditBox.setEnabled(true); - } - } - }); - - timeGapSeekbar.setMax((max - min) / step); - timeGapSeekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { - @Override - public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { - timeGap = min + (progress * step); - timeGapLabel.setText(timeGap + "ms"); - } - - @Override - public void onStartTrackingTouch(SeekBar seekBar) { - - } - - @Override - public void onStopTrackingTouch(SeekBar seekBar) { - - } - }); - } - - private class SensorDataFetch extends AsyncTask { - - private ArrayList dataHMC5883L = new ArrayList<>(); - private long timeElapsed; - - @Override - protected Void doInBackground(Void... params) { - try { - if (sensorHMC5883L != null) { - dataHMC5883L = sensorHMC5883L.getRaw(); - } - } catch (IOException e) { - e.printStackTrace(); - } - - timeElapsed = (System.currentTimeMillis() - startTime) / 1000; - entriesBx.add(new Entry((float) timeElapsed, dataHMC5883L.get(0).floatValue())); - entriesBy.add(new Entry((float) timeElapsed, dataHMC5883L.get(1).floatValue())); - entriesBz.add(new Entry((float) timeElapsed, dataHMC5883L.get(2).floatValue())); - return null; - } - - protected void onPostExecute(Void aVoid) { - super.onPostExecute(aVoid); - - tvSensorHMC5883Lbx.setText(DataFormatter.formatDouble(dataHMC5883L.get(0), DataFormatter.HIGH_PRECISION_FORMAT)); - tvSensorHMC5883Lby.setText(DataFormatter.formatDouble(dataHMC5883L.get(1), DataFormatter.HIGH_PRECISION_FORMAT)); - tvSensorHMC5883Lbz.setText(DataFormatter.formatDouble(dataHMC5883L.get(2), DataFormatter.HIGH_PRECISION_FORMAT)); - - LineDataSet dataset1 = new LineDataSet(entriesBx, getString(R.string.bx)); - LineDataSet dataSet2 = new LineDataSet(entriesBy, getString(R.string.by)); - LineDataSet dataSet3 = new LineDataSet(entriesBz, getString(R.string.bz)); - - dataset1.setColor(Color.BLUE); - dataSet2.setColor(Color.GREEN); - dataSet3.setColor(Color.RED); - - dataset1.setDrawCircles(true); - dataSet2.setDrawCircles(true); - dataSet3.setDrawCircles(true); - - List dataSets = new ArrayList<>(); - dataSets.add(dataset1); - dataSets.add(dataSet2); - dataSets.add(dataSet3); - - LineData data = new LineData(dataSets); - mChart.setData(data); - mChart.notifyDataSetChanged(); - mChart.setVisibleXRangeMaximum(10); - mChart.moveViewToX(data.getEntryCount()); - mChart.invalidate(); - - samplesEditBox.setText(String.valueOf(counter)); - if (counter == 0 && !runIndefinitely) { - play = false; - playPauseButton.setImageResource(R.drawable.circle_play_button); - } - synchronized (lock) { - lock.notify(); - } - } - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - if (item.getItemId() == android.R.id.home) { - finish(); - } - return true; - } -} diff --git a/app/src/main/java/io/pslab/sensors/SensorMLX90614.java b/app/src/main/java/io/pslab/sensors/SensorMLX90614.java deleted file mode 100644 index fef015cc9..000000000 --- a/app/src/main/java/io/pslab/sensors/SensorMLX90614.java +++ /dev/null @@ -1,399 +0,0 @@ -package io.pslab.sensors; - -import android.annotation.SuppressLint; -import android.content.SharedPreferences; -import android.graphics.Color; -import android.os.AsyncTask; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.MenuItem; -import android.view.View; -import android.widget.Button; -import android.widget.CheckBox; -import android.widget.CompoundButton; -import android.widget.EditText; -import android.widget.ImageButton; -import android.widget.ImageView; -import android.widget.RelativeLayout; -import android.widget.SeekBar; -import android.widget.TextView; - -import androidx.appcompat.app.ActionBar; -import androidx.appcompat.app.AlertDialog; -import androidx.appcompat.app.AppCompatActivity; -import androidx.appcompat.widget.Toolbar; - -import com.github.mikephil.charting.charts.LineChart; -import com.github.mikephil.charting.components.Legend; -import com.github.mikephil.charting.components.XAxis; -import com.github.mikephil.charting.components.YAxis; -import com.github.mikephil.charting.data.Entry; -import com.github.mikephil.charting.data.LineData; -import com.github.mikephil.charting.data.LineDataSet; - -import java.io.IOException; -import java.util.ArrayList; - -import io.pslab.DataFormatter; -import io.pslab.R; -import io.pslab.communication.ScienceLab; -import io.pslab.communication.peripherals.I2C; -import io.pslab.communication.sensors.MLX90614; -import io.pslab.others.ScienceLabCommon; - - -public class SensorMLX90614 extends AppCompatActivity { - - private static final String PREF_NAME = "SensorMLX90614"; - private static final String KEY = "SensorMLX90614Key"; - - private static int counter; - private final Object lock = new Object(); - private ScienceLab scienceLab; - private SensorMLX90614.SensorDataFetch sensorDataFetch; - private TextView tvSensorMLX90614ObjectTemp; - private TextView tvSensorMLX90614AmbientTemp; - private MLX90614 sensorMLX90614; - private LineChart mChartObjectTemperature; - private LineChart mChartAmbientTemperature; - private long startTime; - private int flag; - private ArrayList entriesObjectTemperature; - private ArrayList entriesAmbientTemperature; - private RelativeLayout sensorDock; - private CheckBox indefiniteSamplesCheckBox; - private EditText samplesEditBox; - private SeekBar timeGapSeekbar; - private TextView timeGapLabel; - private ImageButton playPauseButton; - private boolean play; - private boolean runIndefinitely; - private int timeGap; - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.sensor_mlx90614); - - Toolbar toolbar = findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - final ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setTitle(R.string.mlx90614); - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setDisplayShowHomeEnabled(true); - } - - howToConnectDialog(getString(R.string.ir_thermometer), getString(R.string.ir_thermometer_intro), R.drawable.mlx90614_schematic, getString(R.string.ir_thermometer_desc)); - - sensorDock = findViewById(R.id.sensor_control_dock_layout); - indefiniteSamplesCheckBox = findViewById(R.id.checkBox_samples_sensor); - samplesEditBox = findViewById(R.id.editBox_samples_sensors); - timeGapSeekbar = findViewById(R.id.seekBar_timegap_sensor); - timeGapLabel = findViewById(R.id.tv_timegap_label); - playPauseButton = findViewById(R.id.imageButton_play_pause_sensor); - setSensorDock(); - sensorDock.setVisibility(View.VISIBLE); - - scienceLab = ScienceLabCommon.scienceLab; - I2C i2c = scienceLab.i2c; - try { - sensorMLX90614 = new MLX90614(i2c); - } catch (IOException e) { - e.printStackTrace(); - } - - entriesObjectTemperature = new ArrayList<>(); - entriesAmbientTemperature = new ArrayList<>(); - - Runnable runnable = new Runnable() { - @Override - public void run() { - while (true) { - if (scienceLab.isConnected() && shouldPlay()) { - sensorDataFetch = new SensorMLX90614.SensorDataFetch(); - sensorDataFetch.execute(); - if (flag == 0) { - startTime = System.currentTimeMillis(); - flag = 1; - } - - synchronized (lock) { - try { - lock.wait(); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - - try { - Thread.sleep(timeGap); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - } - } - }; - new Thread(runnable).start(); - - tvSensorMLX90614ObjectTemp = findViewById(R.id.tv_sensor_mlx90614_object_temp); - tvSensorMLX90614AmbientTemp = findViewById(R.id.tv_sensor_mlx90614_ambient_temp); - - mChartObjectTemperature = findViewById(R.id.chart_obj_temp_mlx); - mChartAmbientTemperature = findViewById(R.id.chart_amb_temp_mlx); - - XAxis xObjectTemperature = mChartObjectTemperature.getXAxis(); - YAxis yObjectTemperature = mChartObjectTemperature.getAxisLeft(); - YAxis yObjectTemperature2 = mChartObjectTemperature.getAxisRight(); - - XAxis xAmbientTemperature = mChartAmbientTemperature.getXAxis(); - YAxis yAmbientTemperature = mChartAmbientTemperature.getAxisLeft(); - YAxis yAmbientTemperature2 = mChartAmbientTemperature.getAxisRight(); - - mChartObjectTemperature.setTouchEnabled(true); - mChartObjectTemperature.setHighlightPerDragEnabled(true); - mChartObjectTemperature.setDragEnabled(true); - mChartObjectTemperature.setScaleEnabled(true); - mChartObjectTemperature.setDrawGridBackground(false); - mChartObjectTemperature.setPinchZoom(true); - mChartObjectTemperature.setScaleYEnabled(false); - mChartObjectTemperature.setBackgroundColor(Color.BLACK); - mChartObjectTemperature.getDescription().setEnabled(false); - - LineData data = new LineData(); - data.setValueTextColor(Color.WHITE); - mChartObjectTemperature.setData(data); - - Legend l = mChartObjectTemperature.getLegend(); - l.setForm(Legend.LegendForm.LINE); - l.setTextColor(Color.WHITE); - - xObjectTemperature.setTextColor(Color.WHITE); - xObjectTemperature.setDrawGridLines(true); - xObjectTemperature.setAvoidFirstLastClipping(true); - - yObjectTemperature.setTextColor(Color.WHITE); - yObjectTemperature.setAxisMaximum(125f); - yObjectTemperature.setAxisMinimum(-40f); - yObjectTemperature.setDrawGridLines(true); - yObjectTemperature.setLabelCount(10); - - yObjectTemperature2.setDrawGridLines(false); - - mChartAmbientTemperature.setTouchEnabled(true); - mChartAmbientTemperature.setHighlightPerDragEnabled(true); - mChartAmbientTemperature.setDragEnabled(true); - mChartAmbientTemperature.setScaleEnabled(true); - mChartAmbientTemperature.setDrawGridBackground(false); - mChartAmbientTemperature.setPinchZoom(true); - mChartAmbientTemperature.setScaleYEnabled(false); - mChartAmbientTemperature.setBackgroundColor(Color.BLACK); - mChartAmbientTemperature.getDescription().setEnabled(false); - - LineData data2 = new LineData(); - data.setValueTextColor(Color.WHITE); - mChartAmbientTemperature.setData(data2); - - Legend l2 = mChartAmbientTemperature.getLegend(); - l2.setForm(Legend.LegendForm.LINE); - l2.setTextColor(Color.WHITE); - - xAmbientTemperature.setTextColor(Color.WHITE); - xAmbientTemperature.setDrawGridLines(true); - xAmbientTemperature.setAvoidFirstLastClipping(true); - - yAmbientTemperature.setTextColor(Color.WHITE); - yAmbientTemperature.setAxisMaximum(380f); - yAmbientTemperature.setAxisMinimum(-70f); - yAmbientTemperature.setDrawGridLines(true); - yAmbientTemperature.setLabelCount(10); - - yAmbientTemperature2.setDrawGridLines(false); - } - - private boolean shouldPlay() { - if (play) { - if (indefiniteSamplesCheckBox.isChecked()) - return true; - else if (counter >= 0) { - counter--; - return true; - } else { - play = false; - return false; - } - } else { - return false; - } - } - - private void setSensorDock() { - play = false; - runIndefinitely = true; - timeGap = 100; - final int step = 1; - final int max = 1000; - final int min = 100; - - playPauseButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (play && scienceLab.isConnected()) { - playPauseButton.setImageResource(R.drawable.circle_play_button); - play = false; - } else if (!scienceLab.isConnected()) { - playPauseButton.setImageResource(R.drawable.circle_play_button); - play = false; - } else { - playPauseButton.setImageResource(R.drawable.circle_pause_button); - play = true; - if (!indefiniteSamplesCheckBox.isChecked()) { - counter = Integer.parseInt(samplesEditBox.getText().toString()); - } - } - } - }); - sensorDock.setVisibility(View.VISIBLE); - - indefiniteSamplesCheckBox.setChecked(true); - samplesEditBox.setEnabled(false); - indefiniteSamplesCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - if (isChecked) { - runIndefinitely = true; - samplesEditBox.setEnabled(false); - } else { - runIndefinitely = false; - samplesEditBox.setEnabled(true); - } - } - }); - - timeGapSeekbar.setMax((max - min) / step); - timeGapSeekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { - @Override - public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { - timeGap = min + (progress * step); - timeGapLabel.setText(timeGap + "ms"); - } - - @Override - public void onStartTrackingTouch(SeekBar seekBar) { - - } - - @Override - public void onStopTrackingTouch(SeekBar seekBar) { - - } - }); - } - - @SuppressLint("ResourceType") - public void howToConnectDialog(String title, String intro, int imageID, String desc) { - try { - final AlertDialog.Builder builder = new AlertDialog.Builder(this); - LayoutInflater inflater = getLayoutInflater(); - View dialogView = inflater.inflate(R.layout.custom_dialog_box, null); - builder.setView(dialogView); - builder.setTitle(title); - - final TextView dialogText = dialogView.findViewById(R.id.custom_dialog_text); - final TextView dialogDesc = dialogView.findViewById(R.id.description_text); - final ImageView dialogImage = dialogView.findViewById(R.id.custom_dialog_schematic); - final CheckBox doNotShowDialog = dialogView.findViewById(R.id.toggle_show_again); - final Button okButton = dialogView.findViewById(R.id.dismiss_button); - dialogText.setText(intro); - dialogImage.setImageResource(imageID); - dialogDesc.setText(desc); - - final SharedPreferences sharedPreferences = this.getSharedPreferences(PREF_NAME, MODE_PRIVATE); - final AlertDialog dialog = builder.create(); - Boolean skipDialog = sharedPreferences.getBoolean(KEY, false); - okButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (doNotShowDialog.isChecked()) { - SharedPreferences.Editor editor = sharedPreferences.edit(); - editor.putBoolean(KEY, true); - editor.apply(); - } - dialog.dismiss(); - } - }); - if (!skipDialog) { - dialog.show(); - } - } catch (Exception e) { - e.printStackTrace(); - } - } - - private class SensorDataFetch extends AsyncTask { - - private Double dataMLX90614ObjectTemp; - private Double dataMLX90614AmbientTemp; - private long timeElapsed; - - @Override - protected Void doInBackground(Void... params) { - try { - if (sensorMLX90614 != null) { - dataMLX90614ObjectTemp = sensorMLX90614.getObjectTemperature(); - dataMLX90614AmbientTemp = sensorMLX90614.getAmbientTemperature(); - } - } catch (IOException e) { - e.printStackTrace(); - } - - timeElapsed = (System.currentTimeMillis() - startTime) / 1000; - entriesObjectTemperature.add(new Entry((float) timeElapsed, dataMLX90614ObjectTemp.floatValue())); - entriesAmbientTemperature.add(new Entry((float) timeElapsed, dataMLX90614AmbientTemp.floatValue())); - return null; - } - - protected void onPostExecute(Void aVoid) { - super.onPostExecute(aVoid); - tvSensorMLX90614ObjectTemp.setText(DataFormatter.formatDouble(dataMLX90614ObjectTemp, DataFormatter.HIGH_PRECISION_FORMAT)); - tvSensorMLX90614AmbientTemp.setText(DataFormatter.formatDouble(dataMLX90614AmbientTemp, DataFormatter.HIGH_PRECISION_FORMAT)); - - LineDataSet dataSet1 = new LineDataSet(entriesObjectTemperature, getString(R.string.object_temp)); - LineDataSet dataSet2 = new LineDataSet(entriesAmbientTemperature, getString(R.string.ambient_temp)); - - dataSet1.setDrawCircles(true); - dataSet2.setDrawCircles(true); - - LineData data1 = new LineData(dataSet1); - mChartObjectTemperature.setData(data1); - mChartObjectTemperature.notifyDataSetChanged(); - mChartObjectTemperature.setVisibleXRangeMaximum(10); - mChartObjectTemperature.moveViewToX(data1.getEntryCount()); - mChartObjectTemperature.invalidate(); - - LineData data2 = new LineData(dataSet2); - mChartAmbientTemperature.setData(data2); - mChartAmbientTemperature.notifyDataSetChanged(); - mChartAmbientTemperature.setVisibleXRangeMaximum(10); - mChartAmbientTemperature.moveViewToX(data2.getEntryCount()); - mChartAmbientTemperature.invalidate(); - samplesEditBox.setText(String.valueOf(counter)); - if (counter == 0 && !runIndefinitely) { - play = false; - playPauseButton.setImageResource(R.drawable.circle_play_button); - } - synchronized (lock) { - lock.notify(); - } - } - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - if (item.getItemId() == android.R.id.home) { - finish(); - } - return true; - } -} diff --git a/app/src/main/java/io/pslab/sensors/SensorMPU6050.java b/app/src/main/java/io/pslab/sensors/SensorMPU6050.java deleted file mode 100644 index 0a2518ddd..000000000 --- a/app/src/main/java/io/pslab/sensors/SensorMPU6050.java +++ /dev/null @@ -1,424 +0,0 @@ -package io.pslab.sensors; - -import android.graphics.Color; -import android.os.AsyncTask; -import android.os.Bundle; -import android.view.MenuItem; -import android.view.View; -import android.widget.CheckBox; -import android.widget.CompoundButton; -import android.widget.EditText; -import android.widget.ImageButton; -import android.widget.RelativeLayout; -import android.widget.SeekBar; -import android.widget.Spinner; -import android.widget.TextView; - -import androidx.appcompat.app.ActionBar; -import androidx.appcompat.app.AppCompatActivity; -import androidx.appcompat.widget.Toolbar; - -import com.github.mikephil.charting.charts.LineChart; -import com.github.mikephil.charting.components.Legend; -import com.github.mikephil.charting.components.XAxis; -import com.github.mikephil.charting.components.YAxis; -import com.github.mikephil.charting.data.Entry; -import com.github.mikephil.charting.data.LineData; -import com.github.mikephil.charting.data.LineDataSet; -import com.github.mikephil.charting.interfaces.datasets.ILineDataSet; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; - -import io.pslab.DataFormatter; -import io.pslab.R; -import io.pslab.communication.ScienceLab; -import io.pslab.communication.peripherals.I2C; -import io.pslab.communication.sensors.MPU6050; -import io.pslab.others.ScienceLabCommon; - -/** - * Created by Harsh on 6/6/18. - */ - -public class SensorMPU6050 extends AppCompatActivity { - private static int counter; - private final Object lock = new Object(); - private ScienceLab scienceLab; - private SensorMPU6050.SensorDataFetch sensorDataFetch; - private TextView tvSensorMPU6050ax; - private TextView tvSensorMPU6050ay; - private TextView tvSensorMPU6050az; - private TextView tvSensorMPU6050gx; - private TextView tvSensorMPU6050gy; - private TextView tvSensorMPU6050gz; - private TextView tvSensorMPU6050temp; - private MPU6050 sensorMPU6050; - private LineChart mChartAcceleration; - private LineChart mChartGyroscope; - private long startTime; - private int flag; - private ArrayList entriesAx; - private ArrayList entriesAy; - private ArrayList entriesAz; - private ArrayList entriesGx; - private ArrayList entriesGy; - private ArrayList entriesGz; - private RelativeLayout sensorDock; - private CheckBox indefiniteSamplesCheckBox; - private EditText samplesEditBox; - private SeekBar timeGapSeekbar; - private TextView timeGapLabel; - private ImageButton playPauseButton; - private boolean play; - private boolean runIndefinitely; - private int timeGap; - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.sensor_mpu6050); - - Toolbar toolbar = findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - final ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setTitle(R.string.mpu6050); - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setDisplayShowHomeEnabled(true); - } - - sensorDock = findViewById(R.id.sensor_control_dock_layout); - indefiniteSamplesCheckBox = findViewById(R.id.checkBox_samples_sensor); - samplesEditBox = findViewById(R.id.editBox_samples_sensors); - timeGapSeekbar = findViewById(R.id.seekBar_timegap_sensor); - timeGapLabel = findViewById(R.id.tv_timegap_label); - playPauseButton = findViewById(R.id.imageButton_play_pause_sensor); - setSensorDock(); - sensorDock.setVisibility(View.VISIBLE); - - scienceLab = ScienceLabCommon.scienceLab; - I2C i2c = scienceLab.i2c; - try { - sensorMPU6050 = new MPU6050(i2c, scienceLab); - } catch (IOException e) { - e.printStackTrace(); - } - - entriesAx = new ArrayList<>(); - entriesAy = new ArrayList<>(); - entriesAz = new ArrayList<>(); - entriesGx = new ArrayList<>(); - entriesGy = new ArrayList<>(); - entriesGz = new ArrayList<>(); - - Runnable runnable = new Runnable() { - @Override - public void run() { - while (true) { - if (scienceLab.isConnected() && shouldPlay()) { - sensorDataFetch = new SensorMPU6050.SensorDataFetch(); - sensorDataFetch.execute(); - - if (flag == 0) { - startTime = System.currentTimeMillis(); - flag = 1; - } - - synchronized (lock) { - try { - lock.wait(); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - - try { - Thread.sleep(timeGap); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - } - } - }; - new Thread(runnable).start(); - - tvSensorMPU6050ax = findViewById(R.id.tv_sensor_mpu6050_ax); - tvSensorMPU6050ay = findViewById(R.id.tv_sensor_mpu6050_ay); - tvSensorMPU6050az = findViewById(R.id.tv_sensor_mpu6050_az); - tvSensorMPU6050gx = findViewById(R.id.tv_sensor_mpu6050_gx); - tvSensorMPU6050gy = findViewById(R.id.tv_sensor_mpu6050_gy); - tvSensorMPU6050gz = findViewById(R.id.tv_sensor_mpu6050_gz); - tvSensorMPU6050temp = findViewById(R.id.tv_sensor_mpu6050_temp); - - Spinner spinnerSensorMPU60501 = findViewById(R.id.spinner_sensor_mpu6050_1); - Spinner spinnerSensorMPU60502 = findViewById(R.id.spinner_sensor_mpu6050_2); - Spinner spinnerSensorMPU60503 = findViewById(R.id.spinner_sensor_mpu6050_3); - Spinner spinnerSensorMPU60504 = findViewById(R.id.spinner_sensor_mpu6050_4); - - mChartAcceleration = findViewById(R.id.chart_sensor_mpu6050_accelerometer); - mChartGyroscope = findViewById(R.id.chart_sensor_mpu6050_gyroscope); - - XAxis xAccelerometer = mChartAcceleration.getXAxis(); - YAxis yAccelerometer = mChartAcceleration.getAxisLeft(); - YAxis yAccelerometer2 = mChartAcceleration.getAxisRight(); - - XAxis xGyroscope = mChartGyroscope.getXAxis(); - YAxis yGyroscope = mChartGyroscope.getAxisLeft(); - YAxis yGyroscope2 = mChartGyroscope.getAxisRight(); - - mChartAcceleration.setTouchEnabled(true); - mChartAcceleration.setHighlightPerDragEnabled(true); - mChartAcceleration.setDragEnabled(true); - mChartAcceleration.setScaleEnabled(true); - mChartAcceleration.setDrawGridBackground(false); - mChartAcceleration.setPinchZoom(true); - mChartAcceleration.setScaleYEnabled(false); - mChartAcceleration.setBackgroundColor(Color.BLACK); - mChartAcceleration.getDescription().setEnabled(false); - - LineData data = new LineData(); - data.setValueTextColor(Color.WHITE); - mChartAcceleration.setData(data); - - Legend l = mChartAcceleration.getLegend(); - l.setForm(Legend.LegendForm.LINE); - l.setTextColor(Color.WHITE); - - xAccelerometer.setTextColor(Color.WHITE); - xAccelerometer.setDrawGridLines(true); - xAccelerometer.setAvoidFirstLastClipping(true); - - yAccelerometer.setTextColor(Color.WHITE); - yAccelerometer.setAxisMaximum(25f); - yAccelerometer.setAxisMinimum(-25f); - yAccelerometer.setDrawGridLines(true); - yAccelerometer.setLabelCount(10); - - yAccelerometer2.setDrawGridLines(false); - - mChartGyroscope.setTouchEnabled(true); - mChartGyroscope.setHighlightPerDragEnabled(true); - mChartGyroscope.setDragEnabled(true); - mChartGyroscope.setScaleEnabled(true); - mChartGyroscope.setDrawGridBackground(false); - mChartGyroscope.setPinchZoom(true); - mChartGyroscope.setScaleYEnabled(false); - mChartGyroscope.setBackgroundColor(Color.BLACK); - mChartGyroscope.getDescription().setEnabled(false); - - LineData data2 = new LineData(); - data.setValueTextColor(Color.WHITE); - mChartGyroscope.setData(data2); - - Legend l2 = mChartGyroscope.getLegend(); - l2.setForm(Legend.LegendForm.LINE); - l2.setTextColor(Color.WHITE); - - xGyroscope.setTextColor(Color.WHITE); - xGyroscope.setDrawGridLines(true); - xGyroscope.setAvoidFirstLastClipping(true); - - yGyroscope.setTextColor(Color.WHITE); - yGyroscope.setAxisMaximum(200f); - yGyroscope.setAxisMinimum(-200f); - yGyroscope.setDrawGridLines(true); - yGyroscope.setLabelCount(10); - - yGyroscope2.setDrawGridLines(false); - - try { - if (sensorMPU6050 != null && scienceLab.isConnected()) { - sensorMPU6050.setAccelerationRange(Integer.parseInt(spinnerSensorMPU60502.getSelectedItem().toString())); - } - } catch (IOException e) { - e.printStackTrace(); - } - - try { - if (sensorMPU6050 != null && scienceLab.isConnected()) { - sensorMPU6050.setGyroRange(Integer.parseInt(spinnerSensorMPU60501.getSelectedItem().toString())); - } - } catch (IOException e) { - e.printStackTrace(); - } - - } - - private boolean shouldPlay() { - if (play && scienceLab.isConnected()) { - if (indefiniteSamplesCheckBox.isChecked()) - return true; - else if (counter >= 0) { - counter--; - return true; - } else { - play = false; - return false; - } - } else { - return false; - } - } - - private void setSensorDock() { - play = false; - runIndefinitely = true; - timeGap = 100; - final int step = 1; - final int max = 1000; - final int min = 100; - - playPauseButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (play && scienceLab.isConnected()) { - playPauseButton.setImageResource(R.drawable.circle_play_button); - play = false; - } else if (!scienceLab.isConnected()) { - playPauseButton.setImageResource(R.drawable.circle_play_button); - play = false; - } else { - playPauseButton.setImageResource(R.drawable.circle_pause_button); - play = true; - if (!indefiniteSamplesCheckBox.isChecked()) { - counter = Integer.parseInt(samplesEditBox.getText().toString()); - } - } - } - }); - sensorDock.setVisibility(View.VISIBLE); - - indefiniteSamplesCheckBox.setChecked(true); - samplesEditBox.setEnabled(false); - indefiniteSamplesCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - if (isChecked) { - runIndefinitely = true; - samplesEditBox.setEnabled(false); - } else { - runIndefinitely = false; - samplesEditBox.setEnabled(true); - } - } - }); - - timeGapSeekbar.setMax((max - min) / step); - timeGapSeekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { - @Override - public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { - timeGap = min + (progress * step); - timeGapLabel.setText(timeGap + "ms"); - } - - @Override - public void onStartTrackingTouch(SeekBar seekBar) { - - } - - @Override - public void onStopTrackingTouch(SeekBar seekBar) { - - } - }); - } - - private class SensorDataFetch extends AsyncTask { - - private ArrayList dataMPU6050 = new ArrayList<>(); - private long timeElapsed; - - @Override - protected Void doInBackground(Void... params) { - - try { - dataMPU6050 = sensorMPU6050.getRaw(); - } catch (IOException e) { - e.printStackTrace(); - } - - timeElapsed = (System.currentTimeMillis() - startTime) / 1000; - - entriesAx.add(new Entry((float) timeElapsed, dataMPU6050.get(0).floatValue())); - entriesAy.add(new Entry((float) timeElapsed, dataMPU6050.get(1).floatValue())); - entriesAz.add(new Entry((float) timeElapsed, dataMPU6050.get(2).floatValue())); - - entriesGx.add(new Entry((float) timeElapsed, dataMPU6050.get(4).floatValue())); - entriesGy.add(new Entry((float) timeElapsed, dataMPU6050.get(5).floatValue())); - entriesGz.add(new Entry((float) timeElapsed, dataMPU6050.get(6).floatValue())); - - return null; - } - - protected void onPostExecute(Void aVoid) { - super.onPostExecute(aVoid); - tvSensorMPU6050ax.setText(DataFormatter.formatDouble(dataMPU6050.get(0), DataFormatter.HIGH_PRECISION_FORMAT)); - tvSensorMPU6050ay.setText(DataFormatter.formatDouble(dataMPU6050.get(1), DataFormatter.HIGH_PRECISION_FORMAT)); - tvSensorMPU6050az.setText(DataFormatter.formatDouble(dataMPU6050.get(2), DataFormatter.HIGH_PRECISION_FORMAT)); - tvSensorMPU6050gx.setText(DataFormatter.formatDouble(dataMPU6050.get(4), DataFormatter.HIGH_PRECISION_FORMAT)); - tvSensorMPU6050gy.setText(DataFormatter.formatDouble(dataMPU6050.get(5), DataFormatter.HIGH_PRECISION_FORMAT)); - tvSensorMPU6050gz.setText(DataFormatter.formatDouble(dataMPU6050.get(6), DataFormatter.HIGH_PRECISION_FORMAT)); - tvSensorMPU6050temp.setText(DataFormatter.formatDouble(dataMPU6050.get(3), DataFormatter.HIGH_PRECISION_FORMAT)); - - LineDataSet dataset1 = new LineDataSet(entriesAx, getString(R.string.ax)); - LineDataSet dataSet2 = new LineDataSet(entriesAy, getString(R.string.ay)); - LineDataSet dataSet3 = new LineDataSet(entriesAz, getString(R.string.az)); - - LineDataSet dataset4 = new LineDataSet(entriesGx, getString(R.string.gx)); - LineDataSet dataSet5 = new LineDataSet(entriesGy, getString(R.string.gy)); - LineDataSet dataSet6 = new LineDataSet(entriesGz, getString(R.string.gz)); - - - dataset1.setColor(Color.BLUE); - dataSet2.setColor(Color.GREEN); - dataSet3.setColor(Color.RED); - - dataset4.setColor(Color.BLUE); - dataSet5.setColor(Color.GREEN); - dataSet6.setColor(Color.RED); - - List dataSets = new ArrayList<>(); - dataSets.add(dataset1); - dataSets.add(dataSet2); - dataSets.add(dataSet3); - - List dataSets2 = new ArrayList<>(); - dataSets2.add(dataset4); - dataSets2.add(dataSet5); - dataSets2.add(dataSet6); - - LineData data = new LineData(dataSets); - mChartAcceleration.setData(data); - mChartAcceleration.notifyDataSetChanged(); - mChartAcceleration.setVisibleXRangeMaximum(10); - mChartAcceleration.moveViewToX(data.getEntryCount()); - mChartAcceleration.invalidate(); - - LineData data2 = new LineData(dataSets2); - mChartGyroscope.setData(data2); - mChartGyroscope.notifyDataSetChanged(); - mChartGyroscope.setVisibleXRangeMaximum(10); - mChartGyroscope.moveViewToX(data2.getEntryCount()); - mChartGyroscope.invalidate(); - samplesEditBox.setText(String.valueOf(counter)); - if (counter == 0 && !runIndefinitely) { - play = false; - playPauseButton.setImageResource(R.drawable.circle_play_button); - } - synchronized (lock) { - lock.notify(); - } - } - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - if (item.getItemId() == android.R.id.home) { - finish(); - } - return true; - } -} diff --git a/app/src/main/java/io/pslab/sensors/SensorMPU925X.java b/app/src/main/java/io/pslab/sensors/SensorMPU925X.java deleted file mode 100644 index 8a81203d4..000000000 --- a/app/src/main/java/io/pslab/sensors/SensorMPU925X.java +++ /dev/null @@ -1,428 +0,0 @@ -package io.pslab.sensors; - -import android.graphics.Color; -import android.os.AsyncTask; -import android.os.Bundle; -import android.view.MenuItem; -import android.view.View; -import android.widget.CheckBox; -import android.widget.CompoundButton; -import android.widget.EditText; -import android.widget.ImageButton; -import android.widget.RelativeLayout; -import android.widget.SeekBar; -import android.widget.Spinner; -import android.widget.TextView; - -import androidx.appcompat.app.ActionBar; -import androidx.appcompat.app.AppCompatActivity; -import androidx.appcompat.widget.Toolbar; - -import com.github.mikephil.charting.charts.LineChart; -import com.github.mikephil.charting.components.Legend; -import com.github.mikephil.charting.components.XAxis; -import com.github.mikephil.charting.components.YAxis; -import com.github.mikephil.charting.data.Entry; -import com.github.mikephil.charting.data.LineData; -import com.github.mikephil.charting.data.LineDataSet; -import com.github.mikephil.charting.interfaces.datasets.ILineDataSet; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; - -import io.pslab.DataFormatter; -import io.pslab.R; -import io.pslab.communication.ScienceLab; -import io.pslab.communication.peripherals.I2C; -import io.pslab.communication.sensors.MPU925x; -import io.pslab.others.ScienceLabCommon; - -/** - * Created by Harsh on 6/6/18. - */ - -public class SensorMPU925X extends AppCompatActivity { - private static int counter; - private final Object lock = new Object(); - private ScienceLab scienceLab; - private SensorMPU925X.SensorDataFetch sensorDataFetch; - private TextView tvSensorMPU925Xax; - private TextView tvSensorMPU925Xay; - private TextView tvSensorMPU925Xaz; - private TextView tvSensorMPU925Xgx; - private TextView tvSensorMPU925Xgy; - private TextView tvSensorMPU925Xgz; - private TextView tvSensorMPU925Xtemp; - private MPU925x sensorMPU925X; - private LineChart mChartAcceleration; - private LineChart mChartGyroscope; - private long startTime; - private int flag; - private ArrayList entriesax; - private ArrayList entriesay; - private ArrayList entriesaz; - private ArrayList entriesgx; - private ArrayList entriesgy; - private ArrayList entriesgz; - private RelativeLayout sensorDock; - private CheckBox indefiniteSamplesCheckBox; - private EditText samplesEditBox; - private SeekBar timeGapSeekbar; - private TextView timeGapLabel; - private ImageButton playPauseButton; - private boolean play; - private boolean runIndefinitely; - private int timeGap; - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.sensor_mpu925x); - - Toolbar toolbar = findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - final ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setTitle(R.string.mpu925x); - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setDisplayShowHomeEnabled(true); - } - - sensorDock = findViewById(R.id.sensor_control_dock_layout); - indefiniteSamplesCheckBox = findViewById(R.id.checkBox_samples_sensor); - samplesEditBox = findViewById(R.id.editBox_samples_sensors); - timeGapSeekbar = findViewById(R.id.seekBar_timegap_sensor); - timeGapLabel = findViewById(R.id.tv_timegap_label); - playPauseButton = findViewById(R.id.imageButton_play_pause_sensor); - setSensorDock(); - sensorDock.setVisibility(View.VISIBLE); - - scienceLab = ScienceLabCommon.scienceLab; - I2C i2c = scienceLab.i2c; - try { - if (i2c == null) throw new IOException("i2c not found"); - sensorMPU925X = new MPU925x(i2c); - } catch (IOException e) { - e.printStackTrace(); - } - - entriesax = new ArrayList<>(); - entriesay = new ArrayList<>(); - entriesaz = new ArrayList<>(); - entriesgx = new ArrayList<>(); - entriesgy = new ArrayList<>(); - entriesgz = new ArrayList<>(); - - Runnable runnable = new Runnable() { - @Override - public void run() { - while (true) { - if (scienceLab.isConnected() && shouldPlay()) { - sensorDataFetch = new SensorMPU925X.SensorDataFetch(); - sensorDataFetch.execute(); - - if (flag == 0) { - startTime = System.currentTimeMillis(); - flag = 1; - } - - synchronized (lock) { - try { - lock.wait(); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - - try { - Thread.sleep(timeGap); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - } - } - }; - new Thread(runnable).start(); - - tvSensorMPU925Xax = findViewById(R.id.tv_sensor_mpu925x_ax); - tvSensorMPU925Xay = findViewById(R.id.tv_sensor_mpu925x_ay); - tvSensorMPU925Xaz = findViewById(R.id.tv_sensor_mpu925x_az); - tvSensorMPU925Xgx = findViewById(R.id.tv_sensor_mpu925x_gx); - tvSensorMPU925Xgy = findViewById(R.id.tv_sensor_mpu925x_gy); - tvSensorMPU925Xgz = findViewById(R.id.tv_sensor_mpu925x_gz); - tvSensorMPU925Xtemp = findViewById(R.id.tv_sensor_mpu925x_temp); - - Spinner spinnerSensorMPU925X1 = findViewById(R.id.spinner_sensor_mpu925x_1); - Spinner spinnerSensorMPU925X2 = findViewById(R.id.spinner_sensor_mpu925x_2); - Spinner spinnerSensorMPU925X3 = findViewById(R.id.spinner_sensor_mpu925x_3); - Spinner spinnerSensorMPU925X4 = findViewById(R.id.spinner_sensor_mpu925x_4); - - mChartAcceleration = findViewById(R.id.chart_sensor_mpu925x_accelerometer); - mChartGyroscope = findViewById(R.id.chart_sensor_mpu925x_gyroscope); - - XAxis xAccelerometer = mChartAcceleration.getXAxis(); - YAxis yAccelerometer = mChartAcceleration.getAxisLeft(); - YAxis yAccelerometer2 = mChartAcceleration.getAxisRight(); - - XAxis xGyroscope = mChartGyroscope.getXAxis(); - YAxis yGyroscope = mChartGyroscope.getAxisLeft(); - YAxis yGyroscope2 = mChartGyroscope.getAxisRight(); - - mChartAcceleration.setTouchEnabled(true); - mChartAcceleration.setHighlightPerDragEnabled(true); - mChartAcceleration.setDragEnabled(true); - mChartAcceleration.setScaleEnabled(true); - mChartAcceleration.setDrawGridBackground(false); - mChartAcceleration.setPinchZoom(true); - mChartAcceleration.setScaleYEnabled(false); - mChartAcceleration.setBackgroundColor(Color.BLACK); - mChartAcceleration.getDescription().setEnabled(false); - - LineData data = new LineData(); - data.setValueTextColor(Color.WHITE); - mChartAcceleration.setData(data); - - Legend l = mChartAcceleration.getLegend(); - l.setForm(Legend.LegendForm.LINE); - l.setTextColor(Color.WHITE); - - xAccelerometer.setTextColor(Color.WHITE); - xAccelerometer.setDrawGridLines(true); - xAccelerometer.setAvoidFirstLastClipping(true); - - yAccelerometer.setTextColor(Color.WHITE); - yAccelerometer.setAxisMaximum(25f); - yAccelerometer.setAxisMinimum(-25f); - yAccelerometer.setDrawGridLines(true); - yAccelerometer.setLabelCount(10); - - yAccelerometer2.setDrawGridLines(false); - - mChartGyroscope.setTouchEnabled(true); - mChartGyroscope.setHighlightPerDragEnabled(true); - mChartGyroscope.setDragEnabled(true); - mChartGyroscope.setScaleEnabled(true); - mChartGyroscope.setDrawGridBackground(false); - mChartGyroscope.setPinchZoom(true); - mChartGyroscope.setScaleYEnabled(false); - mChartGyroscope.setBackgroundColor(Color.BLACK); - mChartGyroscope.getDescription().setEnabled(false); - - LineData data2 = new LineData(); - data.setValueTextColor(Color.WHITE); - mChartGyroscope.setData(data2); - - Legend l2 = mChartGyroscope.getLegend(); - l2.setForm(Legend.LegendForm.LINE); - l2.setTextColor(Color.WHITE); - - xGyroscope.setTextColor(Color.WHITE); - xGyroscope.setDrawGridLines(true); - xGyroscope.setAvoidFirstLastClipping(true); - - yGyroscope.setTextColor(Color.WHITE); - yGyroscope.setAxisMaximum(200f); - yGyroscope.setAxisMinimum(-200f); - yGyroscope.setDrawGridLines(true); - yGyroscope.setLabelCount(10); - - yGyroscope2.setDrawGridLines(false); - - try { - if (sensorMPU925X != null) { - sensorMPU925X.setAccelRange(Integer.parseInt(spinnerSensorMPU925X2.getSelectedItem().toString())); - } - } catch (IOException e) { - e.printStackTrace(); - } - - try { - if (sensorMPU925X != null) { - sensorMPU925X.setGyroRange(Integer.parseInt(spinnerSensorMPU925X1.getSelectedItem().toString())); - } - } catch (IOException e) { - e.printStackTrace(); - } - - } - - private boolean shouldPlay() { - if (play) { - if (indefiniteSamplesCheckBox.isChecked()) - return true; - else if (counter >= 0) { - counter--; - return true; - } else { - play = false; - return false; - } - } else { - return false; - } - } - - private void setSensorDock() { - play = false; - runIndefinitely = true; - timeGap = 100; - final int step = 1; - final int max = 1000; - final int min = 100; - - playPauseButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (play && scienceLab.isConnected()) { - playPauseButton.setImageResource(R.drawable.circle_play_button); - play = false; - } else if (!scienceLab.isConnected()) { - playPauseButton.setImageResource(R.drawable.circle_play_button); - play = false; - } else { - playPauseButton.setImageResource(R.drawable.circle_pause_button); - play = true; - if (!indefiniteSamplesCheckBox.isChecked()) { - counter = Integer.parseInt(samplesEditBox.getText().toString()); - } - } - } - }); - sensorDock.setVisibility(View.VISIBLE); - - indefiniteSamplesCheckBox.setChecked(true); - samplesEditBox.setEnabled(false); - indefiniteSamplesCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - if (isChecked) { - runIndefinitely = true; - samplesEditBox.setEnabled(false); - } else { - runIndefinitely = false; - samplesEditBox.setEnabled(true); - } - } - }); - - timeGapSeekbar.setMax((max - min) / step); - timeGapSeekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { - @Override - public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { - timeGap = min + (progress * step); - timeGapLabel.setText(timeGap + "ms"); - } - - @Override - public void onStartTrackingTouch(SeekBar seekBar) { - - } - - @Override - public void onStopTrackingTouch(SeekBar seekBar) { - - } - }); - } - - private class SensorDataFetch extends AsyncTask { - - private double[] dataGyro, dataAccel; - private double dataTemp; - private long timeElapsed; - - @Override - protected Void doInBackground(Void... params) { - - try { - dataGyro = sensorMPU925X.getGyroscope(); - dataAccel = sensorMPU925X.getAcceleration(); - dataTemp = sensorMPU925X.getTemperature(); - } catch (IOException e) { - e.printStackTrace(); - } - - timeElapsed = (System.currentTimeMillis() - startTime) / 1000; - - entriesax.add(new Entry((float) timeElapsed, (float) dataAccel[0])); - entriesay.add(new Entry((float) timeElapsed, (float) dataAccel[1])); - entriesaz.add(new Entry((float) timeElapsed, (float) dataAccel[2])); - - entriesgx.add(new Entry((float) timeElapsed, (float) dataGyro[0])); - entriesgy.add(new Entry((float) timeElapsed, (float) dataGyro[1])); - entriesgz.add(new Entry((float) timeElapsed, (float) dataGyro[2])); - - return null; - } - - protected void onPostExecute(Void aVoid) { - super.onPostExecute(aVoid); - tvSensorMPU925Xax.setText(DataFormatter.formatDouble(dataAccel[0], DataFormatter.HIGH_PRECISION_FORMAT)); - tvSensorMPU925Xay.setText(DataFormatter.formatDouble(dataAccel[1], DataFormatter.HIGH_PRECISION_FORMAT)); - tvSensorMPU925Xaz.setText(DataFormatter.formatDouble(dataAccel[2], DataFormatter.HIGH_PRECISION_FORMAT)); - tvSensorMPU925Xgx.setText(DataFormatter.formatDouble(dataGyro[0], DataFormatter.HIGH_PRECISION_FORMAT)); - tvSensorMPU925Xgy.setText(DataFormatter.formatDouble(dataGyro[1], DataFormatter.HIGH_PRECISION_FORMAT)); - tvSensorMPU925Xgz.setText(DataFormatter.formatDouble(dataGyro[2], DataFormatter.HIGH_PRECISION_FORMAT)); - tvSensorMPU925Xtemp.setText(DataFormatter.formatDouble(dataTemp, DataFormatter.HIGH_PRECISION_FORMAT)); - LineDataSet dataSet1 = new LineDataSet(entriesax, getString(R.string.ax)); - LineDataSet dataSet2 = new LineDataSet(entriesay, getString(R.string.ay)); - LineDataSet dataSet3 = new LineDataSet(entriesaz, getString(R.string.az)); - - LineDataSet dataSet4 = new LineDataSet(entriesgx, getString(R.string.gx)); - LineDataSet dataSet5 = new LineDataSet(entriesgy, getString(R.string.gy)); - LineDataSet dataSet6 = new LineDataSet(entriesgz, getString(R.string.gz)); - - - dataSet1.setColor(Color.BLUE); - dataSet2.setColor(Color.GREEN); - dataSet3.setColor(Color.RED); - - dataSet4.setColor(Color.BLUE); - dataSet5.setColor(Color.GREEN); - dataSet6.setColor(Color.RED); - - List dataSets = new ArrayList<>(); - dataSets.add(dataSet1); - dataSets.add(dataSet2); - dataSets.add(dataSet3); - - List dataSets2 = new ArrayList<>(); - dataSets2.add(dataSet4); - dataSets2.add(dataSet5); - dataSets2.add(dataSet6); - - LineData data = new LineData(dataSets); - mChartAcceleration.setData(data); - mChartAcceleration.notifyDataSetChanged(); - mChartAcceleration.setVisibleXRangeMaximum(10); - mChartAcceleration.moveViewToX(data.getEntryCount()); - mChartAcceleration.invalidate(); - - LineData data2 = new LineData(dataSets2); - mChartGyroscope.setData(data2); - mChartGyroscope.notifyDataSetChanged(); - mChartGyroscope.setVisibleXRangeMaximum(10); - mChartGyroscope.moveViewToX(data2.getEntryCount()); - mChartGyroscope.invalidate(); - samplesEditBox.setText(String.valueOf(counter)); - if (counter == 0 && !runIndefinitely) { - play = false; - playPauseButton.setImageResource(R.drawable.circle_play_button); - } - synchronized (lock) { - lock.notify(); - } - } - } - - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - if (item.getItemId() == android.R.id.home) { - finish(); - } - return true; - } -} diff --git a/app/src/main/java/io/pslab/sensors/SensorSHT21.java b/app/src/main/java/io/pslab/sensors/SensorSHT21.java deleted file mode 100644 index 9b4448c82..000000000 --- a/app/src/main/java/io/pslab/sensors/SensorSHT21.java +++ /dev/null @@ -1,352 +0,0 @@ -package io.pslab.sensors; - -import android.graphics.Color; -import android.os.AsyncTask; -import android.os.Bundle; -import android.view.MenuItem; -import android.view.View; -import android.widget.CheckBox; -import android.widget.CompoundButton; -import android.widget.EditText; -import android.widget.ImageButton; -import android.widget.RelativeLayout; -import android.widget.SeekBar; -import android.widget.TextView; - -import androidx.appcompat.app.ActionBar; -import androidx.appcompat.app.AppCompatActivity; -import androidx.appcompat.widget.Toolbar; - -import com.github.mikephil.charting.charts.LineChart; -import com.github.mikephil.charting.components.Legend; -import com.github.mikephil.charting.components.XAxis; -import com.github.mikephil.charting.components.YAxis; -import com.github.mikephil.charting.data.Entry; -import com.github.mikephil.charting.data.LineData; -import com.github.mikephil.charting.data.LineDataSet; - -import java.io.IOException; -import java.util.ArrayList; - -import io.pslab.DataFormatter; -import io.pslab.R; -import io.pslab.communication.ScienceLab; -import io.pslab.communication.peripherals.I2C; -import io.pslab.communication.sensors.SHT21; -import io.pslab.others.ScienceLabCommon; - -/** - * Created by Harsh on 6/6/18. - */ - -public class SensorSHT21 extends AppCompatActivity { - private static int counter; - private final Object lock = new Object(); - private ScienceLab scienceLab; - private SensorSHT21.SensorDataFetch sensorDataFetch; - private TextView tvSensorSHT21Temp; - private TextView tvSensorSHT21Humidity; - private SHT21 sensorSHT21; - private LineChart mChartTemperature; - private LineChart mChartHumidity; - private long startTime; - private int flag; - private ArrayList entriesTemperature; - private ArrayList entriesHumidity; - private RelativeLayout sensorDock; - private CheckBox indefiniteSamplesCheckBox; - private EditText samplesEditBox; - private SeekBar timeGapSeekbar; - private TextView timeGapLabel; - private ImageButton playPauseButton; - private boolean play; - private boolean runIndefinitely; - private int timeGap; - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.sensor_sht21); - - Toolbar toolbar = findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - final ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setTitle(R.string.sht21); - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setDisplayShowHomeEnabled(true); - } - - sensorDock = findViewById(R.id.sensor_control_dock_layout); - indefiniteSamplesCheckBox = findViewById(R.id.checkBox_samples_sensor); - samplesEditBox = findViewById(R.id.editBox_samples_sensors); - timeGapSeekbar = findViewById(R.id.seekBar_timegap_sensor); - timeGapLabel = findViewById(R.id.tv_timegap_label); - playPauseButton = findViewById(R.id.imageButton_play_pause_sensor); - setSensorDock(); - sensorDock.setVisibility(View.VISIBLE); - - scienceLab = ScienceLabCommon.scienceLab; - I2C i2c = scienceLab.i2c; - try { - sensorSHT21 = new SHT21(i2c, scienceLab); - } catch (IOException | InterruptedException e) { - e.printStackTrace(); - } - - entriesTemperature = new ArrayList<>(); - entriesHumidity = new ArrayList<>(); - - Runnable runnable = new Runnable() { - @Override - public void run() { - while (true) { - if (scienceLab.isConnected() && shouldPlay()) { - sensorDataFetch = new SensorSHT21.SensorDataFetch(); - sensorDataFetch.execute(); - - if (flag == 0) { - startTime = System.currentTimeMillis(); - flag = 1; - } - - synchronized (lock) { - try { - lock.wait(); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - - try { - Thread.sleep(timeGap); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - } - } - }; - new Thread(runnable).start(); - - tvSensorSHT21Temp = findViewById(R.id.tv_sensor_sht21_temp); - tvSensorSHT21Humidity = findViewById(R.id.tv_sensor_sht21_humidity); - mChartTemperature = findViewById(R.id.chart_temperature_sht21); - mChartHumidity = findViewById(R.id.chart_humidity_sht21); - - XAxis xTemperature = mChartTemperature.getXAxis(); - YAxis yTemperature = mChartTemperature.getAxisLeft(); - YAxis yTemperature2 = mChartTemperature.getAxisRight(); - - XAxis xHumidity = mChartHumidity.getXAxis(); - YAxis yHumidity = mChartHumidity.getAxisLeft(); - YAxis yHumidity2 = mChartHumidity.getAxisRight(); - - mChartTemperature.setTouchEnabled(true); - mChartTemperature.setHighlightPerDragEnabled(true); - mChartTemperature.setDragEnabled(true); - mChartTemperature.setScaleEnabled(true); - mChartTemperature.setDrawGridBackground(false); - mChartTemperature.setPinchZoom(true); - mChartTemperature.setScaleYEnabled(false); - mChartTemperature.setBackgroundColor(Color.BLACK); - mChartTemperature.getDescription().setEnabled(false); - - LineData data = new LineData(); - data.setValueTextColor(Color.WHITE); - mChartTemperature.setData(data); - - Legend l = mChartTemperature.getLegend(); - l.setForm(Legend.LegendForm.LINE); - l.setTextColor(Color.WHITE); - - xTemperature.setTextColor(Color.WHITE); - xTemperature.setDrawGridLines(true); - xTemperature.setAvoidFirstLastClipping(true); - - yTemperature.setTextColor(Color.WHITE); - yTemperature.setAxisMaximum(125f); - yTemperature.setAxisMinimum(-40f); - yTemperature.setDrawGridLines(true); - yTemperature.setLabelCount(10); - - yTemperature2.setDrawGridLines(false); - - mChartHumidity.setTouchEnabled(true); - mChartHumidity.setHighlightPerDragEnabled(true); - mChartHumidity.setDragEnabled(true); - mChartHumidity.setScaleEnabled(true); - mChartHumidity.setDrawGridBackground(false); - mChartHumidity.setPinchZoom(true); - mChartHumidity.setScaleYEnabled(false); - mChartHumidity.setBackgroundColor(Color.BLACK); - mChartHumidity.getDescription().setEnabled(false); - - LineData data2 = new LineData(); - data.setValueTextColor(Color.WHITE); - mChartHumidity.setData(data2); - - Legend l2 = mChartHumidity.getLegend(); - l2.setForm(Legend.LegendForm.LINE); - l2.setTextColor(Color.WHITE); - - xHumidity.setTextColor(Color.WHITE); - xHumidity.setDrawGridLines(true); - xHumidity.setAvoidFirstLastClipping(true); - - yHumidity.setTextColor(Color.WHITE); - yHumidity.setAxisMaximum(100f); - yHumidity.setAxisMinimum(0f); - yHumidity.setDrawGridLines(true); - yHumidity.setLabelCount(10); - - yHumidity2.setDrawGridLines(false); - - } - - private boolean shouldPlay() { - if (play) { - if (indefiniteSamplesCheckBox.isChecked()) - return true; - else if (counter >= 0) { - counter--; - return true; - } else { - play = false; - return false; - } - } else { - return false; - } - } - - private void setSensorDock() { - play = false; - runIndefinitely = true; - timeGap = 100; - final int step = 1; - final int max = 1000; - final int min = 100; - - playPauseButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (play && scienceLab.isConnected()) { - playPauseButton.setImageResource(R.drawable.circle_play_button); - play = false; - } else if (!scienceLab.isConnected()) { - playPauseButton.setImageResource(R.drawable.circle_play_button); - play = false; - } else { - playPauseButton.setImageResource(R.drawable.circle_pause_button); - play = true; - if (!indefiniteSamplesCheckBox.isChecked()) { - counter = Integer.parseInt(samplesEditBox.getText().toString()); - } - } - } - }); - sensorDock.setVisibility(View.VISIBLE); - - indefiniteSamplesCheckBox.setChecked(true); - samplesEditBox.setEnabled(false); - indefiniteSamplesCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - if (isChecked) { - runIndefinitely = true; - samplesEditBox.setEnabled(false); - } else { - runIndefinitely = false; - samplesEditBox.setEnabled(true); - } - } - }); - - timeGapSeekbar.setMax((max - min) / step); - timeGapSeekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { - @Override - public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { - timeGap = min + (progress * step); - timeGapLabel.setText(timeGap + "ms"); - } - - @Override - public void onStartTrackingTouch(SeekBar seekBar) { - - } - - @Override - public void onStopTrackingTouch(SeekBar seekBar) { - - } - }); - } - - private class SensorDataFetch extends AsyncTask { - - private ArrayList dataSHT21Temp = new ArrayList<>(); - private ArrayList dataSHT21Humidity = new ArrayList<>(); - private long timeElapsed; - - @Override - protected Void doInBackground(Void... params) { - try { - if (sensorSHT21 != null) { - sensorSHT21.selectParameter("temperature"); - dataSHT21Temp = sensorSHT21.getRaw(); - sensorSHT21.selectParameter("humidity"); - dataSHT21Humidity = sensorSHT21.getRaw(); - } - } catch (IOException | InterruptedException e) { - e.printStackTrace(); - } - timeElapsed = (System.currentTimeMillis() - startTime) / 1000; - entriesTemperature.add(new Entry((float) timeElapsed, dataSHT21Temp.get(0).floatValue())); - entriesTemperature.add(new Entry((float) timeElapsed, dataSHT21Humidity.get(0).floatValue())); - return null; - } - - protected void onPostExecute(Void aVoid) { - super.onPostExecute(aVoid); - tvSensorSHT21Temp.setText(DataFormatter.formatDouble(dataSHT21Temp.get(0), DataFormatter.HIGH_PRECISION_FORMAT)); - tvSensorSHT21Humidity.setText(DataFormatter.formatDouble(dataSHT21Humidity.get(0), DataFormatter.HIGH_PRECISION_FORMAT)); - - LineDataSet dataSet1 = new LineDataSet(entriesTemperature, getString(R.string.temperature)); - LineDataSet dataSet2 = new LineDataSet(entriesHumidity, getString(R.string.humidity)); - - dataSet1.setDrawCircles(true); - dataSet2.setDrawCircles(true); - - LineData data = new LineData(dataSet1); - mChartTemperature.setData(data); - mChartTemperature.notifyDataSetChanged(); - mChartTemperature.setVisibleXRangeMaximum(10); - mChartTemperature.moveViewToX(data.getEntryCount()); - mChartTemperature.invalidate(); - - LineData data2 = new LineData(dataSet2); - mChartHumidity.setData(data2); - mChartHumidity.notifyDataSetChanged(); - mChartHumidity.setVisibleXRangeMaximum(10); - mChartHumidity.moveViewToX(data2.getEntryCount()); - mChartHumidity.invalidate(); - samplesEditBox.setText(String.valueOf(counter)); - if (counter == 0 && !runIndefinitely) { - play = false; - playPauseButton.setImageResource(R.drawable.circle_play_button); - } - synchronized (lock) { - lock.notify(); - } - } - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - if (item.getItemId() == android.R.id.home) { - finish(); - } - return true; - } -} diff --git a/app/src/main/java/io/pslab/sensors/SensorTSL2561.java b/app/src/main/java/io/pslab/sensors/SensorTSL2561.java deleted file mode 100644 index 805d566cf..000000000 --- a/app/src/main/java/io/pslab/sensors/SensorTSL2561.java +++ /dev/null @@ -1,341 +0,0 @@ -package io.pslab.sensors; - -import android.graphics.Color; -import android.os.AsyncTask; -import android.os.Bundle; -import android.view.MenuItem; -import android.view.View; -import android.widget.CheckBox; -import android.widget.CompoundButton; -import android.widget.EditText; -import android.widget.ImageButton; -import android.widget.RelativeLayout; -import android.widget.SeekBar; -import android.widget.Spinner; -import android.widget.TextView; - -import androidx.appcompat.app.ActionBar; -import androidx.appcompat.app.AppCompatActivity; -import androidx.appcompat.widget.Toolbar; - -import com.github.mikephil.charting.charts.LineChart; -import com.github.mikephil.charting.components.Legend; -import com.github.mikephil.charting.components.XAxis; -import com.github.mikephil.charting.components.YAxis; -import com.github.mikephil.charting.data.Entry; -import com.github.mikephil.charting.data.LineData; -import com.github.mikephil.charting.data.LineDataSet; -import com.github.mikephil.charting.interfaces.datasets.ILineDataSet; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; - -import io.pslab.R; -import io.pslab.communication.ScienceLab; -import io.pslab.communication.peripherals.I2C; -import io.pslab.communication.sensors.TSL2561; -import io.pslab.others.ScienceLabCommon; - -/** - * Created by Harsh on 6/6/18. - */ - -public class SensorTSL2561 extends AppCompatActivity { - private static int counter; - private final Object lock = new Object(); - private ScienceLab scienceLab; - private SensorTSL2561.SensorDataFetch sensorDataFetch; - private TextView tvSensorTSL2561FullSpectrum; - private TextView tvSensorTSL2561Infrared; - private TextView tvSensorTSL2561Visible; - private EditText etSensorTSL2561Timing; - private TSL2561 sensorTSL2561; - private LineChart mChart; - private long startTime; - private int flag; - private ArrayList entriesFull; - private ArrayList entriesInfrared; - private ArrayList entriesVisible; - private RelativeLayout sensorDock; - private CheckBox indefiniteSamplesCheckBox; - private EditText samplesEditBox; - private SeekBar timeGapSeekbar; - private TextView timeGapLabel; - private ImageButton playPauseButton; - private boolean play; - private boolean runIndefinitely; - private int timeGap; - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.sensor_tsl2561); - - Toolbar toolbar = findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - final ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setTitle(R.string.tsl2561); - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setDisplayShowHomeEnabled(true); - } - - sensorDock = findViewById(R.id.sensor_control_dock_layout); - indefiniteSamplesCheckBox = findViewById(R.id.checkBox_samples_sensor); - samplesEditBox = findViewById(R.id.editBox_samples_sensors); - timeGapSeekbar = findViewById(R.id.seekBar_timegap_sensor); - timeGapLabel = findViewById(R.id.tv_timegap_label); - playPauseButton = findViewById(R.id.imageButton_play_pause_sensor); - setSensorDock(); - sensorDock.setVisibility(View.VISIBLE); - - scienceLab = ScienceLabCommon.scienceLab; - I2C i2c = scienceLab.i2c; - try { - sensorTSL2561 = new TSL2561(i2c, scienceLab); - } catch (IOException | InterruptedException e) { - e.printStackTrace(); - } - - entriesFull = new ArrayList<>(); - entriesInfrared = new ArrayList<>(); - entriesVisible = new ArrayList<>(); - - Runnable runnable = new Runnable() { - @Override - public void run() { - while (true) { - if (scienceLab.isConnected() && shouldPlay()) { - try { - sensorDataFetch = new SensorTSL2561.SensorDataFetch(); - } catch (IOException | InterruptedException e) { - e.printStackTrace(); - } - sensorDataFetch.execute(); - if (flag == 0) { - startTime = System.currentTimeMillis(); - flag = 1; - } - synchronized (lock) { - try { - lock.wait(); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - try { - Thread.sleep(timeGap); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - } - } - }; - new Thread(runnable).start(); - - tvSensorTSL2561FullSpectrum = findViewById(R.id.tv_sensor_tsl2561_full); - tvSensorTSL2561Infrared = findViewById(R.id.tv_sensor_tsl2561_infrared); - tvSensorTSL2561Visible = findViewById(R.id.tv_sensor_tsl2561_visible); - Spinner spinnerSensorTSL2561Gain = findViewById(R.id.spinner_sensor_tsl2561_gain); - etSensorTSL2561Timing = findViewById(R.id.et_sensor_tsl2561_timing); - mChart = findViewById(R.id.chart_tsl2561); - - try { - if (sensorTSL2561 != null & scienceLab.isConnected()) { - sensorTSL2561.setGain(spinnerSensorTSL2561Gain.getSelectedItem().toString()); - } - } catch (IOException e) { - e.printStackTrace(); - } - - XAxis x = mChart.getXAxis(); - YAxis y = mChart.getAxisLeft(); - YAxis y2 = mChart.getAxisRight(); - - mChart.setTouchEnabled(true); - mChart.setHighlightPerDragEnabled(true); - mChart.setDragEnabled(true); - mChart.setScaleEnabled(true); - mChart.setDrawGridBackground(false); - mChart.setPinchZoom(true); - mChart.setScaleYEnabled(false); - mChart.setBackgroundColor(Color.BLACK); - mChart.getDescription().setEnabled(false); - - LineData data = new LineData(); - data.setValueTextColor(Color.WHITE); - mChart.setData(data); - - Legend l = mChart.getLegend(); - l.setForm(Legend.LegendForm.LINE); - l.setTextColor(Color.WHITE); - - x.setTextColor(Color.WHITE); - x.setDrawGridLines(true); - x.setAvoidFirstLastClipping(true); - - y.setTextColor(Color.WHITE); - y.setAxisMaximum(1700f); - y.setAxisMinimum(0f); - y.setDrawGridLines(true); - y.setLabelCount(10); - - y2.setDrawGridLines(false); - - - } - - private boolean shouldPlay() { - if (play) { - if (indefiniteSamplesCheckBox.isChecked()) - return true; - else if (counter >= 0) { - counter--; - return true; - } else { - play = false; - return false; - } - } else { - return false; - } - } - - private void setSensorDock() { - play = false; - runIndefinitely = true; - timeGap = 100; - final int step = 1; - final int max = 1000; - final int min = 100; - - playPauseButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (play && scienceLab.isConnected()) { - playPauseButton.setImageResource(R.drawable.circle_play_button); - play = false; - } else if (!scienceLab.isConnected()) { - playPauseButton.setImageResource(R.drawable.circle_play_button); - play = false; - } else { - playPauseButton.setImageResource(R.drawable.circle_pause_button); - play = true; - if (!indefiniteSamplesCheckBox.isChecked()) { - counter = Integer.parseInt(samplesEditBox.getText().toString()); - } - } - } - }); - sensorDock.setVisibility(View.VISIBLE); - - indefiniteSamplesCheckBox.setChecked(true); - samplesEditBox.setEnabled(false); - indefiniteSamplesCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - if (isChecked) { - runIndefinitely = true; - samplesEditBox.setEnabled(false); - } else { - runIndefinitely = false; - samplesEditBox.setEnabled(true); - } - } - }); - - timeGapSeekbar.setMax((max - min) / step); - timeGapSeekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { - @Override - public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { - timeGap = min + (progress * step); - timeGapLabel.setText(timeGap + "ms"); - } - - @Override - public void onStartTrackingTouch(SeekBar seekBar) { - - } - - @Override - public void onStopTrackingTouch(SeekBar seekBar) { - - } - }); - } - - private class SensorDataFetch extends AsyncTask { - - private int[] dataTSL2561; - private long timeElapsed; - - private SensorDataFetch() throws IOException, InterruptedException { - } - - @Override - protected Void doInBackground(Void... params) { - try { - if (sensorTSL2561 != null) { - dataTSL2561 = sensorTSL2561.getRaw(); - } - } catch (IOException e) { - e.printStackTrace(); - } - timeElapsed = (System.currentTimeMillis() - startTime) / 1000; - entriesFull.add(new Entry((float) timeElapsed, dataTSL2561[0])); - entriesInfrared.add(new Entry((float) timeElapsed, dataTSL2561[1])); - entriesVisible.add(new Entry((float) timeElapsed, dataTSL2561[2])); - return null; - } - - protected void onPostExecute(Void aVoid) { - super.onPostExecute(aVoid); - tvSensorTSL2561FullSpectrum.setText(String.valueOf(dataTSL2561[0])); - tvSensorTSL2561Infrared.setText(String.valueOf(dataTSL2561[1])); - tvSensorTSL2561Visible.setText(String.valueOf(dataTSL2561[2])); - - LineDataSet dataset1 = new LineDataSet(entriesFull, getString(R.string.full)); - LineDataSet dataSet2 = new LineDataSet(entriesInfrared, getString(R.string.infrared)); - LineDataSet dataSet3 = new LineDataSet(entriesVisible, getString(R.string.visible)); - - dataset1.setColor(Color.BLUE); - dataSet2.setColor(Color.GREEN); - dataSet3.setColor(Color.RED); - - dataset1.setDrawCircles(true); - dataSet2.setDrawCircles(true); - dataSet3.setDrawCircles(true); - - List dataSets = new ArrayList<>(); - dataSets.add(dataset1); - dataSets.add(dataSet2); - dataSets.add(dataSet3); - - LineData data = new LineData(dataSets); - mChart.setData(data); - mChart.notifyDataSetChanged(); - mChart.setVisibleXRangeMaximum(10); - mChart.moveViewToX(data.getEntryCount()); - mChart.invalidate(); - samplesEditBox.setText(String.valueOf(counter)); - if (counter == 0 && !runIndefinitely) { - play = false; - playPauseButton.setImageResource(R.drawable.circle_play_button); - } - synchronized (lock) { - lock.notify(); - } - } - } - - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - if (item.getItemId() == android.R.id.home) { - finish(); - } - return true; - } -} diff --git a/app/src/main/java/io/pslab/sensors/SensorVL53L0X.java b/app/src/main/java/io/pslab/sensors/SensorVL53L0X.java deleted file mode 100644 index c45b3a041..000000000 --- a/app/src/main/java/io/pslab/sensors/SensorVL53L0X.java +++ /dev/null @@ -1,289 +0,0 @@ -package io.pslab.sensors; - -import android.graphics.Color; -import android.os.AsyncTask; -import android.os.Bundle; -import android.view.MenuItem; -import android.view.View; -import android.widget.CheckBox; -import android.widget.CompoundButton; -import android.widget.EditText; -import android.widget.ImageButton; -import android.widget.RelativeLayout; -import android.widget.SeekBar; -import android.widget.Spinner; -import android.widget.TextView; - -import androidx.appcompat.app.ActionBar; -import androidx.appcompat.app.AppCompatActivity; -import androidx.appcompat.widget.Toolbar; - -import com.github.mikephil.charting.charts.LineChart; -import com.github.mikephil.charting.components.Legend; -import com.github.mikephil.charting.components.XAxis; -import com.github.mikephil.charting.components.YAxis; -import com.github.mikephil.charting.data.Entry; -import com.github.mikephil.charting.data.LineData; -import com.github.mikephil.charting.data.LineDataSet; - -import java.io.IOException; -import java.util.ArrayList; - -import io.pslab.R; -import io.pslab.communication.ScienceLab; -import io.pslab.communication.peripherals.I2C; -import io.pslab.communication.sensors.ADS1115; -import io.pslab.communication.sensors.VL53L0X; -import io.pslab.others.ScienceLabCommon; - -public class SensorVL53L0X extends AppCompatActivity { - private static int counter; - private final Object lock = new Object(); - private ScienceLab scienceLab; - private SensorVL53L0X.SensorDataFetch sensorDataFetch; - private TextView tvSensorVL53L0X; - private LineChart mChart; - private long startTime; - private int flag; - private ArrayList entries; - private RelativeLayout sensorDock; - private CheckBox indefiniteSamplesCheckBox; - private EditText samplesEditBox; - private SeekBar timeGapSeekbar; - private TextView timeGapLabel; - private ImageButton playPauseButton; - private boolean play; - private boolean runIndefinitely; - private int timeGap; - - private VL53L0X sensorVL53L0X; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.sensor_vl53l0x); - - Toolbar toolbar = findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - final ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setTitle(R.string.vl53l0x); - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setDisplayShowHomeEnabled(true); - } - - sensorDock = findViewById(R.id.sensor_control_dock_layout); - indefiniteSamplesCheckBox = findViewById(R.id.checkBox_samples_sensor); - samplesEditBox = findViewById(R.id.editBox_samples_sensors); - timeGapSeekbar = findViewById(R.id.seekBar_timegap_sensor); - timeGapLabel = findViewById(R.id.tv_timegap_label); - playPauseButton = findViewById(R.id.imageButton_play_pause_sensor); - setSensorDock(); - sensorDock.setVisibility(View.VISIBLE); - - scienceLab = ScienceLabCommon.scienceLab; - I2C i2c = scienceLab.i2c; - entries = new ArrayList<>(); - try { - sensorVL53L0X = new VL53L0X(i2c, scienceLab); - } catch (Exception e) { - e.printStackTrace(); - } - - Runnable runnable = new Runnable() { - @Override - public void run() { - while (true) { - if (scienceLab.isConnected() && shouldPlay()) { - sensorDataFetch = new SensorVL53L0X.SensorDataFetch(); - sensorDataFetch.execute(); - if (flag == 0) { - startTime = System.currentTimeMillis(); - flag = 1; - } - synchronized (lock) { - try { - lock.wait(); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - try { - Thread.sleep(timeGap); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - } - } - }; - new Thread(runnable).start(); - - tvSensorVL53L0X = findViewById(R.id.tv_sensor_vl53l0x); - mChart = findViewById(R.id.chart_sensor_ads); - XAxis x = mChart.getXAxis(); - YAxis y = mChart.getAxisLeft(); - YAxis y2 = mChart.getAxisRight(); - - mChart.setTouchEnabled(true); - mChart.setHighlightPerDragEnabled(true); - mChart.setDragEnabled(true); - mChart.setScaleEnabled(true); - mChart.setDrawGridBackground(false); - mChart.setPinchZoom(true); - mChart.setScaleYEnabled(false); - mChart.setBackgroundColor(Color.BLACK); - mChart.getDescription().setEnabled(false); - - LineData data = new LineData(); - data.setValueTextColor(Color.WHITE); - mChart.setData(data); - - Legend l = mChart.getLegend(); - l.setForm(Legend.LegendForm.LINE); - l.setTextColor(Color.WHITE); - - x.setTextColor(Color.WHITE); - x.setDrawGridLines(true); - x.setAvoidFirstLastClipping(true); - - y.setTextColor(Color.WHITE); - y.setAxisMaximum(10000f); - y.setAxisMinimum(0); - y.setDrawGridLines(true); - y.setLabelCount(10); - - y2.setDrawGridLines(false); - } - - private boolean shouldPlay() { - if (play) { - if (indefiniteSamplesCheckBox.isChecked()) - return true; - else if (counter >= 0) { - counter--; - return true; - } else { - play = false; - return false; - } - } else { - return false; - } - } - - private void setSensorDock() { - play = false; - runIndefinitely = true; - timeGap = 100; - final int step = 1; - final int max = 1000; - final int min = 100; - - playPauseButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (play && scienceLab.isConnected()) { - playPauseButton.setImageResource(R.drawable.circle_play_button); - play = false; - } else if (!scienceLab.isConnected()) { - playPauseButton.setImageResource(R.drawable.circle_play_button); - play = false; - } else { - playPauseButton.setImageResource(R.drawable.circle_pause_button); - play = true; - if (!indefiniteSamplesCheckBox.isChecked()) { - counter = Integer.parseInt(samplesEditBox.getText().toString()); - } - } - } - }); - sensorDock.setVisibility(View.VISIBLE); - - indefiniteSamplesCheckBox.setChecked(true); - samplesEditBox.setEnabled(false); - indefiniteSamplesCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - if (isChecked) { - runIndefinitely = true; - samplesEditBox.setEnabled(false); - } else { - runIndefinitely = false; - samplesEditBox.setEnabled(true); - } - } - }); - - timeGapSeekbar.setMax((max - min) / step); - timeGapSeekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { - @Override - public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { - timeGap = min + (progress * step); - timeGapLabel.setText(timeGap + "ms"); - } - - @Override - public void onStartTrackingTouch(SeekBar seekBar) { - // Do nothing - } - - @Override - public void onStopTrackingTouch(SeekBar seekBar) { - // Do nothing - } - }); - } - - private class SensorDataFetch extends AsyncTask { - - private int dataVL53L0X; - private long timeElapsed; - - @Override - protected Void doInBackground(Void... params) { - try { - if (sensorVL53L0X != null) { - dataVL53L0X = sensorVL53L0X.getRaw(); - } - } catch (Exception e) { - e.printStackTrace(); - } - - timeElapsed = (System.currentTimeMillis() - startTime) / 1000; - entries.add(new Entry((float) timeElapsed, dataVL53L0X)); - - return null; - } - - protected void onPostExecute(Void aVoid) { - super.onPostExecute(aVoid); - tvSensorVL53L0X.setText(String.valueOf(dataVL53L0X)); - - LineDataSet dataSet = new LineDataSet(entries, getString(R.string.bx)); - dataSet.setDrawCircles(true); - LineData data = new LineData(dataSet); - mChart.setData(data); - mChart.notifyDataSetChanged(); - mChart.setVisibleXRangeMaximum(10); - mChart.moveViewToX(data.getEntryCount()); - mChart.invalidate(); - samplesEditBox.setText(String.valueOf(counter)); - if (counter == 0 && !runIndefinitely) { - play = false; - playPauseButton.setImageResource(R.drawable.circle_play_button); - } - synchronized (lock) { - lock.notify(); - } - } - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - if (item.getItemId() == android.R.id.home) { - finish(); - } - return true; - } -} diff --git a/app/src/main/res/anim/fade_in.xml b/app/src/main/res/anim/fade_in.xml deleted file mode 100644 index 8bbd341c3..000000000 --- a/app/src/main/res/anim/fade_in.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/app/src/main/res/anim/fade_out.xml b/app/src/main/res/anim/fade_out.xml deleted file mode 100644 index e419507e2..000000000 --- a/app/src/main/res/anim/fade_out.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/app/src/main/res/animator-v21/selector_animator.xml b/app/src/main/res/animator-v21/selector_animator.xml deleted file mode 100644 index 502f18fe7..000000000 --- a/app/src/main/res/animator-v21/selector_animator.xml +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable-hdpi/compass_icon.png b/app/src/main/res/drawable-hdpi/compass_icon.png deleted file mode 100644 index 985d88e6ff4a6227c500b5e43d8fc73a6cf0e167..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 67234 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 diff --git a/app/src/main/res/drawable-hdpi/ic_pwm_pic.png b/app/src/main/res/drawable-hdpi/ic_pwm_pic.png deleted file mode 100644 index a17fcacd520d277dbc704d425fe42016ed0f1b1d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 585 zcmV-P0=E5$P)>-}?0X-8pw|=R0#B=SD@TR4SE9rBbO>*2(Yp&wzKq6UY(qeDGrQxiQ9| zKF{Do&~5aYHR43469!g+j|OA5K(2@vfK3ta0{g}o&0rd|G3{W*=raZSMW1od;go@T z(H;t5U_i8^!D0Xdb)xM8%SN9GkS^L~e`)|EfF?>79Puxo@gEF$mJ-Bvxq?r zo2anCz&$TscPP6Mp4H%zx5$VYIN-tE;cTOLuLTdF1Drff!M#WusN#c<&X2+%4fOH0Oyx@|)nSn|P|3f1 z0~LE*Ke>J|K!)$gD4##^5jP;(rCgoTSV__Vf4>}@fCZXD9Jk7Vi|6z_IOQ?7K`&V6 z&qj@1$T|bd;`@W(49tN>+Vui#qjnky;T&+xzzCNVUl$Mhs|O7OTO!`ZRjX;>SX_cS zxkxk(tciFJcyq$QSb(da$4Jg=#P5ydsL!i$4W$Y;P4p=-;)G8x`6`u4rBbO>D*N;a XZGUs|DYija00000NkvXXu0mjfawG`G diff --git a/app/src/main/res/drawable-hdpi/ic_sin.png b/app/src/main/res/drawable-hdpi/ic_sin.png deleted file mode 100644 index b9a6c52e99b10243374d2c6556746051c80753a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 496 zcmVY5Y2}XKQKxP8w(4?fP!EUYsE?AI#EhwqMdjPLu(;5tBAj2y>tR4n7Jo*hSYQ*o^>Tj^C_eD zs}Z$74>apjQVA5WE%L6Ci>S>J-=Qx^B~ZsK)??~-px>2BV1PJC?1`zLLjv6VMq>WQ zGMeO;)DHHHBsOE}U!bo^t>Oj@yhdF~iZ4RT&rx0~0WQH$7%4~8oz<4+D1mkaUd&gfUkTFWBf#0*lDI8UAjK)`V^;nuUk_aM~*}Ur?2GV@kAzoM? m1op%lmO`OWC=?2XLI&S9^{|dTsel{+0000t zrJTuXdV=NgBK0FK+SW@NDyIJltB`GDU~nk5e7^KehAE>w^R`V}lU7b|So%piuz`V* ziRF(~g4XQyypk6#C;K^^W&KwDdIjV8hakCR_9dt8A6z@VK}?u|;lORqEmvHhWS!2d Q0NTyq>FVdQ&MBb@0E{_2XaE2J diff --git a/app/src/main/res/drawable-hdpi/ic_triangular.png b/app/src/main/res/drawable-hdpi/ic_triangular.png deleted file mode 100644 index 22074d047648d41ff7221abc5b1212e753a4b496..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 563 zcmV-30?hr1P)bngx+8SV&2+peRX^Uy10F9l#=p z(I9j*-w%Fx0N(|4c~Jo5J=;B&Hh7g%MpU!a?>hs8`R zJ9z*jV%J69UNZg+1-UK#4d%-Gb^A{hN5{QvW^RaY8a| z0MBgdfQq3c{rupZ`%zM?bW%ni5X)jA$@UxN_7BkR#52{BIP~?|+9pK;oN{sk&mzqC9=2W4lhZbwsRrdL~A7 zd$Zx;;wZ+Ys>{+%R2+eAdRbr@85tQF85tQBM!!}&_kD#?&HMlW002ovPDHLkV1j){ B4EO*5 diff --git a/app/src/main/res/drawable-hdpi/sin_wave_guide.PNG b/app/src/main/res/drawable-hdpi/sin_wave_guide.PNG deleted file mode 100644 index b54ecc23752706a87cd4545049c8d333969cf500..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39416 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 diff --git a/app/src/main/res/drawable-hdpi/wav_gen_square_img.png b/app/src/main/res/drawable-hdpi/wav_gen_square_img.png deleted file mode 100644 index 90ffc67fccf5f8f05ebe90e14bef6f8ed85c9791..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5236 zcmaJ_XEqPH16j6@%VFA}{C zA{d=0;cU6ybDdw``LXxDc6s)*_j>NN?seZWhWd}FDcC6p2neXPwbYG)V>Pgqklh6K zH0jLIz=05M{799cdW3TWI3aOS(NiHHs7s=}u)6`Alf$&k;lQJq>y40E%JR^OFgVzVvvuAyWiZsXz=vrmAS9kh;Kusc318X>ul0q@cePBZ+Vc%`f=Oli@EbZ|BQx?$OYBFkNUpL?*#TWbzWVbf6App8i@ul z^N9*T=mi<7qZ!DbsmCDh6scpFjrf*gMUXI!RIO&d$N%0==Ea1pB*-TFMGjf{&8>0= z;ONnNy&SAREgGLA6}B5El0Wgq5>I>n-yoHJ&pOYO`Jf$~$x?Vi+mv&5%Qk9eB; zJur7M6?}l5t8T;p0=Ms~o_C6HtGBF#p01`tKm9o#`gL};S(D-sv#gFJ^BYXPU2RmX z2?fUao#WeTvgLg~p8qUPnzatvUJX3@<>c0z$hG<6+efFJHlI!BQ5vNSnBV2;dK<0M z#TcG)i5xte|LSro*MB(%A1B@kQw%(Wo$q}5MD96|EC`)%4}gA-rpKcfLgAk-_TxgL zA}Lv0U+Lar+-VqnxS9CRzSj9&gm5#ACur;5Ne``3Ge|A!2VM@gsO)#K*C%X{dunc; zLXO(-`EIoi?KpaRGUvC@Le3~8V1N)IS_<7C5I!EX+XgQBhok-$<@Uk26moU>$Le4WJ16}e;&8I~zBtjV!5J%=Evs~S zY5App*(QP#ZT}_qcn}(=KoKO31;E-#R6I75ees|7xRKa)V0n*!T_w`dL7K5y(oza2 zopdn%LwTMTCCgo{ybGOdnU}Nc`LFVVEk=@*E`L_H?>}yclbv#8eD*2y4=#pIgBL<$ z4gk^?KtG~*0y*fm2Um6+Pgm<^N*-GjYf>My?6b*CKj)Xar}e(OHw1uT?y2QVr%^;0 zUqa5Gy*?gi_Db+Wuc#li@;?i3(98CV{UOv-WW%yXD#+%dD}#1wcfvqvN?&}5MZAcq z+81IZfUng7w|st5@f7>ygYlOO)I*A6;62$2@#imRP}r8FQIu7iFTS>i2JVs{f|_IG z(}OK}b+w+ZWn@G zAZO`T)dZO+)0@*4&c)$7POQ-r`U>V%6NOs(n(ds~ zr{^iX>de0HnjB*NF2S`g za9WJVVT8o9tLZjSdKrc_2<%T`^S{=40zVyuKBE1+|?=|)#*oEWNqfUf7f>+DcN zE{QHrTF5IZh^p;-oV@JCQv8LLbwfB;u5A>JOXSe2kOwCH&nj62F%`SVGahYEt1Qfw z3+;NMe8-m8ug279v2|{BcI11i3!Nd`Q}_BfSHPXW?G;MMkwVR|4~vTU=9O7Xj}E5* z3eL&sj6av>JH8%2#|n@0cELoXn63<(9~~zPuRgs)nTY)*@rT7fYuO%mZNj-J{BMbT z+p9#+2eQm#9f!ow-aS#&aP+KK-1)DHn%UobD=EUNOyRHrg4gmszkUSynx6^zOMvz( z_N%PgP#yLbWPq?h_?(nYD_utOoZIYs0!3C-hVw(uT)kX09z=Hon&VodstjAYj@sk1 zZc?5fA09RgqP;i9h2}}Q{drp&_#RdvkM&gjBPi3UYN=&@bouPe&p}LFrMlsOY^-N6 zanm^bK!7PD4U|2c%cEs-2NZ2up&-m1;Sr^S9#I zUm`;vEYa1cUK^gu6#QdS>AJNc$5VaA+^_x|J!>-v1^Y?}KIFvrbN?lt@wT!U+l{xT zM|@9{dzSuVV$d{e>E+E6_!BgwLxAb<=HHoXLsymN57 zVN`MNGb6N*%dat*M17`Ejg(R5$OX{q+U+qCQCL3Gu_t73YD0_vT6CxM1|B_F3?qj0 zC301Lkorc;q(Zc+aLH`az0<24K@(2yZrV=&7eG0h6k!9@XZGQ6ASIX&v|eqTRNrHd zB*?Vyg6oo7d$euKv%h=4`( zEqDg;jC_|ju}JKhoE;Ve0}^HyDPav^ctk~Y>tLrEn?f77J{h7rG}B zt1sD+VYx=hrR|AhD=wgWpm4|5*btY|={x1b8YDzgc@HVI5P18OAygix6L;y}rBnFU zW2yM92ccoVAGT24^wgd&$7j;qdEH)qQH&RhB=LIjHLN>?gd`rWE}6pojfC^tY$b1wEQ zihrlO6wW&?ECDkRtrg%vNatVw`5+hKB~>VYOF|B@OTvn$(S9dRdjG|!R;zYTv#HPy zPI~D3PUFXYX4eQxR-^hENy%7SHE5wFpDWdzj+zZ*THI%Q`dg=gS0Y{BB4*Ba<|Vd6 z+M$< zqSWCKyRClZa<9ClgvCqxN1S#ik-O?_ay`}~zWwBvcG!KfV5WUB0_*0m03@|z7ME8) zhye;R;ZyBwq%7?dM7*+E4DnsK~^3R#8BDWXw^UYN3 z>Ycmldwk8Xm{`yxkX@$a6IU8m7jNMB;yGkTwjiJNh~y+*mIJALk~irDC;K~@8^qfT z+juy#L}?`HcoxZOEwKQO5P-)OkX%|}x|lSVHF!O9I_*r)yx#UimWkS2%iuw0>+*|MVT14PWIxbmCsj{y{aRzAlnq~V`wt>)5u;J-7-d&uT&08W&XI$A zZJG0oAJsfmR#C5d{7&@g>t2y3(j@e*u{fCKol<&!&E`6XK8tg~sKWq17Sj7&_|k=l zoqT0|Vj+@l(s7>Ko~+j~jCeVq#+$K7YsLX>F68R}888H=aW_!<)7UcRuPG|9eU#an z_#E`9JERC_B%px5!3tUQT?p~xNNSydwwXhT$_TN$83CG(@uJo?t3!#pAVK)o<~KU= zz5aiB4UPZN$cgGVSrpDUGE^p_v9nGd+G{yenb^XRvD1=7A`hLqq(BIlgqR#V@EBDM zq{V9>_uU>+>a%sBY9wGj#)`LwrAAG0m2Yp;BOBaplLJGG^wi33T{$?yPlIiZ+C>>`r6o7?C5VFz>&CrX-sFOB@j`K@JDmPiYby%V+wSXs7HwSMWFl>GFkb$CaEo`Fwx1`-^rDHO_AVc`EF1cwOjCx{O=FKA(4*8PwBS|RnPjiB z=OWQQ%kz7WlOJ@z&rfzdP85fa0Xy>OnWzCPK(~#D`e3m(p#bt|x&<()IE|y}DWA0$ zJmARCC5klSGaMudEXz1EJ-8uwkHwZ-VkTXU@u8I{KS8+hl8(?VMV~hB4SQyWcq9W~ z$|9z;HT|vxA|^!Vn|RR?b$*CX4ed4qpR-j0yL2Teny$r2;EmLDtYivn(7PN2lK;_~ z>FJs4hUs~|l+=2BrGzd85i`|sv8`8E7$Hg@u=x<7GL!B&;cnV*4(X*XM9W-K&hgpO zZfP;^tkQ<-61fyC#v&ZOlDj?KKA0I_2hjK}@;NWw;tJ|;VhWLa)EVD&j05IceZ-Kn zLCj_gA54VX`iBH(hx{V1MU~AZ#|}QEB~nhwZ+%m#muCSyAgyawuE%IMubWYwx6#LJ zpFn=Pyd(H5y(Fi77i6=hhC_p?zp);|4g1kBBZqaO#mG1`Xhu6lpw_`gr#Ujti}~s6 z2%P9|YsVsg`chaVnZ0QAa+2;1&{N|7QZwTE5)h2~54wT%6+2B;5|EBG(>c5C^ZKy6 z*>N}pzrT{GpI1qRrD2Pqqac?h0=I2R4p})z>&V1&E6Q&+;nYk*5^g=a(eh0%Tc&Be zLh^{cg~vKrCZJxD>5DNH2Sp|Yy|T&&GkS8sI-YK$G{XOT-O8Xb!e{%nNTb?gq0?Me z!|viK%55V$bKCaTLc3tL2!|UfHG68XXt2O6SwTB@_?Mf-?rNYVO`;CO)ED~*n;1i_ zW_r~mJ9*1-g^aa3hgQURY1i@3Ynas=FCnfU^^{~5mYXE(WVpmoFTPjj&XT{TaY2S_ z(R01D4DX)zZo=8Oj=eW3-s*fq_~zQH+=#UB1qmLkwX^T zvgywLd}qER#o!d)LoJKDm{H|h(!42Fs%2inll4Xpc6H%39ZuyL_*^8qR@>6iSQxVw z)boZG4bJkL^?X!6-qHeJpMFmqB{FW_03bIBlaRedhQD$dXkWu-r&m(MAvo9?Q|+G> z=Sxs=J{W5?2blJMzGgfH>!Dq{ z5*`(}eXoZ8sI?o2eWh~fohe+GgWunXt3w0ubAY0e+M2`PY||b3s-9G&`PAteES0D% zCJX8e-%;`N)0~hzH;XSs3ZR$fuBiz>)4^6R8j|Td-}Ep&w9p(2%s{A1 z-zWlGwR(H`o#x2t(q&ONkGJ}4^0{KfY9fHXhOFeR^2mU(5Sb6e$BsAqK!6#M!BGZawu#U-Z&1^8HBG90(U{zsClt0FF0$uj-i zERTJPJmOjFE<|w@HOKV%tZg0ysOh)<9Bxcly}n7k6#_Nn+vy7cO`aWX&H%SHxr)2~ zMwyJ`w9`9su&62~Ec-5+9>UG%_}j6N*KNR0xjg`B%>nRK^7laAKLPctJSDk*I1`;m za$KcS{*2ytCYBLFxqSQhWSiR-N=LJnht{Eli(P>)LqN!9Aju5RVGt#<1Y}YPRPc8M zJRF|lP-)R@O6wao|G;E>YV=+vE8Rj0Qm;^(bC0ZIdl}2PbWSAJBjp?2S`|qr zlZ%HeW}k$LElswS|Hk87J+n6(&&Gah)_KXs$zxYkGa|Lw2I64ipf#P;_x8x?W=zrD79 gTXB4!TdoM>DC6Down|5VP9cG|hQ4~Ws%^yo0J=I9jQ{`u diff --git a/app/src/main/res/drawable-ldpi/compass_icon.png b/app/src/main/res/drawable-ldpi/compass_icon.png deleted file mode 100644 index 1f3c4662e8423beb67a5d4aebf1877f493a8c9ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20219 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 XK@jt7Y_iSS00000NkvXXu0mjfv9|*k diff --git a/app/src/main/res/drawable-mdpi/ic_pwm_pic.png b/app/src/main/res/drawable-mdpi/ic_pwm_pic.png deleted file mode 100644 index 3ac1e45b16ac65c8b8e379c4c0a7f8b8132e8516..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 412 zcmV;N0b~A&P)7qZwK-ukK2 zshM24WpUnmy0>5F-ky8Td(KUzLWK$y>c3SKMR)K9P1sa61Ru)nnpd8MhQ_`^uksCz zv%DEspbA~~GFVqO3?=0`M_?MJpc9sDobnauSH2fpK-V7FhApVWJsiV=Cy>+qk|*#z z8#})hn1m;ohY@|@I9%HlCn^9l`s%W?1V!CXz^&Ff5dmw$bLjJWz!jK>nx#E~IpqaUAfwZA%~^t7WkxNo zz^Bf0JJ(Cf2c3U~T?dpG;ayq75ja$4Jchq*s8FFo`Sk@bt=>G=KOYzX0000_D6Y#M^=RBoHqHVi$T@&H==8fcPK~X9KZ65O)CaX&_FbhXbmC z_y7>Ap^3)<@hKp-qNU|}P@no?kz)kni9oyoh*@dnfN9Y9X2Kz_1Pz5CT3D_D^}QPb zbzMNb4woY-aX=jqZv$c$0_qHb_zVzRQ`-R`gH?!7#|U-kd?L+F0^%ZSJ2n*>3R(oz zNkP+08MPfC3dBc&xQT$eLZ|~2X_08_prxcV4tXIUJ_N+Qw92xe;60AZ0-$&e)c0Dn zEVz=OX(1X-+yk1W%V}L~GXrrS)Utl4gIb|Jp9-qf=uvmD0C74H?}CN~s2<4&Vz$wC g#V8mBqhL@209&I_Nk;#@Q~&?~07*qoM6N<$f@TYW_5c6? diff --git a/app/src/main/res/drawable-mdpi/ic_square.png b/app/src/main/res/drawable-mdpi/ic_square.png deleted file mode 100644 index 89621dbc31fd1f194ea85b876ff75e2287d95692..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 157 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJ6i*k&kcwN$2@0Wqm+Y;K?2``R7aD^x7zgBA3bO+ zVOVj(2Po}eoxn9w^bA{+WrK)K!Oa4Zo~A$p9R`L)MgTe~DWM4f DY=AS4 diff --git a/app/src/main/res/drawable-mdpi/ic_triangular.png b/app/src/main/res/drawable-mdpi/ic_triangular.png deleted file mode 100644 index d0a91b0e116a288664ed7547f87e25859b0c10fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 356 zcmV-q0h|7bP)Q;%Pw4OmEALfcOLuuZ21ym!6i30`X2DUI)ay zKwJaFr-0ar9+tBL@f;vN48*EXF*YDx1jGk`Sb^3KC;{TrK# zKQW3tpq7{7khg$FMH?uGkYG6z5KksX;bCa-v*J;c1WlAtBsd@oq=y)VpoAw%gl~GG zImCzvGwqycBhp8_&>XS@pM!yNvOv5ah?fE}JGB$5Di9yS6=gs%P9RqI>G}j)654`lW2JKB;O1*2dT5DNfLEqc!AG6>lK0000 - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable-xhdpi/compass_icon.png b/app/src/main/res/drawable-xhdpi/compass_icon.png deleted file mode 100644 index 44cbd3d02c702944007bb943d78a23bed4f2277d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 114811 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

{4-MdK}>DiPB@pMV@wRkZgWXYRQ=1R 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%0A&?*-Ab~PcB_|q zY&~La7_v1935{WrX_82>tR10&wstgqcj$xxSk;b6syWOpgG7@?imHRdxn*svX?((S zqBP5;BTIxRRJD$_g1mD?p#Z>5>sTy1#-og@&t50^=&y16_xx9=jgwGUxcMzqF_nnC z)+68bLQe5yU1aB-n1eWzP?nI5B={u^6=~wAYUL%%6KAf#!%E+COi4Wng7$8XwZR+n`_~CZoBpBp=B`eyKtj2-8$T*o zDFCkT46I;33Q3Go?no`!ECn|U{ED)(&{hmjoFYucFI2Efhe(0sBn1~fPT2w7z zC^Yo8wW~3ss-17F9d+YeHlK0$_#ZzyyyxxiCx7xt1NzNZcU5RR>x|Jli3Ex7ob00& zLRsz|hD^|F$^AEPo%bb>(E{aBTV(Fs-pYjT3fOufo{Y#wgB1%*s+$TzA@ewkD~{56 ziL;dxt_m|S0!9*La)I!vzHR}wVdu&%%Bp3YMyr^x9`|fJy`su?)>5|uj%wdh;jg)M zG6FT7_g2UZCpKcX*F?|0mI-UK^96C1+f^c#1>#t87EK^2P>VwF0b^h-)65IYFw+b| znGf^aa`t$@?tvu=9gWASjDjRoP?2|j(x^|1jT-?5c zD5SAc1kyMZ5mnOyLXrxNAqu?8&N-c725On-ZlO=#?wmV=Qda}7jQT594>ISv76(-=r(_%% zI^-q@ds;#3ykUb|X*zmq_Z5o@=TBZ_p4(cNpclK34ii71`)IhXkc-l_tcW1J+AK_c zBhd;Gr(WP}C#MU@RwB+&gg)grKo7SeNx5-L)>+G3X8gYD_X^3-i?#e!q-w1vDG5L| z&O$av5mBr;dpu&C1q?IIBva%C6qS%f@=Dx>BjeECJ8%#y4i}ar(nPUjHN=sCw`D1v zK$a*rhMJ-kVUailIc5vT#+oSennwO@e_6&O#omFVs4W_ajR!f|lgOb|%=)!RX zN@pmcvUilctp4N0>Rp8iR#E_0v_AiYhMg*c~dZm zD1#uy)l=Dp8o%=J?YN2}lv9}P^HMmf3b!b*^PA{6W#dG~#=Up*vf(!0v44}@XP)5t zvln^cYRB_mdyd_kGupc5)?rSVMx==Z!&q+(AQbqcEKgx`_69o&qcqED$IgW-OzwXf zt}Re5^4*RTiuo#0s`G}gt*BwU(xcEu9`@cd)hXXi_ybZ$(q-62Hh~RVlK@ZrvGB~I))H9gOw4|~?W81!^~k)AuW)_Q+`(G8B>@gVSkf-8Yi%5~QtyVf3D z!s$pPzfM9%MVBonn|1Poo&UkTc3UYW%0~~-;a{xa4~{gAND~b^&w>r)2C|;zYLVqkuHltcJryCmW{D5v3v)tMigG_nqMU+rLQ)Oj8ThCCOwXgqC(6MD-dC=x#nkuyG!Y zmYj)B(vj3)L)NC%OpJPiOqiGTOuD{k;1#kSds=mhkw5-gp<*U+1wk0%VnyZyZNMAx7|D!q z%6G)pvb=Fwwmgv%jzZ77cE0=V54nEuZ*o>gxo-IL(e)mXT&=4dt1u&{aCGP_Bb^Lz z_CRFe%JXi#5K0?GWPB^ z^$ev0?HmMNlG*zXcHYP#&{~R`uQrl`tbK(NCg6&+(+US5)QZ7q0M?0#YP}R-5Qox% zfHlrZOB;x4(5-B;#ZtYWa#WbCJn>YzCM|GV%ZKN;7@C^$U{1NLh?8K&BWPPo*E(vy z;xigfY^1D@3|o_cNfxX$=UFV{MN!KhxUph4RyT5!LF8RJ2ameQgWF zNQ_VWtwY{eS}Xd8L84feQfwEcBaP&2G5(q#%q^pVFz(9QGDsD(nPYv;H&&g9@*01s zn#K`Eia2ltQN-oPU%*5G$KUi$IJ^SI47G8aJgDajqL;ru}X2cUvTEW6P$bJJ0M?(_oY&(Fp-hYT5OYp4u#y44C!t@i`h5_Mq?Md z*kXo`CFRRCm5i0?M7|~&iD67#p|g<`FDH&oL<2c#agr6`EVN5pUC05V3_2OY@Hnb1 z!Ii?r7;Hf|MD6WBeaO};9$@R6Px6+wq@CyNJ@*_JpLmuRp1Q%+=dZHAzu<7*p+iFu zh9qeyGW)Lc{0JF0FF$va*VIc9nst6Ib<(yUaTQ)NE+~f>wzjN%7oF-pb2r*7oLA0~=r>6qs* z9ynr8GoOqd&MKl<4x-4r)h$c^0XI^(f&fgEaPdn|VV&Xhcm6lH-3z##r%~&tQR}x$ zQup){R7+Gj#kMsj)HtV@Oq-eux^Zqeds7nqiB5RFvRMipv`)=LFq?+_R4QRRH6p#+7r#oOMzPVKhF=KClW3Pupb*!>HbjXQB|L3iUx&>=colfQQ@G=<<3;ZRIw z+Co;S&ie7jyCJJkwk6KW&+6o}mzACtrmKk{-Ig1%S&CmoJdy26v5#Hck~w>FyMTB3 z4yrs9OT60RW;-a`5*|Cv`Mb9`|E_mHxukgh32wc3l}p!hERVW?? zk)x<(3@R(p|C<1+QW1o*f6ogT52U3pOWDyADauM7_@;BKIKVK5#JBEQET9gp98$G) zWU->_;BaBd66q!uxg*RJU8gYCQ8tc2tQZe8v(mAw90tf6=|HrFt+A%4L1{;TyvEKt zhMA&jB_Jm72T_(P=D8(~6ysF7l2PPnY{t&lo}_L64R^f%zr)3M!p<{r^=qiDJJBcZ zhi-=JzRWUrq(d1W0wpWG#k}O~%g^wN_rDLjcTHAi;BQ)w@6?4noaq{bBkbO@n2od8 z<(`nKk|8>qfR5zzUfzOuD5rQlhH@%WciRY=DjLWGuZ%cQTkp%+3BN_@5T{yHoXLMr zH{=5?4seH;L>M+YF8&dXSl_GRw)~9c4LNwy4Z$PYR@Al02%-eHw~L)#Lj^JEiSwMj z@3ovY0pEOhgT<9=T)VW#6QBA#?P5t=bOdXGpCS9LLU;6FTjcfi>qyo32Od^TNAyvR z=sOOq%!W#X?xa&thA<9RMl;R>qe>|b4syDt7F@*%IO>qj!5CSmcTT#lC<=)pA#0%= zTKPpn7|=CVOHugOe~l}T9AI^XYZ_kh;2pf}ue~2s25m*Tob&XbJjBQU-9toKMqSn% z+aB=)Kl9`K+E4u)&popv;U&wKZ~MM)<*wJhj5ZmeXE*rw|KvZ=bS*j?Vr%OIQT$95 zN&tq^?r0wCu>6Bjd~{gZV=K zzjctNil)`njl-tGVlz(RTt_e%aQN)gT>aR;=Jb2N54P`w{foGp&q0)-&b|UO+Q4=K zBuluE!qqjW?motS@B1#?Vv1Yt3c*MP5&?(CHB0FLg9wr_cJBrBD##H z*o1rD`YO<4aUZ|@m=vIFBJWXqcCE)0r9(>ci438gYxj(}M8jVB6F<~IZqf-IZV$Sk#%E9g-*RM@ws{yFi(h_j- znP<58TmK6HK{cOKmNlKVL`lRS{>H;tt9Z}<^mjnR=l{vC^U+`Z45Q64W!nYK!ld=ddD;U>4Hjddin>;`M$qJ58z6#Y;n1#qmL)Wl%*B0mB{cR|WoSw#K7=($m`c38eA{iuWxY;$#+8GG|ZcEf~ zTUL}lNZ8?or;twMV4UB?b(H{>z3>i)t>*Gvq+=Nkg491CK3yDzPRBBSTA*8s7e}^+ z8Xc1yhS<9rRa1GLS^#Rd+(%{Wkgdx|Y7B1oc_|{JW3YBg4xYs>syKu&MGe+)%Uiew zxY0JKHFR-^n(e@FO}eMOecvc_;+K%F%j?q`=)prj9{0##Z|SDh>U|0AutyI){a=e8 z=kUZS(livJm3Ihp2I{inuGiho-QWK0G8ab)vuB>8JVq+`nt}Ndl#ypCI($n*BweZR2cE>V^8y~(Mph{2vkX4IO^6Ag_^-ov&=OeP%Ob{OA?C# zXzPT(KS(rr?kJJdISL^(z957OZ5%}bCQ!7UTFHlpnP4W7r%}ub86hSk8421}=)WKj zVjMb#Lq**{UN{mzMr4^38QTh#UAZH5t#dMVww+rM;vyt&-T3vARxnD%p$H3G>wc^W zU@#C@q);mw3!SsXz4NmbF;f!3t-Y3WXEOGld;hNy9xx7^I6U0LZlPfNJUDzNo_dFV03_gnxbr12Z{*{k38}M zPe1lF|KQHs$!@z7T+VO*(|^IkpLmqX#t_3tId|77zWs;3pR?ckcJ6%n?L6{l&k_z3 zF%61{ojp_ngt+jo5n>E?v?V2|OQw{!2S z@8ru5KZA(}3(ABlX_bH8Xn(-uJI2LriZ5+!2VxLenOchllCv5+k8|%=W%>9X1cUFzuI71K4 zl$ET&jbH23EyRgzTk1}*25X^eW$F=QX|;M_!vL10%=ldkSti?nMJ{&bS}Bx)vXu|m zYskn8!2o(;T@oqsQdo;^3yl(LannIwTGj^Mzu&VQn^s6rT_+m})j-!NYR^8cyp5pp ztFq~=V{I$r#YbPDEq{eOzx#WIK{wtc-P$JB&rp{YYiBmN{jG1t=@_@z6Kb?KhlL~k zi3(x}2H4pZOt!Hy*Hz&!)YTO1bZ5@)omVY4wLYqGgo+=AInDP9}rCI6zF z<1Rlcqt4n{DF(aGi}&T$-O@cAUWQ^Ohj_N;+kYjp^myWB&pp`ai&#CEo5HnH$dr+y zftDgdE6083>Ce5b8>~ocy$3_DMwWO2N9SZb7*A3X9n&=(N_EgSl&vEg4+yf9s_yv8 zSFiHS-};CA;6K{uE#LhueCab!U|oXk#M-U*3=vF$3X}+dvc#aY5#x&&o@aQ^D_B3i z!FY4b;bFtZR?1tx_uF~sr~f$*e&72UZmsdEcRa`!Km7z{*|5I7!P@Z+p8M)E3`QAM zZAk(Ji(9CwmKPjGn4rZrC0$)pPNyty9WdXW;_?}F-QldFZZ%nEh_i^MQN*#(h3ir} zf;1HlMAJdj$$TW*a))!8s+JDYLoS#=Isy$CD}P_sjzKDPzItB2ssP44&dYoLlisq4uyl@T3H84_uy9P)IEOOLQSH`8yF^v!=)qB3gz<%qDa<~H8wvM80oRa5#1I28zYz#d-5j81rL zArg(sVi#L2(BosWY7E7x+AVi+)k02HocDIv6b^!O@=yn<{N8&S+6uZt*3z~^$73lJ z)l7t5@km}@F_n#kZKR9o8V_b3lZVe30Y!IT1ltP8IXVGtf!ldnOlmgH%7;C>Dy!O! zvodBhm1LTRBhicmp?qkaZ~d{*<#OV$RKGo_?pKQ_sQ0A^^Z_wO*0H2x=_po+TkbqJVQ0VO-~OXt;ni=rhd4{I zKCeX>%lfD&)Wj%Nu42zR>sS;mm!IF^ysd~fj&b7THqSl%1aJTA@1dSA`0aoFNzOg^ zT86is=8gwn&28s@pQoR^!5iQ4Ci2CS7oNIIoMm)f>21vdntDO8bDex%G2fqa^U^MD zS+PE_)FsSH#rj07-=<4|madjJoWz>C6XVV}umny~Eo3b^FFM8pO&ox0_!oU(L$Gn7t(y%eGG=;-xF=VL=LH}I?c_m|7*ILp@QThn+ICP9t z2c75z>Q2*k!T<~$u*(BsH4fHM zI0+5Hh{V2{3n)1`BNS^Ln_3ypK*-ENxF_Rml=NojMrPvf6zp!%SgsJD|yaY$k2%e#}eBZ_HQAZF&kW4)H z!^*XB3fh)*G$e@vS}U258qk5bkhfTL82K)$S;-7;Uf<_i|Kgi@<2zr+&-{a5pbkcS z`jcNL86*O@D@CVSC2ILj0cs1&qV=5uU_!1w{hX{?CL0{T;{@r$-{38O={xx3zxgdX z9q{$fKEmzqemDBWIUacP13do4i`?0`ou<0Nd={aHHHq5i zw(Zjd8>ew?O&lAv(JXUIqLyq}(Dee74M2x&U{JUQGV4nf%l z+cv0jkEV7k+mx_d64)FyI)*lyrpO7p0!&0}Qa0L}u$xnqiqu35*9LS=Lt7STZBVo_ z^Vc;d8_=~5V@qsZQ#PUp3087z%d*gD<(Ld(v~5`|9ODtRP0ey{Nk#*fvn9qSMrrL( zwxiRD+%NMPIy=s&t|{`0B$VW&j!;5&oFX+X!ziRIYP8mbkx*3=EeT2+!&V~YBgNrN z5sY9n6zO$fTG9es9I-WN$hJ2)+?lic*jL!R_a2f|LA|7Nie@<{N>X9K6;rf{Fvdcd z;dBIt7ckjas92#t-RD;!NHFWCg;a)udtytwr_NkR7JOUrP zR&+mg4p|1-mhdoiA|r(LUZtIt@ku-4Y#^3*c#Q+zcQgtJb%*OyzO^Qe3~8vj>y>Bt zjvxMhZas6EKnWc>8N}3eD;g#TRb^Ld%T-ZOh_IrkI1jRjYnS%vW;y2cChI4T^N#QN zCQKah$R{6R?f3>?{p{ns>*9-Kcizh@-t|qK`1Mb4+da4OsbBv?&=GCh;o2567{jSo zGgyBa!v`AKQAdef0F0av#T5C&P1|3GJ&+Z1mbYy95f4{iwYw4;A zlgTWvw8NGQFSv0c9I~yPyg`ggCc+Z*50f$pHd#ZtR#bOgjjalFnD`j@p-=2?nLYg& zZh4CfpMRQsUJ)lDhqHz-ikOTv^J#?&Led1n;fVSEj74Ku9|aUuM-WD+rXa~es#alw zh(YGq-^=CWjEv+O#!xY!sXLZ=M>bGI)Hodxs76$&R>^~>q~i~gn5H#Um18grm@gfe zkYTW->okixB2p#Ma6p;{w4E30Da9Z)GM*L=lZ}ZZO{iORH6?c`CLWW|7uagf_I5^P z2eh3fjXR3mQn`R(RHJo(Qkt@C#OpDT^|C6yg9NLy>C8Mov3ao{YiokS?x7Wdq#4n_i+>zcpL2FGCfC;0OU&H(U z?qA`()soR&_rcmW*B*Zg?JW`wY89qydrgt{olIX8`ml}8Ic(G6l%bf-SX{rv?tt4}3hp+a~#t)CA%bw|hnAzHAe+byT^7onA$a zZj-_>y8`1=lHRrd4LMn|Er>JR-UV15poZHpJSDi!?j=E;wH6NmlvtLT47b?D9bUuL zOVn^f-dkBpORXD-N4TmI@GV<|qQn&k*!hk`zNcHz6xqai9e4)qj!u!CMZ zgL5rz_maGC9bnS2w5)B7ZA(w)vFOPusAqyp83c_-p_&|93L8+xBeV&jT;Lkfljvkk zPR@8Fgr8C{oMl>y*ewv3Jla+|ZjB?&47P)+yevuMN|C04@IP$F zVWBvf!;OJrlsM}0Nby_NA|KxxOIO%gB?ZPv#%5kP4(1(MEFPtS5e|t#9Z-MyS^7k8Pwre))GZ>P9Pmo8^wSEY>KGbiG`V7);|vMDLav&*>h z0F`Z_(lMw2x4a<_OPfnuwsBq_@?uwjrokx@WgT2Z;ZR$*ODIRPgyL}Zn(T5P6~&UD z&{Vkn7qIhN=wyOkJ0%P|zq$2vUT)u z1Gl(|vmIvpF7Zn&=RyRE5-^DriDK?$w%~#gvvoVvb8J&c+a6{D0_OX;VqXMCqhrDw zSlo~>-ljqY5w2dK2gh(aMm1CN%g^z}k9~pVLi8(xJMQHEZ!LM^6Q8H9EEt0h9GgR# zT{SQqDdr0pPhfprar3}oLc{vNQ7j>^6q60bVj-0A;Q(AJe2c>++?>kBWPPj%Q^#x} zguSMd6>AW|B$kcPbS4j=2^545>*QqH*cP5iXN9Sn4n6IqljbrArJFaQqIU9N55^IJ zk%n%%5MR+Sh}hnQ%{4e&TBbE5u_E(EzXUMIWLxD>gaNFti$7%$LKK6E9QzB)IMxg@ z#aP3#l2olUaMT^_)e?F$3B^%Mf?Qe_MMn~8Mq3kx>qExJH<%pTBH0)dW&=r%>N;Fq zqmm3)?8+)qyx~b>StHi1Bh;dhq{^W>WOi$x-JL`J@WY>CxHjbeH@`|iNiDvjozEIE z-ZZJPeVh&iQH-~=7P)R!TdeEQCgjRfPjX-Pov1kC3%~Vy%%>&kctq873c;V{3-C?T*4cdUHzcXU5K}#d<(VIhjGT4aq66c;vf~|6WYN zWS~OG_p$qzP|?Wm%_}GmQR9E4VTw6%FLa*i=a6C-j^r9Nq6bi; zZB*h5PBj-jLOj4VIXYVxAz7PKTzs0(eeBCDbIryOSs9kFe%~v2{niFgef$&T%a*lK zK zU$F8z75oD>Hefol3?gBRHcn1k+xaAE1L+8s1g_c-^~+LnEESHmp{#~yg=24K8N?!_o6a3c1Z8XK0*z^fnOYQ%!0Sv#sW^W}TCyqP zP}bjNEn>I4?AYC_v9yc_0h=2!YiCYy+vX;tW5*b6trKLaY+mG!~f*a31 z$7qzU+MCk$w(v>{gYzT~)dNcSowV~H6Rb4n@d(sNdckDP7n2qa_fg?cd;s#P6qIZo zmIsio$xJohk=Z|4mlJb-4T=My)(*Gjfm+@Yf(csEs=69II)+1Gcb|v0_LAV#E1!fi zOe2(62^Fo-Yp1}(xY-q4Jx665=+OyWc_{0#e1>al^l%$J+{QHv@hDusP2TS8ig&I~ z(8)-?Z`(?qg;x^l!4`V!ykIAFE;o+Ss9+$>!s?>gME^p5Y50|1wnxw;c;uE=ydx2^;6JhdadQU&Gyham@1{`z@@kXFWn0wbq?na9mHhjr5XD%2AeA*;7ry@TK(Gyk0E9s#z!#kW zirFz-u_py%bQ_KixBEOwhv@N1oYUCF&WcT^!U#RuMh&;IhgYGk&>MFMCeRe%tdEnA zBm@T}$D->X2+^Z60tga_O0=t>Yb4+$hy@{UDpZ)EvMsSXtLCCc1Z=U7o}9*^QFhMq z!ZUpF_a0$cXpT(`fpKh%4Pmnnu0kgRT-B1DeJZe^ZFsfjR~}3JY=o)c6|^;qZnl>s;VPP z0-Cm4$t$bM@$>(~2bnD^f+VADB#*9-1rISy4-0tL+5sSH9ori$PCK?M?euPPl%>;(C^sU-LKzgLNUFRC5@N<>;7S2WxSIZPaLp znqL)RLV6mf6XCsAhw?MpMjk$AQDH2(5mhcgjrBZdWkkc@)u=EImR#K=`h-zo-Kle0`{oz+AO3lVtQ#(iGiCtaY zz`+ISCc+WSO0siz^70S-MZWQy9~Tu~YS`Wo)}-yEO>VVkA1lRtE?q$!Km*)7aHNrA zG8DttymBOwki?dSJggh*uvlvLrjAkO7!9O(%olJtg)~ES5r~UW(>bo)6c%X~!(f1r z1ADEJb|hLvYtA>IdkguwSt=t!Rf(|8cCb5xBobz75+SP9+;M$hwhWV@W?49jTHc#c zBA~Mt=F1A@6yr(6+VM@|wGpF@A=&me(P$!_fCZfRcDk~~*>a^U#=DC-ReHpj71h|e z4%L4HD;$WnEa)>%Lk(qZQ8><>-{iq}zJbXrUm*mlEalt2@14Y1#9%Pw+`XrH+1uaD z=ryl_*_5yR{-3h8Ic7KreQLL2JkA&$KM6cb5dXk0a{EUuAsMly0xE+q&P5yM%;&*wxe?p(BkSAQX`#!?X~AG`Lh=NgRcnwF6(^Z z5F(9K=T538ehg`I0b}F}p!y(WA-f#1%|L}Xf>@~M@`)gmxu{*ahVSx&2umNr{ z#Ws~Zyy+UMYvq)-ols&;AV1F-!2+TToDvXnat0L*um=~REisc*pba*^x1zO97dlT6T2;#qTzXZw}104xC=Pat7v%K^ikNp0ZDN4mS(?p?wd$onoS-FnU2xj}ZrbI;p z+-ymF>=F~*Yw zGhCBZx`}~6aHO{MVn?y(QVtmpt@jf#1NwZ)J`BlKwbw|UP?N8ZHYp$ zM6_+gs~$Yd=*%%5{k7jlDUA*S!a(uhyWfE8L?wISsf)ByT@7d6Hh zX4563WA}6JeSZgj{L=)mNsz27qZAEl<&z&6P2E}Xe)AUD+JQq8YUNX#rC3-TQDFQQ z1F>mSicX2CXj3;B<)oy$jw5|}c!VePWxXeR^fb@T!^yUj)nqVS`78(l<|Pw{sv#Mm zl;w+`d6s9MzJ>Yl!yMZlaqjLDoWK7pXV0#)erye+D>!);sv5hPiraIP%B-#;pp*6A z@HnnGz;z9J<2*Da_U4liBzj1U=l8O@*+gAQ;d)1lw{BvDXo_b8m59p(bZ#)6mtPCS0LLCvcrZsfzjK z7y07HAEBuwYa$3mE252@_SR|K;T1TxjT)a=iHT4K*ObJ^&vD0lzk_Ff_xD-MIyTlc zi`)@J;`-Eu3eyRV+!!ecIuI~0jiG53MJ2X#S)z!oVqS;>H4GGs+>wN^HWHlS+D#cJ zCIc7^V3|XyrR}#?{_VLFnt1_x`_gd?2XHVGskz24v%FPZ-8jZ0g-%6rT2)qpQnX+K zl~21G59PqiYlk*)ax8%`2Mf#2UQ5$i=6T13YYT3>=QMA7*Sn!8JSI@#7KbtsBxA|F z$kzRRD!2jGN^x%rAB^NsDugH$S9n{?XKyboEI)Vjr!v!84e;& z9#1)Y*ICZpbDA^fMr>?k1d~kxDXR)sRao1i!U1-9h>8d3jT6G%KfEG}xpaan=h$k2 zE2ijVU1Z+rCbT)-)yKdL2u|FOUEEp$sVW@!+StfLZyO@LBwO5loO3w+^YpJz6=oY)MA19?~$xnp}%cINp~ z5pA9nx@|Op!J4cv^F3TX$1M-Y#shBumN)XuCqD0ycPMj6BL&J4M~d0fu`J=(8q~ES zOP#oscaWtpTf%JNNMcAsO@|nT^znn8l`f$u;c)6$=8EAECToyYaBwJpmzP4>jw8ph zEyZ*Wi@Z0y5&l5aiY~=D#lUBO#IYz`t6Hq}mW5o`I1!#sUP@a&jNmZ0eB(k%UR(BN z4TtlFrW4?DIWM_)IKYwOY$X7nZc#>J-(9hXD-O_u4NqqdJy{QwjeXXqbh^$qP?b_7 zw8SXVJ5BYTBEkQMw*L;-?YioF@z0!dwYTniy3SFvs^uzoV=VWAZEUb?0|so0Lx)@v z5=fCqZp=*xA^F`DiU}n5+6Ea67>o-B}IA zfaf*Vp|nEd8LWl&q2c(WU!(lMS6E#iaNxj@tFArD zW!GQAp`)9O_l?A8V>yBT0Xzxz{QXdg$OjeUrxyhnYHG~Jr84XFHu1ZU2-?4SwTQ76 z7wGiSia^k6@a3+wlSxmcyJ;r8h&mUSBFx?xqqKA)*+?Y4)eO86@ln0RTQ7g7$klCAbHa1vXM*V1Ik0Y6=ALB*UO9HB6{j!O%yP@Jw31$J#o#A4iY(SBqiIUb!Oav!2`Z6m6%S=x=;xG%w1Lg^$N3{D)(b&a8|x|-7r{78I2MyOiH=HND{G8N>+Rd z(m_JpPq5ze@FTn2_0_Y)(HGg+$hhS4gB&?L;_9bAfrD42^f`xF89;Ig6a_Bd!7eTe zcVPcjVk**Gh3$v%)e>{~N%+}0oE2uKGO^6;-r|di%>A|&`!cQZ!RO7_b96SA_oO3< z604R_&G1c)UO6DwBT9rNTFpR3C=}jR!iuyNiY3$I5Apdw_$-SY)>k5ol6kvvBIjNk z$_OY#OiSYoCzk$itaQP0K*WZAOdpz=|A0v$nCKA(^$ja#>?%%>k z@QBLOL}8TnLI8@q$7{v*uA{7Ab*xB`)nby!R->+A&=XavQZgE#U}If8G3GNFQHu(S zLIQc$Ry9@WSu6#Z91a!HKs+rxVM}86{3jniTXAlyVrSkk&mDPb@kl6b94Y##p|-xu zgs{$I@K~olWGo8jCTsk8PmxkJafW~RLJ{DV=X*|I=oIBx&))U3`r;Bf#ho<(|}eA=TVDA z?s}V-ZUE!9Q-F;tdu6mvQ55JTp{{KgC2x!hz^GscWg&kS$Fh1%Q$v2XA?LJMgfX&G^iDbnuUZoXVMsO# zuMBE@fYFg-#Ha40*Gs7?OKqhMuWPp#XWm#GA{|}b9HNjUr?1_0iaT$&eEcK#u(sJ} z|Gqv)ufK+?u3G2dC2Pc{K_9*x1_$sLPe3xl?VNzRAiCtq_=^w7!>J8kMPX;`MR-#z z1b67K;k9&EI_^tYX*L#?rFYU1)H&31+~T5)9Z_Fyrsc)379D^#_;Mz^2QO6T*(3LH z`vWDJqYzWb@#?@DWPE*RaUPqmb;(ICRKsW6fmd*qwR$smQ_eQVeRd zM0Nfm#=!m!#nuj-JMS6xy-=uy(t$+^iLX6cdsfDpW#O@vB1sj>c$S59h! zilX7ng`AUT7TkXOS&~$^`WVLTphtZeUxmML92e4&P_fvG zmviAHI19a1RGi4~iACOv%;hRs3B7ID%+xah{H#NbSLAwCQ(T~KdoK>}C^kf%N3jn!_lmL<@t?KQQ71!BzVt$9vI0OSu{cUepowBT z6o>he;D#-UV`b$jN+CJTbFt!&jC4CL4vFwufK%l)RynlsoVZYPVOKhVMcyFXMcJSk ztw@c0=F(ydrXhL?u#NCBJP;`fB9@a`Gh8(sy!;Y~SJC|hWpjCeXXiwm=4&YqCJpxU z188#Ga!Xd)SzkhwqgW2hV7G=32c8x4V(%JgYINMgHkR3}?2@XK(Ug@0BdZWqST(kL zCfi6vqjkr$Y_Tb;J#~0ai>mScL8_KJ=k5m{42&WGe*3_1_K&^NtKQ2{lUEH<_`xB$ z8vv(ZSvDlGp{gyaR*=!fdhZ2ZhVa=aW^&=87+}~c?3j$S#suChzN?VJaI^uK2_R%^ zb?qDWTyR~Ow^i6=Jci>C_t|&(F~KgiLPfgsiinjWOIqNvb!gs8ziM;&Twqovv4+^7 zl&B$hW{wMAInC`~c$oemV{@a&(W5I|_JnIWcG(%$H-|(kBiR}NZu>N@kr6`0eYsg| zDQiPzAnHl3P%qHgNLE$0L=X1|rDny>JzwSa4}O7pA-?~E zOfKKD5HgT5iZ~VKUmQuIbk%sYHd2%?+z%`1bt-fK0Khg$L_t)C#FnhC#51v&ixe58 zK-DEGO7Tm@$`#jO8_%gf`x8LIbm~fiO8R}Nbx9`8(K45np=%(`JdqWozt{7`wJey5 zQUK6FKcs;dQuO0UYV0icq>*A{9JUq<(I2d?z_~5Q*`11IX*qqNVs}=7l2xYGQe=#h zFyY!c%D~=DBGC-QD&$LqN5}eLp{}GuuAM~5m1V{HC9Cw;R>36bbO>riV(@G!Jd=DT z9c!Ef6IzE#2I%oop|95q{QQE9jd6-jdUR`grNgRTi)(cfp?U*~3tP-)O&4w?Dd6&% z?nTV2E+~c|a`eId%%HopDC<1EG?IWMr`+L7R?KRB&*zj<5BSFf%wD_yhG(t2-}!S3 zLtQsj09Q0gq`Rt;7){aGphOe0lM4QGCenDM0_*UD<4EJOl>EYJnC}W@xHX!vwLAn$ zNn4B&9)fUU!$Th)kSN_-TT1N?gr|m3foS>SN;zm82d}=0EY{?uB{7ghTBM`lJNPhD z;f0b-6pBGe*@=VtOoh6m1A>bOmuP%H!F$iCb2%qYFZj%7PLL&r)r}!nTy>DEo_GcO zHzPI=t`eRB2r~l| z1-tj$!CikWJcKM&j8d8JCkxrL$BBST0JuO$zlo9!fr%x4E{P#uH2C2`slgW?L9ZPa zdodLY(Wab3e_aejy%!_YaGI@Ob3Iyn?*G7_(!?=?z9NYP%v$C^8N^gZk>}ERR*l%l z6-y;r2`{aGmI7WvXq1LHQB;LzS;Fc_u1gV2ZeVJp^lvBEiU6qVf1E#+4d&S2P&@!nI`0Z-GyQz*-Z!-rSESX?nf$H6y6tL6jX5oysv2w6lQIm{Tqt=}Ii4L+g#-M$ot3 zdrAozLWg-PxEzJ`M$2N6f}ujE;Jx&y-icnpIaoS253jSfF=k#^(j>6OXd|=eMh2@L zMQJ;ae68ibMu}mHTn{0^h+$@!FO`6*qkc?n9oEOx&U5PQoJUXG!>2!SFN1!Imd0EV)gRNxcVi}=Fva<6h)Z;n!1*MmZbs=WRd5Q^PZKF z5}sBqO3THfH472<>_G+tqd<$sp*IjR()n%6qO_dbt~tM5GRuWG5NQ?00!I?dX;{^k zEDoVWUQ*0t9p}U9kH8!Z85@B`SU0ZI6m*BkV-AEYGx(UJ&>5hcp$+zQ6>imJ`kV)6yD1!ap(LFb!~~A$9kbAw^Aa{ zUSV+Fp^c^=$vtn{amdM|)r3w$D@BrOs?suC-5^~*mMf)X8o5QF{!i_mJpP+2Q^*2c;UF9fPMEDSTNIZ64(EYcA!EFWw7D6wq`5POTI2 zN7V@Es6)U8wChwa>rzO?G@z0SZapxvo*NP;T_`JjW zg7b7=7>G?HF5b>L5*l=(QA()xMdjGqZ8&kh=Ir@g)`UevoEUnEwESso!XYh~M7xWR zV-BI=U6SQo7#$((fGY zjR)kDLM5>Ydrj%mBLhYmqTq(ySWjJBv>28!Tk-|G^DH|tyUg!3TWG{`wO{2P|rU~k`*l3(K zSU{_kdG2`Vp^H57&;>sECwGB@>#sk|OJ8vf>E=Othc?h@Dy!9e62e&;d=plyQ6?M- z=TQBGoxAVgs~`9@pebuf!pdSfK_&~w>QJMNVls2=TNmAZFH%$u^fI9zHVdA%rs%;&_Pb0p77Z(USyg(F7B4pjSG?K5JifWQG$0+)^Zrc zk&#?et?|y0#)c|rcZ#yDjG=_U<>(u5vc3Xf#5AuR)F%F&Qbs+K}jk_B}n9AQ-%mKF~r$A zzm4;vz?4Hsg~K@v)Zrj*!<0=RGBu3{6J$r72vG_`l0@Xw(p_=GwF%kbbpUR@xdR#* zT>9iAQGbQ{!j#BlT_|fD3+UrLpahVE&`NoE*s98PZm>!zl0+)F3o}hwdrm%hmMbGI z54k3Qhoy7^o$IZoi|}rRP%Z)!cIH~i-}jy_*;9w&;M=joqqGIDx$Mc;6TSO`I4`G4 zs}5C4(X?i%kGW~W^#bp^G06En@TLVJjaFny+_jcbBrR@P*}%`xG}cizt}7x&DSEwF z5`2^*FB;0qq82mm`O`1cD8q1V!05ml|onPUu z_kR)-CtXIwuqSRrW$hXDv`Bp&tgeXH<8 zxUEOKBrD;R1m>cN1oru$ij;Ri7U4^uzaV)KA zQ#Rt3Q(G?C>~ri;AFULb@sztubUEk5S07<@6fs;MqK5-EFWFCa@EB=Nqt_0wbLjg&n9)5XVlbEze9BGQO=}t!PJau?TWvwXZ zNtQ-Lkrd*pvfZr|$L-2lKCorD_DVsPm;ksrin5_@G>g2E(ByV?se|>oMm9IvaqW%Q z!NIFxG8bFDwi|F^_u4eVO!Wv=Jc@*|8pXmvX^-|Mtf;*LE$L_yR^14>sj2bx0@d>r zCm!O&i7g3N_A<`bg>(ZgUJ@Hwqn3?mN=&E*X>3BrFP(3sHHp#mjiI*MkH@L@O?3kJ zj1L1()b$fl|Bnto?y{fw(r3TwF)2z3@@~U=u5KJv*hi<45%4G#@x^>mlO#rR29VU- zs+JF@*NfTQ956Y*3zIE$9QdXl@CEqR@iuG{v}sEq9W7K!KCLOPyyCE@YB>yA3z`xH z8LlcxHV<(0afkWRXYM6VB5dVoa70F^qRzHZgr^B}mUndcf^<5%>k@>mCzaM{Iq~Zt zJw?&Qfw#MGjlu-AURhhblU;gCn0fqVeNqFpv+T@0Ya>Iy7g2fP?oTc(U~9_q)M>oA zo8B`vuz_t%brrI{oRIlkY{ur>pat(y-s5L;p7+)_@|8dT3OmyV=RJddOi|jf36k43 zjg7R%p#!TLOI2B++AHbYlEhFqPQp%t2S`7YQP0x?jnK=Ykl`Z5!+Sy`o1zKKKtUfB zX=1qIaci)17UiPg+?+~>V8elilkqrYPpGC8p2|Y#&qTqvC(Z<`NySc2)wxu%YSA5T z-dU8(Id|d$wr=QUX$Y1Lk4o4q)Qt=7Nzem>WU^C+cMKrG~I+&}z;!uSf0@{7D?ds48-n}FKNS}!u1qLxINs&QEF>GvYEQY`X@ zyl7AgR)#5?s~NpigiWVUUSN6pgvgOQ{6K-W0VfDWK&R4z=>R5b-5%AUP_#XM(_K88 zAS|K=UrT#tEhH(|KI=)))Y4ue71Vo=3M;CrveH3lq>9EGr6nIC(wZpDo!ZE$qO{zU zEwB?uQUq%2Xc+_t+a-;k6t}04{|<%!F~aXt14t06sXYwRNR+t#pJhmShJH@w_*@lKJkGB#tOb+kFmIpxalC z6Q*7xpIx^R3Y#M9U^=UWfTZ@EisGOuOit!+pPYdT8+nZsqw8x0Z${a6Z2tZ~k9 z@X(lzD~>@?po%TnJ&vE8$4}3~^6XT+%6peA&CMnqewq>#~%>ePC6iypkC+ zY#odipeacdvxO)Yhdmh~eArl!3{m}!kO8T1(^E2A7ju|hkUOe35=r*#oZt@qHKF%f z3nsyrbLek~M@6}y+`7olmp;wCzw(PHH$5YweNixi}~5OeNQnWGr1oZ8z+(vaZdE(-$}*dk{>ae{H|kA)PAOIV*`M8Nlu}-M@72%#EY8-oxL4EkF4dt&r3U)EApwIWLmy(~g084+4DmSI0;V=WU~?9wt{)Z~TCf&@6A zsuid1x;t3pv=4f?AygyeghXr?2(|z+g59z_740^=C)YbUqg4N59 za{0BFp}i$dqtKwJ;76&tWUR)zP~7CC#)o;0u4yQ<=q2Jypb-XOQ6i4RanKpmO99CG`_ZGr=yV`$ zZ?(kbJNSt>Lz5(^(Lvng41Rf0PP0fhLn=z4nxKaJuzJAc%ns3Lor_<&lLy}Y4pgco zNJdAJJlzy~Ydej!FpWiz*LckjzKKXR6qO@Q3{h-Y=CzppSlJXf??V@%CF=p{#PEoN zShyv!#9)GAu(tC32EAB9h_s?88;Y_aiUcHsjoVXSlE$N03P4d>7J0*LQM1V9y)=Qq)Q-0zijpTTO$=E-#uf{A;@%Umm`UW9Z#M^_IA|AEHA?0)oQw!wOK4~tv(*~F zHjO9wUqYDi6IHb;H^dV20Z>*kLSKS9}L9+urimmnuzvd8KX!N4PJ@TQ)#Rh zPD5;rsQsL$u~zUb&f~NzPvdlU}M@tuU-=3=@W6x_B-G`-lV8z zPQG=X<*Y=fDgE(~3t##&Y5We3zVUnUm7MrED@EO;@|hg;W#wm-UMkBre){5vZjWw|nMPOM;k=F*Sb0{U)Lu)3SB}P7bYdd@*OC#yz zYD?W%vNZ0tMuL$w9NO3C$k7#i)u56X6=iaL2-`6gWbR&Axk?#GH)O)~NC(iAvfi{6 z%u6|KTHQ}JM)h<6Axm79qg~F02TpSK^fqyt5=Rn?*x?*NY2~3;0Tpk#3uR?H65$fM zF(QgWQSrF(N-v7y;w13v;rz1@1W`9%afMb&)!zF@E_vcJ^q0Q$uIA{a`*qV;@?2)F zD3XpK%LEgsYD-zkNoe#Qh151K%jL3(T_VoI&TnfIf31mbfko;Ng&bajJ%OjTK;D8f1y9&YJa)7XesC49bND@h!>3mYDq7L~W5 z%d0}-azBe@m0StHSmVgDh$64J?kU$3?K_BFEYWd4a7H2#ZD=F+Zo2_%w+go1jyWlM zP6_6c4&*h~g?MW;g+$ydh1ZFQgU` z(S&tiU@t19^0vDhXN5(VjpYt*S3pJw1!W*FwcLleC%=r?n|rSrU3)!OUVn@-Z~YbI zq^TQOsm77)b!|8q%1YX=mP;l1HBv+(qv@q`O4nAlEJfJ_4#OVUQ-|$KD`Q0|o_h6| zEYV!pb}W~k1{n4PG_=9h2c>8hbM`;&*=)Y@yYXcZ@IEGmI9l5vT3tukhJH^`*PdZt zcn8h})LFNVM&eM^STQOwS~eE3Q6#abC94LZS4ToaceAtj$!V~al?cgd^PLs6r#^fyMF`s|lE{#(B)Zzt)=1EPaKtt#Y{ zjZ)lfo8e_gc*VEBjB+790%c{H&PyQ}h0)I#-O-oJki@))B?NzgKy-@r9_ZFM*L_}T zXv5n$cHyB&hg=k*oq6g_PlCY)dVE+U?mFD7t`KvTx&SBM2;EmpY;pk)YuA=_kV(fq zky-aQI{lBbm4Lgmi*Vr~9{A#&42Bt_e#{_?h!f4QAJfkyj;<^%O2MEXvocB;4`Pzo z1XZWpPsT_`I~pVmdof93sH(=VuJ(MEM86Cy-}8o>wNmOaMFG^${;cG1T=&v%x>hN# zqDZSOkt$Qya=~W{v6wc2Yv7!xYGl4k6VrJqNVtp;N(ilsQl6r6-1phr!%q#sB5e^! zLi^QTQ59ZZC=5-t_lMp;=HEurAETvex8x>QBerEZpm@rQpGjhb=2`{ZAPIz~_H_4v zcfxpUISeg}GYV`hYdvLS!~2%MBO^s1Lm?XttyOrA1ufpUnsCjr9*aVVCSDN$K*18? zAX=Ji%^2VK0uFxjTkw??Er(LlP5{1Xz@#Jxk6~-6{Beq`Kb83ZJ1;3mJ2R0GTPur% zK@WB&a>-&NmSj;Bx|5ZIFglDHZHj4YzJuF-R90m1P*j>aLyZohw8l-&Nb+(z5@+kl z8EED(-bYsAoE#CFB1l1UNkJ1b;nnTq97teUR4l$9JnMP2rAn##=G%U#{S@T!R7$zqZob(7+gY~qOKYn` z7K_?RT9oge!#Fnd(`L^Lhx8Pt+ZeOwEgRBSbkb^*q2nIdh{rwuCid-LXF4zF^<#Qj ztGj564Bc$z5vG`+(xPdoo$G3rLB@`vXo7jBT#KS?XliNgyc6-2F`77uxZ&~Q{D(OkrFg+zdI}R;#wkCnL z%N+>^&JyU2@$)GtMX_@cY)xdu^AH7j<(V!$nQ^GzkUKx}Mb7-rJ5Z6qt60*J;#A(B zcMxTG9}%r>@-08~1|nZkH+w!9#t3#0g|%DV2r{p=bY073Ls?54!61v|fj4r39k^|IiO9rBu1` z^yh4EUU4nea_Ji@NOoIM+qERni7rsSdrr}G5p;DUr)L~#veb|znk0)k`S5wR9(q_j z39Xe`%OW^IOZjX^yRPN$TxqNxP~+VFpYwhk&a}mQZ1mEF+6e^ z=_tin%QBbG04JBHEah_<^%YyYLSRZFm@mL0o`@i3t7+^}NrIl9#P6O7E$teZ4Aozi zI6kdqMOjUyMMk5tHR&jpTY}&8R^;=`ci4XTWH9GZ>@K9(XTgR&uRJR~hw2ab>Ysdp zhu-UIO=x$^RLu6_2kuvns0Bq>~@4N3Ist%&43 z?xWHbxgK#}Rv3&xj<4w!5i873AIhz`e- zl>(#CP&GW^70+ip?y*=@c!DXd75&D1QFREd3zY3DP)`9|0BRORjrCsEI*AByioynU zUdYF2M4U4krFiGqw<2PweXEM`2$YwZ-b8{`OfF2h`kTL*eXsZq{A5Sk@YeXG9UaQK z%$eGN>7!Qm)8BW1d|6X_p}Ec$V%v@KI17t~r))ff6!Jx=FO7^XgDlv0>ELG&4{(#y z5^}3l$S}xIQ6DwfC&n(*Gx*6#iMubR!fl9B{BjC3sL=*)w#&|=rzo2!_z`%~W@vF> zZY)#{to1yqH{^jo{}T7V^H;!lyo!QzaVno*%Qx|gSHA5{Y^Kqx#>xymtKX7MyMnS zGUrr`Xtb6hSxp3lHIbw}MVZ(LW@|85k^41_lCnXP(N;x9ZsBAoTeRS4u6qM8V~#&? zj=?acpUJ_R#)d325_MNL%$H3UCEpf}wzH2S(SJm-X3&c}+^nc9JCodvR@c;c-`Z~h zkKT4OMk)0_b_$RA$}fG|^OjlUy!Wc}e*HP&IvTwN*;zNlLFwaj1a9(p|xW3F6h(yUglUNQa;Rr8SYAasBIF%h6Z88FtR02=v63 zq$Mb$ywBkVUIoYAjs5Ju=5bV|C5=VNnWY+yB90ZqzI;A|o}#H0c_sCvv7UY=9gtXI zDzeB@EpxQ8!p^g$jBZ-Xwe>(e5)1mez|GF%itSJs`rw@~9g_jhTHIoSF`B$^3{p*F zMUN6`c^iv`XIXj%sb{n{F= zoz_MOSVh@TRTkx8&`-LD#6&X6&XzUHq9#kDK=26?`o?wLp3*SvMiF{tw5^uw}u-tzp7F|nC*1N^cM3`=ciU|@Yo*kKYnNX7$A>SwT>HARRU@s55SI*I3t%IHCooYk z$!J6sSd_w95PGSRkpnPF9CBAydYpaqEZg^dP0T4xI32Wxd`D1i<%O5vkc-sPp6JDc^ID#q`4y+pZhi3oNf&G0$s? zU{7bXqNs%lC*8f07SxMbZR-ZS$QurA^tk3&pE%y5LoW+?#*11p-=1>l<=@K2OW%Z_ zTp*PEP(6&iFR!G7(h;tzP+5u|X59aK@8b{N{VAeeLKaCG(?%Zj;XpPFLXJ`_a{)6| z;DZ%qm`DQHSzARi=!4g|a*8i@ahp7M;# z8LvgyQ+LD83H)L=5U&Q(1sI{?tEh*{R)bPf$XP1x;dLY-SjqA*W!X}nwY5ioH ztD`qO$^eU+5HWzWFxiy;q~_UOZUczg`z*t(B4!NQe{R;WoOXmo9TF z^w8SjorfSjbzbK078|UsWtle=rDZZLdEj$jg8ooi#=4L-jEbN)mhPab_fE?wkwVZ~ zW2+d{K=}ED8^~7S@4G!<&bJSkLMekUW(=>nh9^GfNz}`N@i4_&N8`oxvaW;iEV404 zW5cp+aNg0+gzjBcR^HcRzM5cZKkOyM!Sl~K&-IrL=p~9IQN)P^r-*~DM%8nUyz+Id zzTi#x>8^B5UC=J_BpIMs;ugE|&~I+C{qQ5a=O6zZzkchl@})1IBuWH4Q%b^$q6iiX zn9V(dp3LxG%f_#)1sF*)c{t|_1hsD(tdCJ?ALTu6wv8_r__~mln_Ws_iu(|)prcgM zt)ff=Cqk-H_)hv9MPk4zeg+nm4LS4qFLC@g ze_41yCbZUR50xbNrXfAFpI5#0Rh07u#+c4g3j`Oc8#yHb=6Q`ViqRm!hR>^?#VBA| zG+p8FKv7wWuu^Xt$JvWZhNFzA`rvfUvHD#tP#v z8FYkO)mugNH&Md_K_#h$4z3KCG~g0_T)lv5A)>G4l)FFoHIg(H9z|(c7MA(4X0oWr z%a)rVTAnz#^;MO0=O8?q*3R8|8Iy$mZ0H&9uYCIRw%VifFV}&;JU)b7W%M5}ecCrJ zBVYMAj(k-MKfk@%8|!K89y?W=U`zs?553WW?i=XCbs$xE@39!}`pj3Mn4{_??WTY@ z6Tbx;yunQ@FVO^&YcDEukb~ z)rgn&Dvo4(uqbM@hJG4T*N(iDO@PrF753mLMG{A>4AS793uWy%xSn#^{**W-xCDEu zTI|%De8#bty@~@bem#D=Ed{{^ze*pfC^0@?;FUtJtx**@fA$~V!GHLBxANIf-iPY- ziPD(enI+GWYyd6p;q#?uG!iyr6Q&W3M7+fz0H$d`snGT52pt8G%OnCkR5{dTNFr9U zi?5b4A16b!Nd#Swg=nM7ZJNn~b7y8Kt$5(%f)9ORi$~9wfcQDg3rNHD5E_RkFD0(s zHx{1_x&Px|;*sC{Rp}yCBsW<+K*uS5QEDHD- zO;I+ij>5xL+pZ{;m1U9F46=w`BKJ+zh-j|NE1vw+V+=M@{Bj}S;OY_7`Z3WhD2<;6 z%JR->xle}&B=lGr0fZwlZN=stom(XX)aU?ucrY*-Q{jj7H_)Sl;smW6+xOnfBM+WO zM}{OMKG{~=5R1rev1pjgD;7m9u4e@AgfP^5L^Ku0rZa360b1h@9XqUt$FBaGiQ*3c zDAk&s{?$dn1rpPJ`yY4BS69|nbzRm@2d#j$GIvFhB1=Scp+ifpee1#`W|u7>)Q%C6 z5xu(t27?|a?mx-JJHLV&uE>Wk5<xbP|-YR_=G3(l;___FR_J@GAczzG3Y1s zvxt6bnCBIBZSg32iQz@h7^94*sHBMEp_eHVzu@qTzKQ)W`c_y@P)**Y3JG~Z@(W#4 zp!z*jFXPVl{W1Uf2XEmI|DO-BYz!+aJ?ctk=+hS}lvYfZPTZMm>AJH-*o_{M%+3~G zbQVs;R!Il_a+$k6dvszgS80SsA57v1Vsl zbb>yyzmNk>D-rQkjic9#&{$sb>Zh`HvsjQuEiqbye+0WdDe(k+e@Wplq{6Fm! z@cyHb_g1lb#V=j`%;%LhU)U~PI;j8J_ZLM> z!Fa$|KY2UN)zvlKY zKf-w5Drsi0))FVJz(=s2b6X`j^ZYRGF{QZ39h(Sflvd z*LL~6PhQ}`vt_rjiHxi$Jz+F=;GHF19r3^?KF^8Y|9?<}zTj0#3YM=tH@)@s967Rz z37f9kI^5B>6=b`(~q9Wn;C@-UqwW9OTN=Do?X&uyq;4b)+v?j{)rO*JH+6D|q(DU(1 zKN?=~q;tS;Nol|FFN_X9AuqoP2bf2R`*h==X#2s~r!*2+;Z?DClh5q|Aik5cmk~ldFQk zMazmbiR2f=X`q(Qz&ddY$}Km(@zq>$^$}*%oIDp}S22-kx={h3--{Uyq)07`Mm`WN z?OYNJSISzp6VJMSL{UnoSybZPu%6C2^pe-H{_^j_FK1y?2q%DZxW=JY)&b8Q|IdHt zKfmo~_`q!+N2Pt%)&}4lb>)I!$9Jq?r4)3Otul<2it)5mfq@!hd%mg&VArLsL=o) z#!ufg^sl^@m%Q=C_%dfS%BXAEd>O6jWwES4BTdyg3)K zjD@`?369rAEhEQ#*|4)U$IM_Y06yU2Gy?%gK{=m0UFP21!{M`An3gd*L z$Q#DPge)~o=Oua3usX`98`o+3+nigi3{QC6h*96LD8+Xnjueqyu2sZG}fZ@d^I(TmL?{{kwN@eye12|Ei3ofjQa=fT~K^l~J_kaU1^OvU)RLPv_}1NZZ_FWtw% z11t0cX|Sps(?!{ls#=3uABbH>DSAmnKZ{6WBLX}G_iC{$trSWtA8YHcfA%xCiS~b7 zsn+i7fBgEZ$V+mMD^*APuluuWpZ>IoEeq$otdDz{Axm|)7xrOS+%n9vM2Jc);L#dJ zHnlj$2p3(r+NK#GJ5ctHsNl)q#4Muyf67rkd5U~56g z@glL-tpG~|MLO-{=LN@J`~q(Jre`wSnbCOu!fW4L@8P^>XHpOu!}>}_UewgJ6D67# zvl*>5n=2{TT#`{%o?Ze~Wti{GIrx&-vHtwm;U`-G*>_maXO$33htyx7sQ}mKRhi-&v37%*$;A_ACM?Ctz+fd`7 zbToB^8jN}654;IOMbS9YSk`cLV=+n`u$tNv$0j&9$p$HkG^?YOBDfi8tymexyy`n& zj88Yvy$vvl7^y7J3qYt-R6Lf0##wy6Ej}N*hg!b^wQ^8Kg=&tQoW<{)ki*Cr)XF9* z9^&Wc!~xrcnEBoavH`xo3jG0heEfE%vpQ_iMSs!DB3X^+(&4nwT4Tj`(s@r&HMABB zy|w=k!-XnX4pbYZ7NYtOP!T%0)iX&@yv z(1wMSl@yD9CeiU_Et{moNVWmf)56v>v5YoNaI}gte3c8A#Cxdb_-clV267t45iIAN zc<=;hBZQf7vl=ZcwArE}OQUcDi_Kk&KMi^jTe~Hnxo5%`?w?ZDj$vODMKbdXLCK?% z0eAlX2RZ)xzlG`##OQT0;m~uR&(mM{G|JgRlG}_XOC$19TJP~F!DvlcH=S!!UWi9y zmKaQI*x8!%>YJaz#uW$f^KFzd=>C4xa33@^Zgv4*&mc}wy-o31%y;D)m*xF~2A>bK5{RK#dRLt;O%2lr01r;vRaqPE#3f|H31rX(9_3C!M!-jwCUx zjZ=9aVe15<(P-uVRc*UYJ~m>DUsg@P!!+e`;jVr1lR5abZ~QcH9^Rw>s?p(pS`_3j z->QH!N1ybx-#B{tB~?>YJ}*VjUe&UF5EBRCRF|~?i70VHP7(=^X}fyqENo}6>AlRl zy-}aLK6N{b;}4*F0Z?kgV+mlQ4!@4qP zDohd{)Q0{g$M}{X`!?$N9AhGe{g}m~!dcJiC_`(QE=t+?h7=*^JgdVLh2r3P%;T@h zuvW$@o6kA;;%{c-g*U@|3R>aH1*+FWk4N112k+;X-uhGg_AkAc-6gDUj!7a(lxlqk zlQIrjuGDbF5XUvRzl~!IB8hsk^+^*Dj1y#*jNWnNgOFc@;J(S#(j;^p0bv0 zgj;N*vJohQx0RTxMhPk&2>n(^;FSPxwn8NXOx9y^W}CC8W@1zucr3$yf^B@@uqfus zsuQ2ZMh=J~h{y*02%{9|w@W^E-;DcD<=}kqnUG~t<2{4%kO%(gLp=I>zlj^S5Z}_TC2>yMio{7D+Z@Ixrs{RbKJTXI;)yzxl#7x3K4wm zlV9Ta1LsjjGtX<3RvnmKR+h#=zZbDGN*H8OkP%o2_d^ny&LBq4QcoJ0_MrAzq}7#A zy5T{Rjdu$%=H|b$ApB2@f_&YIQfkS@Oj#}Jq(_z=nVe367 zU8Mx^O~(Q>Mp=+o2a;42gb2=}ZHe1D&o$rrdS3FaH&M;zEK8}nqhUf(i9SCK?67v# zGae=^3&|09>Qw`9vU7LUf&(vj1*^}0BUBYmNjQieuW<3+dwJK7{ZoGZpZzC}KfJ}- zzBSTB@P!uaN)k!+k+rVyJYmE1_Z1ZodS?8HmK7IM8i-bjUxG6BY#LXxPXL}bYwKg>t#e92n&>W*u_cU{AiSs_ zYkTDhA4rI~3I(IA1Vt9#0Z-EJ@%ayZmio*YRF;O8H>?zW11gnOBZLtlNKTar{`#f# z%Sk^Jg4I0`($!KlOe8Rcvw}wuQhU(oxQ}lVUiHs@lA~7~V!0?-Tj_}vT^NOI+ZjcM z@gTuEPhESixg_JzK0{f0%K3u*FM2KOFZwpzdV5nI&FJ&PBVv zmDeZ_Us+k!S28?`vTR5qLs^NVlny6i3lIt=!7+28 zdV-s7p$4OH& z2xiZ^%ZCx5TFAp4g_PcUDY$_xgLRvgb!43EtveO+=gx_$G8)Lg&!_0Y8sB!y53wX+!rP_36@p;b;=Vf` zChN=T*11@R*K3_4PGnR_V$F0>1&e&?ChFROmY|mQfYC}cCXt58qT#b&n{fPmA;m1# z;uzH%^3WfBkN~kjPQR0X_}l0#MXzk|itm3Tsjo1Rc?>WsTbf~CL_*7=W-v&YY|psq z)z9LI-|`CF?k-GD;4eNT4|XNu*gB#(_cBf@1=1#o-}n13hiya3654|5dg9ENYGk7 zgkmBU7(`L2)SerVwSxY7Cx1Uqf`LE)E_JYJYsw&=(w)T_O@)dg+;qzR=iJ0=e)!Ea zi#bWSQH@cI2MOA!5S}Ycvd3RJVwebqdHJ_}FB{K&1=tF+vCgT_e4Jl>%TMsGxBpj8 zot?Aq;3^(@Xq*?4lvuHai1Z+PZDY<%P_{Yf#)mXevL)wIx zI^YT-xfNQm2S$CdNQ*UOu}8&5yiInFqX+wN^NXQa7<7~d&2=TMwT@6tf$FcJnkmcE zkMPJt7wGrWz*HCRN^CSuEn%eKwX&f%2$yfag^AsqKLY-6jdWU4J|l<38ukyV9Y{L zJvtHb;e|NYW^PJqc34yPV&?PQZywwq?YsUd?@~&A@>V(U?cb#+_?vHjj|0wL@#1ei zcj(w5Q`fa}L8_XBo3tpK4h-vMhLuqw@n^L#7+oM$w3bor!=O>*!LvR|Beu^^xZ@8$ zgc@X$WZnAb>ogcugchxw2#YLg1yrSYF$5Q9NtaU6T|{BVD<)xFAP7-{>8mS|eY`?P z2Dh`zlfU~rc-iZp&+fS$(lllmTz>Ps>9Qyau}A8uYAc2>fppRafXc}uvvj1}gsI20ex49* zCnS}{qLSpiphNLifVF-q7+7A3({tT`^}>ELT5R^BG{HM7v2iPhu;=eb4K{_a(}Wm$ z6N?1cJA75baFs{z{3_E$)wR4yVsNhAl9&)VD8#NfY)t9&h-`n=wg(zwm%Kg=g!imBT_jQVM_ZLCLj9SA=xbI(;QWq0%UzHw+y?4?Pmx z!Obq<%WWwRHjKZvlr9T}D<=4Qi9+MI&+(`4{TOMlkEVT~g~Ghd#XzO8GJ^F|86R3o zeiW<%wN~ixdz4@bcriUvTKmLT{>d+TS>C_mx%c04%PpE)Z~9+7^M8F&P)d2;bDO^P z)?2IbrBD19$DZ`m^G%uiIEsAhR^z=GKNzhT4&y*OwO!VMQi`T_5+Z|)5xvZa^`aHa z>Nrvupf?=wncx3o%2TIMy^uTTgH=`7@ng$Sfst_`3ZsFm0{9inziHib=NF;am0s2a z{{<6_SXyg%t!RB0v{$%g%}f8;KjvxAeLVSmN#&#!lUdG_L=jKCG9xpVOJ4UD`pF zH4`BVYyu3w;qyWFy1GaRUMMj z+LOqp#YfF4N1258QH@}GT6CV8Z7di3ZMY3K(-MG+I>wwA0 zXK9q8t{lsv!8*a=veb0sK4WAZ*`}5`A3Q9zqN*CdvbJKbef|qS2)yT30B-tgyM+H` zQ2^lPo87Iq{;UV?ee!F+V>#-lS|q9ACWth>ERqMkk@XnRbq9@gq^aouI}i{k3bxbj z42ky)`U&UG?DFTo^?Rt56#<#xxA92aCb#}Jr5+kn_Wdm0niaE9chu-+3jGp^VJpBIO z;g{d?y-mQ%7348T2xiU@b-v2=!{mpmqyzl=m*7vR88jJT5 zfKt_tYMyiRTfcz=kK4qaJq^okd@&JDL0#Z?9);zW;8NL0WYXDCQkxcAkgdZ|ycLvp zq9U!PV!mp`h(`5R1*xiNnjK!CF7EFj@o&u#nL_bIZt;-ZhF)GN~tNg-uhS4n*YW{LB7dt z`p@9}p=ZAO-(UBvXV%l*iA$1*m0`>>@yu&nI~(mqt9hi; zuj(2fXMFm1|Ag6BJ}01KGNem=N-}xiTf+|2JiimALYON#Lsij zz2{gvxJFqws8A5KQXRp>XbDIaQxQ=^#$oGF*H*4!_+Z0zm+m6)JzCJvdGQ~x&IQ0w zlC7Qd5*b$SrC@6Xi=`9SDJ8&StAQvhj}F*SKLM4FQT=bP@MNx}2Sh&GOsw=oriRx808c4sAbJ-p=eU)#l}BOd&{-(&KnPx6W%`7V~bbE3$A(v*40 zYrf-oJpLQ5rrDmNBPAPyYANI_?@)OBd<(yON^mC~!T2C*d=ORU_zU;T{W3ljz}5<7 zf_SXh24zu$bredx6tWf2k}|DF`_b8|j2fE<_-ozkU4=@aYeI0hRVyUF|WO7J-dO zH(HgYr58TX_QrQkx~G=L>qF7-o{o@&_rX<1cYF5sy6y24LKhkK(?!{EaZ=*~ULf2A z$%2smd?1ar>3YJ6r>YukITsLZunsu<@*--u4`0sk#T31MDc)8%Tj6UD<5eEH`#2Z3 z^3E?qP;n`QAfr#aK9!XkkMY>hXd|zCG8esxkhY}toyjoL%;44)tZF2iRIaaQUesY+Yn_&$DN3$= z>J!xEuekZ0N~wF{f3HjU-!2MDDerH&MJc6DT=UxRc*oJJuW4q}g;-B1Iwqq+G3twL z*ir-IT_O8o}9Gx0zX@_@wDggeZTlKJnoVq zqx~!V#=m(lzyFK>4IdAP`+br~v0PT2Gmh3W!!L`v6Xz_Jl7rBO>12uE2(}v!+Lz%w z26xvXc!;&`yaJSx2Ssb${qHO>XbtBlHQIR6NQ!TgiKCEwe?=VDkrtRP9LwC{yhh~{ zK)4Bb4NZYB7MKH%$8A4^w;nYCKsUCvyhwD^)?P=BorLDYv zc_@~7BS^awu(7NfCexD9FzLKAt6C()Rn;))#bFa9MW@Ak?tXa6XCEy2*tP} zzUHQv+`vt5`6k?CCO@;kh8nDgEmbDJ@2^R>WD;=VY2jUk-+Dw;j(9Ow*|-AAnRqLh z82YR7!8LU_hzwLS!Ni8^k_S=Dpxnlnb5y^_r$6v{PMn&PB&KteZdJrh<5?7qZ03|E zi!>&zBirsE7X3SAZG&P`?&q=+?~i^OxkOp6d&bkhO7GZj-2(bA`!N2Uivj?*-m1L! ziulmI&wSk*XSyl9Mfo;60c8KZC}j5>1&_n_bdV2EcnpT1_^Vy#PU}J^-!wvRO|u>! ze#dRNBFCflu!9g3BG^E1L2cSZ>I#U0SxZ<)IxnYxmu4M`f%ALoOB=qo67Wo9)^p*y zr#<}cMK*7^f$#WdZ{O0}Iqy zAFSc!y0x1a**dD=zAGn#Z-Lxcu?(UY(T~VJ+lSgFF=?7KiP)ahEDKpfDg||^y3?qa zh?7s2s?K`Md5?~@*s)bh!4GtVZyJ2P#M=_R`8eE#`$Re&_t24|*`09m_!*LZjQ6r? z^?}TmrO{)6Qi+fk8$Rh02=CQ986n4`R8pj!qh+!8vY4t7+VZd;V*~OY8BJL^in3ui zNF@ELa+IY|=tn(6SvhWhc**bo_U(Mj8=k?--|`aNvKED7%Su#AtmJ)g{f<-N!Sq&9 zNiP(J5k#qs6w?rm7bl{Aj8fP-F01lv2fceUhV_@&778E$~L*zJ>Ox6OqwewNRC z`11_LeHP0~4ge+OzSVKU>L_85?m3l}f&8cN9YL^N@n(tK3oh^}bg&7W&2x3><1W=t zeB%$C2OhrlFZR-3zoH0--jD|2&WrNxWPUZ6>&Td*jcprJ5`R9#MpvJ}8Jidva^tDcmfpC+c; z_b*G!qOjQT;FX0i9=T(P;D&(Ir?5es~Z&KPO4ugH2C`e@ zpv#ZK||EJ=ozf)0=uUpmCN|lT+eed(%@`JisEHK&xyv_%kGO2pK zOvEwsdEMR6F0{rH79$krIuwhtu>lMdk3{DzgOw2p6y6cwGyJn0pjdk{50hn-K^yzDUF{|~>3 z%MSD?m-Sx!yxY@7l(iLm^;CB5Cek6LLas|0Y{y$-52}@5t1e7O1*KfeMZin*!K1w*lo>$Xx! zY#8(srt^xtXvoq?Ix8(erVHDx;V|j=Bb9~ia~HYkRnOt|Z~uo7t%zOP+7af=NgeV^m4YnM3WT=q$Cqk=1&`X5qx-)k}z74iOXJhPq$?AbMe)t!E zkSne}$Z}Q@$1>X|vFVWZR;*;5r>UGU>ss0};U)V$`LhY+B#En&?m zR!P^YPNm88?93Y$m59)WnFNZX;SJil8?NIr4n2#j{RV70)5ZO5{T~j$j zkN4wd=OIeC|K9U|;ZAGaxawMN_AH6J%~D;<7+@mJpci#($95f^CbC`VXQtaMRF&;8 znO+vN3@KxSUQAWD0lsZl>KG1$ur}YF@{(_V8Q=7;{t4d4P)$+kKng=|H3Uu!AW6{u zRiPm_1-_U_=TH|yW^%1vxt9(i7uRt$+K=k3$cl2gDsOpw!96rQ~_>R7FLDJf({VFgEMyG$c=fHqy*n22(^ z%S*redsVb~&3{u$EpEQ~w*PH_@o!ZW!Z+7SsRg}_fAQRJ|6Wxr=VYmXi&3PyK#q3j zYOS~=Xr(AB8;BWlz0*XHdN~<{Laa3%F{i8>l77agKXM0O{(s+zUSGqNMWCLBCyRg> z16??25W<8PO+Z2A?RvX+8nh`T+U!xJ>qP)HOE_~6G!=f?2DLQktdCDNh_fC)@YAp2 zh0i<2Vp@{MQ6~~BgV~696$;h@vR-Vwe3&W#f6liX0oAqMRdCIz17*B*k`@fY(aL4B zI1(9fBl6&u^fb#Ym33$Xi`)kuybt?*Pf^NeQsm)(8-vYvp($kjnD3xWDr+?p;dW1= zMhEcLV>XV_oVb^Br)G5fQ)C;`IUTjQuXSkTb!(+4gA;LNG%d2~0q4WkqHzrRG4rKx z7LbA{`IwVzhML;gn-YTYP9L`!+Hdpz;JKoFmo_kO$t6_B{U4>{NLUHhJkCfD!wkost z%R70?ZRg;8u#!ip&~+s=R;BUBzW{ZP%P-2m(NR##t)XzZo%85=$<6=Zb-ecVPiC?` zr6}9LTJd@;i>3n+v(ykrq7rOpLfx_beAh;|^~-hdgAS{(fvkj*8=|(hYd>8WJCaya zl#V>N6uFGc?Wr0^vVDjXMIE>bQAqGYNBG@SsNNWrjHD2xBk7##62G{JvkfXXY)v&6 z&R)PoQCEzFry^ZmI~EwNM8>O>+`O?CD?VCQ=AO)6D{-9`?MF*?QsAU0IxFP1Wl?v; z9jz2zDb8J(61j%&{1-pMGk@p@aXT{^eUuhlDDHtTK=)zwm=uO46oz^sIDvPl{ytQ1 z1C`W_?U^n0#T{OZnm*+Q0Lb8>Y!cbc$0x=_ivQ}clHt2~nQ<4})gOqAEwJ(3$ z52Nr$BgMfNmGBwfYPG3eJ0ay?Ae>7x)IC zIuP^XwC+w7`FB8Afm$nL!?N_8pLiC_T7*wgil3eq(^1zzHAiP-bbkf6b3#a6w&3Lb zkKl9^KELo@6v17X&T2hPO$QEEq1#Dg34|2}CEcpJRnC@GL%$by;VuApdCz$%f0mbx zSgiG87P||MUAmvY_sjo+D_{9a+{KINICOoj?kDL5uF6t?=(S_eU&FfwH9mxodLj#7 zUO*|08XSP$CaSkCsnJA2RnE8Z^)gVIEtptVnQ>2m%eoYwguxiM^(eYH$Lzre`M^6r zOohQUj+L>f7`Jx|ahmR#AQg~nIh|FMm0Y{Vd#cKl#!;{x5ZuYL$7-!=$Fi_&@6Oy) zp8ojwnwP%j5#U$lBX-sSE zYC9dhbH01{TT1UDB>KdGKMyi;`yzXkjUiZ-A z2!Zs}ju05|rTqVN1if{!fS;YmKlllhiE&kd$4l;C+(Qo!1@_wvH`|i-G09NN9c-0w z!*j3YNB+sHdEAu;nNF5ir#cQt90{Mj46|^%`f#4^v?R=kHgr=etf@TVq(?wTg%r~y zl65Zug;vm+muRJ!E-d|?WI2jsLZX^emN5mQHRkZTa|#9!9G-P4e*kIQ7nTREfRWjIzSaWa*fh8ICu>n!|(pW zZ*YFApqIvC_!}t7ESv+732Fh30se=_hLN|aHudeRAMun%kw`HqN$k`X#v!7na?iO@!4mnHkI zy`CTVsh9EM7hg-0mlQ=q6xe=3PnCEw!4I6w(ppP8vf1Mkv}s&%=&T;gW^+LgKq#mn zItQgxAO*?IwKcEUnpt@!kV{}2`Tns{L<%;?hJ&kyvepnK_-c+yS73Hd;^4AX!588_ zsy9Mosg8ez)2DYk0#^GK1+=|xTwrGgre^4DBCW$JS_iy9?B9*ra|3tbe(*LZaNXX@ zS1BPo#YxQWPR`IYyx}L_#A|-;pJIla_(hH;=wS$-IpIEVwcHm$`YkwGBNhzadbcC&p-GT?!5CX zgFzXhH+?XdXEyGL`SjXbo7ze~&NpY$zcw5VjU>(>BAI13P zdGQHw!GF+XsMUR(zV{)vE=;h<_lW}+;W1EBm+D+K!e#_QWLr24!vC>WNNz<7mIZxC z9OUC!5{0foL}bpxY-^Y6Z@82n{pJ6YCx7>wakE?^?y|9b)25PBzHxih<3R2acdlNz zKN>OFS-(WEfqDw*0B=hf36haS#uvMy_b4V%?Fw%r9SS3oBxoLx@uaEoI>8*hg5w|k z1Rs9q2kDIl;6)kSG*UE20~sL}OR@9YotIRlWo49z=&llDO6$D@%jR`wiY)lJ4xqH6 z-_IDuje5p+yv@@)^53O{zwvK1Hguog-{l_zPAXFT_Gf?JPqBY}7)3^T5dsA>kyy)3 zTuQE;4r{rV(b!n&4%*f;O9jPm!7GKV?OHl$k|sQO?-}0zbN>z%d3+SK59kno6uO2s zuHFQv(x#GCWmQQggctvPni|gDhc9Nhe1?i*T(bZbNf4;3qyQ|o(4!4hx`Hp}&{QHA znw*0EK8a-44qsQ;+;QErui}S(`jx!!Mc1*|Sx_u1;#h(^l$Q6@dP@M|#FSAYiRE~2 z?Z{irgV7?J^~gFaj-|_J@tc-0*))#2aqKP|A|s2+I8qGz!c(wT9I37I?9LqyiDpw# zgs&Iqbc8SG!e$)o$IZ^l2+%EboE~GQG zwcH1euw@EG!j%w>VC_=*x79M3)Gj2nrMHf^9^WiwJas^`4A?>$ycLFk6+A{IU>8h} zALpIF^e5Crco#NFjdVfNdBtR21u$AsJJI{>&MIb$ieW#Ymx+Cxf^KcOJF9~HTM7$a ziu~5Oi}sb@@g{ThMc?^;rPL=8yzg(sOZdxQf7kKBd0|W4J-+ri|MvNB__k#^*>x!0 z=>V+tEXul*)aoD)u0y8~M_LRvfGCpFu_zmvF#}nnB|nvwBhM=i9$DuLAO9+!{iR<* zua0ppa1NZ?qc1xvzWYrPD0E&@c#^)*qBYVboPPkHZ{b}f0xahQY+5-Y`{aBJpHC%u zIEwMb6gL-4!Pkorj*D1+*A+S&qN9jrwjk@ryzD!l!(0EsH*@9Xo0N-XCv}zelF+S_ zkR;qHE89ZQ5`tPA{Z{YLbTntVHmws+5&%CNd@3&PHWJAeE=_HrsXTEaX0FqP6r^S8 zP_D*Tg>e3x8kGzsz+|wA%2tEZRl=jk&r=76QVW{4o06sxKy$gQJDYdB6g;i=Ku{Af zlGZuM7-9Fdose@fA~jy2yk~l0m#04W@%;F&{VSgNwzuFLjh{`?>M`orCZ~;emv%pN z4L+FeIJf7-HP{Sba}df!Ls-9DL{3(6Ehr}t8T9H=iPg)ug9tB@e^bu{xKt{*gGC~@ zHZi~Zi|=N4Yfc;hLXW4c8uGGX&`+ov%WP4j5U+%)a;%Po4!^aNhxj`IAp52G_6xpi#N35m%4HE`_bOcAA;&Iq%Q}sZ!)i0=8n=zU7Y7Fvs5@dCe+GtKa$qB zE36eDY1S+*!s=m^D=5yLWb4c>O6!ivDW9YGYQ(V=c@u>$!U?!)g2!NF^kbBo(j`S& zL{KJ{VmRnWqQg*%CB8 zgarGzCnq3EyaMW4TH+u>SDTk`>h1?Qe_<|Qu?yQJV}y3>MIJ3HMk(fL8nMi4G2ChS z5~`(g%d50u)mT>Y_lwd}&K8VQ&FkOxDt`3W-p;ize*u1J@nw!SiQKk6ehe`!textG zjEE*!`cnt7o0WsYHquSB^!9WN#PZ9PQbblS6;Qg#<>7BisB$q+i8IN;NXC*SX-jY( zS6TF^&z-;bhkW#XpC%pln9OqVgK&Zah>k({C5`nAQpuqxgY}$JP!xg_C27RDt(>N@ z3xQi|7Zf$=3GFUv=H(=Bn3z&;7t3{#{m(|HH%l_4p=ADSPu3|41vP{?lcz ze%m`=@rKvNXHTB3k|ZKBnmljFi@MuYx2BXj%%IjeR)(pxjMlO&n?M`Z!Q)Tnu4PEl z9S!3yOtg0Jn?L<_mXF?#$};f|R7$o5EkVhLt%QjstmEWYz*~H|g>M$%YIM?<(;!aq z#kPzC=}12Ox)A<)+Q+P4hMSy0rI`d==eu$d(y_1~n-Z@y638m;sS2Ho+u32X+T-Ql z^AdjK?Qi89o_{U4is`gK2eoKqbRcfo&UvZD@Zw0zeXRsL0H~eNij^YJi{&AWjHYTl z+p`Lki@~ZEC1wa04Kg)C8_U)+t8g8~g z`Cw?`k@;SQ2b(rYOv#H0#a$?)S`LS%q~n&i*&uC~o%Y3fMujzX(ucLnWDKbbDG)xy z1SkSPDVhi31XtzgwK2y(@mb#UOCMmoI;I~R;xGy)iRm~Nt)2ZMuW;To9K?ax=U4nHeP?q2ctZ_$j7zD6l^ULM20-3szAe|^0=1-S9X z#@}|E0sU{D{+&O3`!&~GkrYMQEb=h=&{790_0b@qsvUW0 z>G#BPy>1+v>lsDSP&Xc>JaHOx;?W&`=cnI}tLBi%Lo8!L1~ig_q7c9Ru;}#b|8I(!o@0N4Cvr-Uxt0E+F zO>lqmsCtfFE^u|q#^pzO?caYRKm33F5I5a)CDax9Jf{rcq6*_yOJ1@;b!dYEuXVBV zVZLuOG_3W6{924w>`a@G04|4TKb0^T6pS-iZMj#{4fM(iXK%lQ-};Zgi;GhPV`<~=WxJ-8I8~RG;6MFT4mFXL zn~r%> zZIx0=9UtHDqM!f9H-G0OpDwhHB5wo#zn8@Vt^|;=mkI%?EFD!XqsDL`9PhjkI`GOU z5hkF5)z!3Qse;H`%R&3mC5r`{&C}#MRx9{Byw!+&66%S>G z){&e7buO*5N4y2{xpWbk7;w1RS@ADiY$3V}4JMJ@ww3jl>aUCU0HQv`OU#=04izQn zWPo2x@uaL>c9d6q&x`o+pZ|Vd{;kht|3=1icg}29qLkQno6vUS#eX3(a`^afwycH4Hcmw)R@zQaZvq>xX&P2HM%@0fI~e}U|C5*h%Uf}iU6iebtvElAd+1XF zc=pGVdZdkv3r!d^OpGgbr6@Qje{Zo9@PZ!1L+tddu-a@X`+H^N;dd3TUZT7gi?89j zqz+pN%~d*T)-H@xym-1+Bs^W{(9$9?ynVLmTO zdzq+B!}}FFuq8HPbgGo+s2bLX5j!(SWMFlqnasWLxRk=x4qH`3 zNrtbb1@}>eA`@^{JI+3Gmf5Tlb)gPoH}{y$M{L5+Rrmm6%1YV@jYw&#qNH3FtgiHU z;&ZO!#+Sd4OP~ErSl@)j9JjlJQXXw0gnJUG=n8qDDZxfz&8PzZL`+RYN*{LEGy!vH zS*}6vV(Ts@UTDuD|D(NdaVjLFrj)}Y?g_!k*7(J?Si08*o(MLNQJj5ezZpOPJT$=W-Jdx9@4x-E8+qfjF-BFjq}a3! zw)PZh^8$*pVUWdwJp`qrR$|Y!2$>7A-&Y;L<{V_1rm7sZRm^uLeA9Qnm>2$oAHy{X zYWE}@|CI3D`|HrUJwpJ}mgxS5ob;`!$Y3462yC@DLFo(>xO{>c?#E3}gNX!`GzK@j zC~G_gX8+Y<|2;n^+=ZctY*=2z<=YZEstGb>jo&^cy8X3F@XHyxSwKI9qTt-4yWI7u zuW-kw?&jQu1ywDy?BOWwxHxq!CsO02+e#uGIx*3bEKAGv$A(;Wq=!f1;)>c+me5!* z#xqz+xbfA`6D>tL6sj*?ka&}!M?F6JYwzR3AG(*c7ZU{+;a1Gkc7Ay&u2Xp>8;7E7 zFy7+ontng#%4?2t{qvs1HP3k(D_311?|W%+O^%8Ts$-@q*&28+ok3^P8;o^ye-8sd z?_mst)wBwjfpwt+NJH1CMPl!oy*0JBK*XM#H!?D~V7Q`;h~*|HB;l#+DkA>dt-sFw z_nc+4(v!_ub;KxrTOdn^>ytOATS+oxyAFdKkHY$zxhr7_-8)$fB)n^a2tmX z5E-Ss7sj4=2DsqoFTmM&m@*4#&+Dscx4O&=SxYv70HWFp=V6dWSnC53$}!$p;REmd zW3<-X^kd(PyZA7AR`n1sa4(7koMt?6JHd`r-53f6o~nxa%aRPF!RhrkAU%?Y^x{*t6xPkrGTnYV=9OT6UmN_c!quan=-wNBH6S_GW^;%2{ z%^vr_2TOli&@r5G&V<51U^FJ6Gbs#IVLOrk#bVRiK{a(~bHdNJUe=W>mw|f-$|=@X zyyxfN#Y6X>r9aBB)(WZ22?McpgK7nAt$B_ys^gJ(=%U_Qu1;g2--{({Go-jDv8JEJ zoIgKlp7MknlIOkcCq4%JNAEvsfcoqG{KEeqItA#ug|=h(g+KZ~zWK*K^t*rL#%t@k zEF`ogGMXd^g+P%+Le5B1!`djNY^=B#Ti^Ni$B_}xt5X98^`D1%QIoVOL|#))r@ZM0 zUdB`2@G9&h_o02Y$9XqNpzaz}wt+9FxcLS2U_*dMTjT2-r4#hZQQYjLc=uT=MjBfE zf9<__oMu&ZF8r*$_Zi-)#-3=Vra@*@1P2rakwj5rqPZAjJ`y>2HELqS7#bBtR6v9P(#%8CV^vqZ<2h&Vz3v}tol}ih6O#)F*!%ZuX{)QN z-hS(xb=G>;Gk~%#5G&25C_z~dX7!;8)(ybJU0`3r%xnNyboxXFaEb64+B3jp89eT* z7QYtQkdTH_@%`iR0K{Y2%eOi}Fj%}{3%2d_*mBu_;Er1tu(W4{-8%=UqJeWjr<1|x z_M!3-Go2KVd+0QL!RQx^>9%-Z1OU+ov}UJq;{SRgh$F)C4w%*qC}|-UL)gq>apwT% zzVn|@>Vwr7G5&~E1xJjs^vEm#mtg&YtFZ2{jX3I&M`QnEk4Ep{LxAoS5D2`yDDNvJ z@^du2!ajsS69$YR9}DWeNhE+_3^Gy>0HgvA*Je1;$=^eeZGly80+D=P(vshoL-`sm zl`+9+mrzY~rK~|h)~)v2tkZb+M32*>H|-p3n|RD zHkbgzl2F!5T{A|GaMmh2Ri)D!!0U9y3o_A_Lwf#u-@kLi8P9tT5q(ujgLfOaxc9l+ zI|Tr>F2WE|VCFyl<=6iC6MuN|rH9_RV-dYx$E1!BA)bsikAHbkqTO;$#CvTtL6DV= zGX!gas!|=k3V*69f(dA44w(~vL+*gs>EJVea{+89@Zcw&2*0O<1?x&l3Ilaki)X^} zPMG#I$Ys(^l!CyU&OCUs0J3e6%Mtsx3hxc#~taQiJw=np0s?O8-sc*H7T=dLmC*yga`>JH`{#MV6ktrlTi5lr+Fo?1>| z+OvqmU2wApf|&qkaO-uqVf)qvbf;wV)5%lJ^(^w)^*G?bIjlbHV65G6FxDM*5V~vj z17@dm6&S&V2QMyztOHpC^7c&8+XGYE@hgT972KslW=pDhDf-2j zWJF+=KSR)tENRr9(6lCDKWgryaq^%@#mT#&NOM3eE12n7EZ_JeeCkg=fE_yq==O5N zAbgwD37JbM`bP0CfQi7Buy-?O1>}Wn-Llk*3N#v2RX`PjB!#hHY)v?fOR%(kdwBZG zUdkKJc-|+aAZ)V#RUYL3%ehC20wCN4WjbzS=Hs9Frnl_=#Oq(x3eLnbcq3kX4$DKi zd1j|FSW8$~Dw>s-SC(I|lK_yNJv0m?OAU%5=uTgZJ?k)yVIk%wE=_UX-+v1n84r2# zqY$($M>!HRP9lk5w?@S<(oMu-3_HCROhB9rVdoA+T-pi-!DJn9)UK_P?FO~yb%(7_ zI?ZgOtPNqP40PO$FgBCX#8*UxWOsXUPY6WDB07}6ZEbC@MTYk1b zwxuw#rgXU!lC<+vqFcpp)OP}Z7;!E3C+;;x12sZW1Oa@y~| z>itCYO6Kb_qQi@O>b?c;!J+^(9Rm^3n3>Ny2cn`*DGahT{@>>dbc4C(hGM5Tj5EVh3(hp;@yk`Nqp~VUht{CL0YyG8dav#+iENCI@l}2th_2 zKy1sGcMECCG7KU*vt4x7uEM&h{eaF4svCZYi~jcWav|pgvOvlN;~0?=a5@DlD{u@j zz184dBZ15!;izAII*wYqK{7lwD-j_ARS6!A!NUkrTReiY6_uMIp}>{2;dP>|FXYmr zpb)}dV*we#WkLZ=#uAt9a&74~_OG_ogQz<1;-3K>MfN85krCXW7_NMcbV|G!$z#RI zyHMt11tcBB@iNT(DlA-m6+ZFmw_w|j5$0w)k`Ap2;T!?$gjfUslOiC`EhdxDusd6s z!&qIo>UBFqfcB|whT)_FD5`y7L zlg>R_6aXmodxhk8yW5Ty!MIz&GKS*M)<05*waHQG#AjHLN)&Ndf4vCi5x4cDmAikBIf^l8l10CBJc>a~H92L`vp zW(j8IyV$cZM$)qI70c5O29rqvGA$sV2KlW36U_8F#HHI|W)1?kR)Lp?fRT29P-lI} zC_?p(sLtNPD%1-gcqwi~0`{4jYXAibb(L64+=--{Km>9FOqQj%HsqulLx2=0qwfi_ zm2Cv6J2N2N2*ens(?#c%w&Wesft?Tp5p{RUgTh~=LDPO77oCsB9*if1mzwe`I z`>4nMJ`r83B&B<7Y^cxO$7uXd&N0WFS@BhyQkYe5d+2Yy_Ow5K+*-dwyfZMfJsu&)Byr8F<@FfaIq|JRN52M4_}Fwqf24h^N2Oi0jw)C z$QY8;IhKGty`p#n0!q6LK&!VGsYbN*Y8|9sQo%Md!m9ILGi_K~?NrQAqUL6@uG#zq zl;kjJ3X@n+C}7eA`P?k3(u*Bi0LB%g@Pw2~pj-gbo(O^T^-?Z5o|JW9z%b6iSO+pz zFoVWgzpfB9cR=m-p$;!51&|81LaEI6s5u33g(pDzKGh?GRs01cH+Nk;f)~YO9rqUl zK-Eei(Dw_CE<(2xWQ5kqUd&TMl=skB?Op`0hycv0HP~|A-{X_7dlx1iXm?W#hGj$D zCa5_~tVdmW7!`%MRu3nY=5&aVukL(f6#MpemT0CbVKAzYCl*QV&1fu-7Z&`JpZEWb z<{oqAZ|~T#cIB|iPub1|*} zxBg)G6BIzc9 z1Eg3ofJ&a=!uget*H<6u#-PdK0Gfnw%{PEm*|Vt`j&bFCu$R|STir!yfvB+u?NnG_ zODF_au$lauAvgnCK6a<3^o1+bxa-7fTJ;oEdt35MeemI&Q$3ya%#`lmhn>Fx=yf6oty=;LeGt{vQ4 z1p&C1iUQC8k8aDq{_AC}Lr;G6Q(yJwg|78xFb=WwVola=ISm>WCKyOa9+IgjJo?eN z5+4GfQRZ=E<(-fiR2XPNk;t>_$oHbCux9lXF8jBVEeKb|GjqZwW0t3MC2cI#u+6M zefQXBz2cWodg>E*^>^)#F0nk*%NpJaD|fsqg`qbX3ql(eOl;>uSjyB++>l0as~2Lu z&YYCK(GAoqqis6|Xmv8&v8|5}zV&msV)GS9=I21YH3$ngG{P8;l5|Z@vJyGyQ%`d$ zxtai^HzqlGvQ;A?E>#opXMnbshDB%Hf#}Umfn!9L5+aMOdVm9__6N8G%DyN* zT?*>X3tys{=T(%%fD}A~W+hm+=P}BbfoKIdtThaouNL3vpVtq=dTU@;TKhUC zk9h@@wV8Aa0OaCP{KDvKUE_UFw;{gcHM?g{L!26#lJrvtM;2i zqW_$lWoXogGD|Fy%p!PhHeus3Ac94`YYE*>B8!ehRIlw^giph<7umV|RQ1LH3>jE> zzyIo9i8726tt5PDm^t3mB^vlou{TI17 zT=J#vuR}nS1CXam-e86SVOb-~C#3*3HNnZVW=jN$~wh+xWfQ2{6tom%F<(B0mgwiN=~D-Ae(@za<3l`Yq2swngbyU@R_!Sf=dbD5+PQB zK~A6Sek_ra-^K@@_i9{!^=(+a-#m8g93f53iWrT6vhZ*!=Vz9! z!?=(KPb(AC8*2%ZiELGj(SRQU#_E;O${fl{f^$NQO%_TBksY)9t@nNe>rQ{gyL~Z+ z>Kg9Vf&ly+iUI)8vB#F*|NglNlJ3h+e#y(rYlrehqLa~t? zO|js5odEfLb4fcT<%1Y4P@(P^wA-j{tZO5d8qm~EC58w}Gnh2u8}Iud zKJ?PJU}3QWTL(vsR&KGlTp-WICeA8e(I3k76g5=2l{<_ll6akGR`>@_^dQz~n2Y9o zj!Q3jo{5zdHFef1J;$=Y5WQda`FbBC=>f~aR$W0HU zY&qXhbSZ0rTuTjONAi?OyFl3o7emR5@V;q#$)>W^sM~K%q5`n;)Py(%BT3Qt0g&E^ zQ5~a5XLXYTCIiX>JX!{&9r@)%6*#?aKQIv{h1}=_hRIvvc`@7tOm6^>cgy;&vqolh zC@|Rg7DP0{rFvtaUk#y93p5Swt--@sf4=tQ)~!G(^-~>tNt=!8MO;TeSHFKPb?hPk&e_ki>XeE z#iatyQPb#@YKW3$a6;5*{z?jKBGs zS0^XF=$%g|qKh|Ncwu=@QJ8<0^K&Z-wM9H{+GJaYocyt0f9v~hKH`W2)1}4bV60Jn z3OD?NDy)c0oE0TtVvVkL3_=te?K+>&7=m?Hz{yc1n~hXbppB9EtyFP}vJB{TQ!Fl( z*z}Qa;%guK8e%A5r~(I)8<`U63`_#Jw%C-#Qj@ADvbu9^*$%`~XW@~!H<5Zm8Yk_4 zHI#X{2Hk>}O#dR$;2>djpXn8@w*d$YnTXjZE_&qF`V z5sd)JU@ri(f`G01fZRI?dhgALNpuaX`i0uoy{0?Yn;42KSOPJkm*Q@wXYr$d{a5_; zi(ZdQzqJK3YvzzAqDC~9(Cefaj^&!kRnw3pGD4)*z*kYM(^4bT5w9eFTSG{!6r$SF zKCuQ_D&{nKE_7$XB@!&&xh?+si+|5O`1juQMF5vGv&GqG-|Hj8-sk656aWDpapsv! zME_zAe)uWReCN40tXsXxPR3*JtiwcO-0L9G+C!oA5ouyEsX{|{j*&4bJ*ra7T8PB@ zYGG*tGK6j`ZGK2i!ZV3`QJNSj44niO9KQN**W+*AaUO2F_7=GLc`;Y<6G;I|r@+++ z3<8G|anc9FNIUE@aIp-oTj$8q`udS{5xqI#IQaVF2gK-gtSftInaNneE@J&T!nKgx zOVYJyDo^FcQOJWDe+M;-$$Rp7BzACODwAM-T^CW;YD^-?L2FhDS^qX5?SW?2DOR9c zgL-9HYZPk#eXgm+H9%f>1AC+Ygjz=+T~d(Ol(eP5fY5~c)N07M7w3TX`q}^*jfAmM zAj(3ziF(UW;|RJv;uu6NJvWc>(oX#I8{dMDzUIByw!6UGst&5MlGJo7ac)u!WUW0Z zJVv7mtyIWi3~{j@PP}XuaswD3O{mEYm1aoRl*@yvNxTX{fX>trm@LXYyQ^pX-t+CF zU;m+Z6SaQzyk}AYApSgXguTztwI~39x(i2<07aLY}Brl&>xoaLmgMJmN4B*!H~itTP>kTd-Wa25}AuDFR46J zGdZrisgJ+=;AVW|vlqjU_Q1}q0-Fr1;2o7CurGw$pU)`XpnzP`lD59p1HjE1J^(z7)Uzc$ugKLn7k)X@p?nS z5iky|RddoM7@#N#MNvwJlTHI5@v-dfk7m8-)V7JNtPNS8)*v05bZuCZl^UK!Du2%x zYV)R@Ph>^@Ng;_Eq@?tI0B{Dj#1f#;EKdR8vbhDscYFP#p zrTm_l?h1BKun2yxE<(iGS_|0k{`v z&Ogi1Y)VT+w=?q-k~H1?kLSF8d}GKAB8}M)zCturnNCkSqZJQ_E+e% z#p|)|Rz4Iq18&JVaW0dQ! zKx8olz@S)(K0rfjxg1KeRXvJ?N{W;(fXbn}Y93k3p(t5x9~4hWI`W!|B@lba<)I`Y zsxK9Nx8h#j9`#LJKcQ_R1th9Ev=%JYbH1UK|Ed>7b0UDf$LVJCq2H&*Fc<)W{F_=G zVAPlQ*Q9{=3KVBBbJG~!ay>3M_v85Xzg&#Uq?n%Vq11JCRYfd^3RArV{b7Y(Hvxk& z9ErW!@}R`rR11sC69B+;C&jW7nTj&h%4(q}D~8~G9g`>9h)&00IIhH*JaOpn+U+0v zlqV-odEMLo%uXNh+V7wH!UU(D>hB8$0k{uz3iVNPlO>{C4?W{|PJ70moPFcmRL3Gz zAx)jK#ss-FR9jxjeNy-!`Glaxuyi=8kYyG{}akj4T$UPRopRn~#b;+eoCnS-4<)PftX z#1=-K1!os;v`nF==VhNrVdlqa#PX8Hr$a zXwUZ0o9Up^vCHMHrkEg=+(^{yOTr4NhzN~m0V#*T5Sn!&tiEnSquZ#T^scSgK@jkg zz0#GFX0agrhFT91w5V7J>B#EUT7#P;|K^}wNvkVZsI}m#1a(>fMO^YXe~Wkiub1QB zKKCuOrl-aHHi(((U?dd#Dn<-OvbLT~0;W0{VifURJ9pAOc7*0!df~}bKBCof5{x{q z#65|CvJ7C3@G*+{4Wmih9(!Q8xad!L>QmhruY1d%+4aZ1X7gF6xD#G@?tP{p0QaGy z0NkZ8-14BOz3|j$yzwp9&-S`@JQ{nahM#o?Wl@SBAefppWa)*!P)C&$2&uJA?0Hd% z9eR>jjWu^oDpOI44BIL}g;|Iwc`Bm{k_;DZ-hvOm;|uuym%odcPJs@15SR&Z)ECmw z>;a(OTABabGs22Y@@C)8WnV^SU&+m&Nlau?a5d2!0d*R-MsD`{22;mqi8jlCs7%FL z;fDbDG2&=srpupu7VP6)10`vuX}81SF{i7eiq&`mua&dtQoGHProVSSdoL zCMN0jfc9b_);t8Ry9T?`F_3mbun z+7y%+(98^Oz33u*_(iY5XW#c}6u}|wv@w~KqKPRyLSVE~hfxvGN-c_s$9Uq=&SkAQ z-Amy$pTwwbU@LcmQ4xuCdlYg~npzA;vQ4V-tjb4}Wsqn|O- z`{Z}=@jv|pw*1>>P_+b;5zt!)^wxpHL^i_j<( z07zDdCXvp7qjDR@^2ASCI%?>8P;V?Q20%GfmgQbTAFsA=HW!AYahN%9JzxY?4-pcw zn@xj9JH_&x^$E|4MOft{1RWLXZlR_W18Att^>(2yY|7)1&&OUjcD;giD?nw8Xgm|S zy6g6$$va{FH+!iQRRuB;W^N8UuHAx7uX{T__{#r{o37i2wA;aSHvtC;5vuL{N*`rX zAu&fyGl%}L!lV$+!D!+!JDtM^aY?dvJQ)I4tbi zBumlXy~{u0*PfP~@rHN&nO$?#Yd3E`%bk7pg`u{?zb~Ep1g7xghls-F&6^z&-O9{Q zI5TZ;{@h#MaLD5Fa>%+JOO>n@qcRzT5<%*RRGOJ4;I?Mej*9@R;8Rsa%uc6G*y(6e zAx*8)SsCq23|qvZSG*vdC5dbcjNVimx8JfGpZwqF;qW6?<55pJ857{EHjJtNS} z{^0SVT*OIBZuA&*6F`m25i}f^{TLi8P-GxUv>>F~C5US@(i|8q%i7T<;tmy~um|CQ zqAz&_NlR`>r(`^ zqQd-a3%eJ_u+GBjMyv7xdzK5#Ol4RamPnM*I4J`9qY5)qsZcDmC=Pb)s7`s>)05L* z{l@oX>yLZQ=Ce+5r=EItxUY2x^|?tA-*wOelW zovEISG3Y}>bQ0~%VR5-YucKrj4moB6Fgqt{)cLHg8Y>|#5x^!x zgP^+{Jl-Qw@a-94A_gzT!?l3ML?qRje=KrllK?!>xf_6uBL7ZWDr?r8E|%K12l-wI zAS0T9_H+lU*LAV=rUmIRLXhIs+h5$E)RInChWcb?=+n9u9RZDj3F!*9?)hVckcbFP z=&KdO7&skk>P`d}K#3La1Kf4B*npmpP7DdC(*dO^`dhBWMW6mBTyeoA=r5PZdu^$Q z-h-oT0DLJK7+ETvV4gXpg4Dq^;^R@rxB0-Zyy6==Go4{!sX(V?PzKS^Omy6s?xtAS zQ=pYwr0S|YnFO?34y7mbw{0z-`LdU$C;Z{t-%ZKPYd4>DiaYh}3-7Z90k{tr1>mmW zBQu}&?Du~7f=|EZC5K({!!3S(&AbDbvSDZ?Sn3y&=o=*SppJ77Q6$$%D)N&gF)Eyj zFjlne?N)-a3QB-VFc?=7bP5590<&=X7%O47l{oDtiA9>VarI@l;76C=h$9|+5FY*H zM_|LoIbiMKz^FhR4}hu!_hTm)TEPNG7oGCg<-QJqT87H^yi-YnG62@70=sv`M19Br&h0a7UIHWjOZU? zDRFCH;WbDCxdfheTEb2vBN5=%$taOH88`CGVKl0ml;^4vyum89Q*)qaFg|JkV~5zk^9Zevj}PsuD!%EbLO$yP9Kf*zd5iAawFuP@kaoI2 zXEk_f2k77vb*}diGZc~sc>^Hoh)}CW>sG&BHv(7@HCYMZt;t4Z4X~C1WY$({G3dB6 z(Vx07BiRdW-Q+n;s|^%G-0_`nMO!`^QeZD9F0MT7WiO2u$N562v z{F`2R=mnqoOf|cHT{51GH8shjl{sOLsZK(o+%+Oy*O;ZoqmM@(dFD`6QAj4E3a#9s z+ey$LNW5HGiI0P`27$N%-xF6SE6W8_t2FaG1yP3Uu3y46@A)ha-mn?RKI{-2ck(fq zIr3N~(C3KJfF^xV)>3m8r=}>?inu54we$Cd_&Wlk#`L8`n8hGBm&=9k5cKIDwB-ky z6f0@nGmw=6(p|L*?M{j??#pX%E!B6ZxvJq6%z%N0br>~wfud>@v?yrTqOPOz{i;G- zl4@!)sUuZmz!KFOEd?MFb%r)hy^a*{?OSopm%fi5oPQy1yY^-b#*D1ff=z+kkdBMg zcp7+h|0Wn1qhuo|pmL|3APh9f#t8_WXHKx*Al*)$IV|j%V16do>qth?dL)$)B8CT} z*GaL|FEQOsk>x3tm&fdU>0kA?pHB9F!n58@M6cydo9qdjHr+1@0^r=WqhUs&D=P zyLT=lz@aa!QdaC@Kmpy;V#d+?sJg4EXK$cllRX~9@Dwl5bp%xmBBS{G&GD=#!4eK}Q`4GrvkS0h0=GxC8Kgkvmr-km~@&NC9|t zT4G37V4bWe0l5*K16Ly;OvIDHd;M<#kOOJv05O9@3CiZtn(bjS@)BS(SpfBB&;+8e zau8VQ*7f%RAlQNegEhEF*lY8^D*tvuO7eZ7Q5OR+#7~h`e?e2LK#2iH%UHbjKXA?0 zFUAc&xCS>}b1N2?D|C7tbf%{fLO@xFjXF~uy338ffic2au?8qrsVGYmQ72}J)ig2T z9F$dnOY0C817{3837;iT9gG#lWUrHm?H`NPU*(0{Vy(eov!JTM$$@tPmt`isAZ zD=xeQJ8!)c%gZIAaag;y2X876M?^J0wU)%|Ft;d{CCq&>H*BO z$#-$%Wmn+i(AVGj zM<@Qn2mZdwrg|>RQfj5*y-@o)7HZBSarO|z*c#0AdDMCI#301R@xlh*l#_0jC>^ z$q>bkt=M_m>+=%Tr+=e^u*aIR1mt{yYQL!efI8U5B&5fl7&<)H;NE5Z4 z6r5J>P?iz>QP~LHYLni;QC8E=AWJR!!xGL~gcuu+N^Pb(DFa%WfT@ASlr>3ALyQAS zq0e(C8XIFV+Oz1_9k8GMop-*ynt#-@|C)$irq|>BwnM1T{k|vwD}@1M!O?%>&ToG1 zxBl`)&y7V{VP&Qg+_H3MeN9lEk6cby&52 z71phr!t9zU?0@KinBRB^@=g~hb^_CDfP6KubO$ip4HV+k#7P$j6=F3O_h|q%7C`wl zhzN_L)OmW5-T}QAvA@62n`_EYB}@=C8j#5n9C}5kZRKP zL@m;@R15J$L`$QIVnqzp6yn;ZPkxRy!Ai_^(p0X6JWCLx0GF~vVe#@%0-GVgIKh|7 z<;CjMUppgt%31IC>8g#tLPTHTO`EKGgZ$halkTqbfG7&UT`M#*zh-dbci;ZCKYxSU z{DrSo^Xu0n&KP(f)Ja_Mg8rbyR5t;UP*<%L&U=;`^xBEqyGb|E&Jv7@3WkjG=b;vF zdUIQ0yICy+_1elBQku2ca7`v2ndT2Nv#K;BQWbo)S{8ejOUzDZD9QjLBV&(e#Nfd( zq9_H?pPFuAc5VvmR%d9hS%dvH9E8~^aTjiNGPGw_!M58nBvvB@{(vU5HJuXr^evYH z4}Kajy-q&v%axVm-XSc5WpGtsv^0hvE@H5A8y0qsv1jY;Sh(X3?7m|G3%eFES{}ex zKp6;W<`5|nX)%D&q(tUyvlixB!Kzswc_uA=yCuOYP61-Co*Av&!jb`#;5tEdER!;b z2`ywqthZ2!`XZ1$9mJzlu(Adn^ z^x07t)DW21FJ%Zy_lcVb>ml$tYsa?lFj>7(gcm z3kyr|!(}i>?7m|gm<^VfCMd=Q*jGX`03niyvhr4f$ObN80Sb@P(ow{p@ompZDfzeo|BMMH_AC{twO~e40h!A2FS8(kd zLR5}|m61+*2G*dVnzJCqpsE6#islx#Erf@ke4Ks8+dhER$36D-TY!{sSlv@ zfGP_0sezuGnDY(5|G(qXul~-L-}NWScfWb5@668H>8Xqs_lz+=E#wqwF9o$Wme9$Q zrv3EFJMbYwSJcRr=wyvtSb6G1u}K8$2*C^L&H$Vd!IfzOPUL^fQfRlbs@Er+%DAf# zG1C)L3~M2Xfg75&_v-zSS`=kKP?W!&Cm;d_!xAAzI3p~*pw7Ze%M-NQ34)h`WOcik zWDW@;h{RmPN3niSoq<4h2Hj4AJp-AwyKP}QRzbQFFr=udYjIgb7$>BndTuX^*eFix z_uEKMuu<|>h@FJq+?)F z4C^K#O$|n4-)tZfXVvr2z^j*J;*8)B1Ppb~Ey|$8CMgbiCKuw&RNjm>QXs_duc!hH z2riLTTWr>W_2@wwJ|cIwHGoTG#%?|*k(;Hqvg>s+$;YT-6MODML?@R#ix5~xC>b@3 z6&m^6bcUtA=qVEQ%>-5eTW6)1Wr;ymG6IVuHyO$A7z`@~0U6^$TK$?FR#ZX)Doc@6 z=b4!56lFw`hyt-Dlrey*wzwmOC;*^y!Y63AT=PAHUop<{%{p2-zHuqJopSRl8%Z zw%DnO=0(s#uMEdJU99qV#pMdp-FP)X5$ObLC=dxg6Q$jcf*xW#5iUfG^4`~9zuQjGA6JM9jFLf93?tWt zoEveJvqo?r07;snC@LN=F2qMZ_9Xj?&wO@#;vc^E&(J&IL?SwmH*K=aOb^6y;m6PY zlDzcaJxX>W;6h78R|0q(Gr#`D$35od7ysQ~t-J8Ne_-PhcCKwe9+N`bXF%PYApCiK zk`c+1mk6lJ`Wg|0J55ZJC~TA&8Fd^1w4KgeGeV?^?Ao1O;nmlI#1Q4et(nI4DJze} z8g-76eS6@D#5fp5&x8_K%@AH{INHWff$d zSIXDP5~HRif}uE#m#f*$V#&zOpNUur@IEvhLfz#^S0#zzw|@CEC;s#M{{nYx*%Gpu8A{X4 zOeQ6Y%42pa7b6yReopHMa#~T;83pZP5cD3b*DsMHUKnnue^hB_5gW#&#FYhgE0&ClO4p)d6cSJcMiL6V@SQKmfe$|cZ-43w zuw!w8JWD{K#3LSeES`M!8$s0&@BgirBiKyj;iHz*qwUVO&(0naWU>K`{vFL^`=sCoFD?PEiKg zGU%2g)zz|WNDQjTNUXzTxEw6lp8S+EaMFukjhVwvdJBN}6VXmS>nww_&&C6Ri1a@> z4`@u`KRZf|Cgx3+h%VWMsnZU6@(cgqg`fWFb-(%MH`)2=u36l^%@4+9>~?aLWmF9X zR8tQWl{`cQK-2bFFHVqL@Xi|fe2u*W>hRpS!sIhR1dBIAh)uq#v1p7yYDK5lv7_{I z!&xJLM*uT4Nm|Yd$;#=k%0~nraPT2(u8aOrVXYHEAAeLDiv#p_qWF%ix z0KyQYJF87qjq0#UrJh?W+n?I|6|v3&k{-sMWND{QVEv#EJgYCEP#8=+=K3D{J&7}!`h1?Sr9PuFvZUE_E zDzCGBjE$PK-Z)H(pr9V$D{e9uLtN<|>i5waAtp%&CGW3nU;@%SK~=GCdKjKpT(Jo9 z9*zqs)csL~sZJ^&Wu9554HTkK^{6ZV#?KMR_YXqj4#od`e?>RuK9s z$jWOpslb877Cd(t7ga-LCK8XwL>;6n<=`hygga>>@#kHoS`+COge4YlTzI5bWZ=dK zKVYJ!vz>N=pv+7nDPFBy;`f&O6C8Q?I=tkg?*f|~WEeMI^le=6wQu73A6}2)o&lnj zM5@uaLaUR*kw}g^xr23t(a4LjNovr_1Y@WRL-X34Rh#sx;V}@P-GUT_Oyk(Smzh5> zukbTU32SNP2}*U(f^tYi-6+PXpu6HTSt`Dq{b7YPbtucoRE?weg*oxDC()yx{Q?|x z`ZGQUbpM=)zO6rJDcirmoxzWveMRBN&QB-~Jpj)g+;P<(T>sTg54z;MPviP)Z}jY1 z)b4e~4l>FO8zRF8Sp|*@FK%TC!I@fgV;kRvEHO=Z?s(!cH3JW8vO5^z_uu_89QrH23cqb9+-wi9gt+Z? z-1@_-aLE@hz_pic!7wSK}th}EVCF6OD&Xwk91opO7*&!Og!dha@B*#zh_){%=9F5S7go>tyY5F zd&WFoUJl*1bH_jCF?i&&ej5j!a>kdCtp3xLVsKV1z28?1e(dZk3P0s&acEXi+By7o zwd=Z9-g@!Z4*Tvud<>U;=LaA%p))mQjB_-ZlmH7p5Cb<1KcjPhmRdp3mAVX;wmXD~ z+36gEk+A+kVEJ@kaFFZzkvUGQ-f|NLs>Bf z%fn#&7^_y#+6SL{Iu1YMH~64OpY{cq?t6*on*g9{M(i6Ce)`#06#k3z6N*C{z^`L) z>(g(zc=OY5xbQ2u^lSf)J-ZhCm@}H0?b=D{0VO!qPszkdmrzt5tyElrBQquwk6tH% zF{VMxtq}>e;F8jkiz9W=eZCZ$(YS=MvYK>SAaYIWu1QAHu50&U09e633|BbmjFWKE z)1Qb{4?a$^BL{on2g`5=9*Cp@DbWuJMqFfsrI;F94K~ zCbXC7DH=XQ>4W$k>X=iT>(+8}KG=O3iM5rWdK2oxh0DkgxuGx?l%S%JFS{d?IhTYp2(d#-KcI-wRf7&Ck@sY=4 zX2T(frHmYZ{rp$r#+!D-C1O9;?TQI*)J%kS%Zl$|lr{wPKPons{_u4n-Bw>1HU4z?0F0i(x;kUOkhX`1r?R<4LFB zz(=3)jdbl1{|4a0M6?3{e$m&9|C6(?DEv21T^xY3BhfigKeigc3$T3C6Rx}Hq9@$2 z`JZsr#oxv)H*X7BmLqAmh>SCa7*>;si~%O4hc)8eFc??D+ABf>GS)O>=+jkb$^mI2 z`}=wuA$WpqxC_n_m#1z9&oQ3Q+!VGW#_d?O`WHZINOM=M37}r`iM>|MSp1!C{EDr{xz(B_+yr5AN=@F z0oj*`?3ZgtY279~AWTp0?eh!0lKh_>U1QcDq``$38Y0>W;GKYdC$oRj;ZJ_fFFkh4 zMZa>#Cciz4|1adqzH)8`6IcMO<6}oNL5O}<<{W|SLvJ6yD0Larb zb%avOczxs46ymxV$n36^W@R!8eUMNU73L3Iho`>s`FPhe{|I~f1v>2ncB%!JSTGUJ z|Hyeb`Y{hfd*hK9ERP!rIo0mTSfL}=zy(JZze{~R66i}vjZl=u+fiiY^(G-vse{l-)?bSZypJ3vlQZ^iu%-iHL5McL@a9 zChS`+{y&_3ox?7yyy zKl=QKasB3t@S#_~2jkM9Gu=j-IB@W2xro>Q^GC3B+wJ(v7rqG0`DsXchA{Z6z=AuZR=goZDwu(_#L1+ zVfVG)|D`=!EQZ2W%`-FIOKCC*0t`a(BWi<{{;(9; zwf5;&g+D$-WX{1WDWE1s83Q6Uin-c^W?|lV=sIiuD$YRWbF*ZjQ*&?nz>e!-aXQ&zHZxLtRqE@Yb4HKc~BzD zESxbaQI4==PzG6*CW*nQj9?$)a4_Of7Mz$!GpkqIqaJ!39`x`>VC_R5QOs{R;v3n1 zN8b$KBSdsb^PWmqP!o>!jR<$+*;f?q!6OCYJPU@Mr)h6x+8vdHK#8AGZ6N zE890+@^85Qy4$dP=WQ5Gs^|lljpJUgLq5Xzz|_huf)A+FfVOrf@=Bq$%AO2C9FVN3 z6`P_Kbk1VjAK^D%{8UUIuol~H+=e5MKNRI;gg6{w?m>rRJf7eyANT}r*s=>rp2B<4 z5-jx#%+2H&7hXmORWDBW#6rI;WlhKs`tx`a8kx6s!psCSkH=-GCL?5tq4Bt&gAQJ2 zX4bC5ArE;d4u04pFnj3nw@>fC;a|{Ma|3`)MCO*dBiOX*Onc^;n}B^-!99BR6@`1@ z)N4%ubXV1#0dqJKz(au1Q_G#V9(v~$mmCs?JJ;QC$t76Yz72!zx8d3?J5W_6`zrY9 znQ26043jZL77Q~v;yt5p9gRwfG-o#q=mvXQsgcCZ$I!OAvwDw1tZ@Fb5Cz zfwPQwGVxTEo+%XQbu(wv43xI9;lMRmv+)pgRvmy<8}?(n`lvhCuSqY=k2>7|*_Q!a zXR^*ET#oMg9tgpRu&)sOT+Y6t@N+&2NE!eUXP*r^=bRtA2`rfXfdGyL@K_A454&#O zegxv=l+l)p;=;JQuH176{LbsK_2%8^4@T$@#_*#h_{j*n7DutDh{r{RcDIWpO;J{1 zMW9vI{sxS8D*+ftGf_Q84bRDqM_E-!4P*6u%MuZi&NN)BhnZd*Gjm<6J9r)Jy5nKv z@_6>3gZtU~A3H0Z z#DxR^XVc^3IZd4NT|Tb``S_CntOEM$tEJI{2ivZ_sXe{wiIc5A3ZosjyE3+p8}7If zY%&b5{|=UKy&8d1DExrh7^PNxT5FI{?YPD$CLU{!KNb1hI;7KUk###uhRd7V>yI+o z{C>-m<>jx<9D2+Nu*v6v+yM9nfLkGRfAN34?#*X8oO&vNQ{`Li+Zf#E&OV;PeeBe7 z?!7;z-2~y%OUs6TZxAfTT{Lel+l-9Oy8A?yDUn+tw78LYQWlzGMP*! zlj$$za=BArMqyBi-3BH-@oh@{2Ji*UIt+peCw3`#sl*DOlQiHW_yvX|d;o7e27Co0 zPW%Kouf(6B0YeVoz;?xeXJAx`Pt<@*pbu0KfUIwsH24kfNka7H z04AswkO7aP%OXevIEhxi-ckyeEtCXlSPKn%0@eg+025sYe@&_1{RLKmYiw`^=1mC6 zfWFAX%i3POm@)`zz$+S26OsXv*}u!f7uyF&9-slw!Q~JPkgjYR90g@@G(xzpr3qqe za}owH_mst9K)aMMC$SaX334Me#QahnrvZ$WIj7?=pj>&NxLV;fH(F9otKu*K*Gs@z z-gh>sWf7MF(mHp_1AseHX^Js`Kh|mRgZKLrf&q-j#|$=uMxU1uGes0>euJ}LJI+5ox7 zF6M<^HcS)zE8FiZc+CV_>1l+5H=y2G7RQ($+E_Iz7U%>^$ACq)!igKuubj^A=K9qP z=v3mY>MgF(+0yoU{QM<$PWya#Jzj2+NckpK;4wWCJ$td|Mddm}Y?c z-C~&E8>W*qAnW-`bIY@L7*%55xf`L#8=!q%k_1?*#AiM6jVY7KWHOmdCX>lzGMP*! clgSj-93ctHsySdjs{jB107*qoM6N<$f(5Q{-v9sr diff --git a/app/src/main/res/drawable-xhdpi/ic_sin.png b/app/src/main/res/drawable-xhdpi/ic_sin.png deleted file mode 100644 index c308d4eecd52575c62841e5461d4729f62fe2ffe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 698 zcmV;r0!96aP)YLybUGh8BV@Y#9-SL6Aliv#D9sE>a>wgs==k zEK2YPQd#Q%G<^@;;>(3*-kZ7NyN~mQ4-CVc!#U@@x#!$_gFvNHsZ=VJN~Kb%R4SD! zqRQoR8e9S;@D*%>P4EVcfg?#yz7xCzyA}8%1xjM_C&99n>>7A)zTctme}U^sO1>Q| zQG)Wh4>W=lXaJ|c3#$nINl5+xctwf51xG8a4>##;*Z?PdFTf}z{|V%({9fLOX|kD> zBKn&Aaj;IW^tq6BhrkCa!l17OxKBw;MYO$OTBO*123g;d&x7yuUv7_RpRyLkQQr!1 zkAlBbqmMJ-H+7DzFUhx<9xs9ai2C%cw}1zyYrYg~3D7G+#c$31x&Y8Fkv z5_q?RIpU-7CyQcF+zW8t8hTO=e2$aPhjA~!Qwnz2k{B+#cmq!%ryaRtz zt{3dRF2Gru3AXELv9N6eTU3AnUxut13i^2+ekRDzH_+ru0j^TuGG^y%@NpQdke_j% zHd$$Nj`%nDVhuiSSVhbQKFORX?$Ws36T!9vtdjktuZJx>7`+R#RW<`viR|QFqS4m^ zNDu!>$=nTLGi3GsLg2HIz-=p`TNQrWYtAMAb&%L^twR(bV;!3bug#9M+0X?ZTNf{~ zU2hGNAam)mSmnBnkq*)pBuVB;7egdJmzXF2pF&(QtNfOgxLmGW_V$8BrBbO>DwRs5 gQmIrbm1;lr2e-$Ks>oTmAOHXW07*qoM6N<$f{tWCXaE2J diff --git a/app/src/main/res/drawable-xhdpi/ic_square.png b/app/src/main/res/drawable-xhdpi/ic_square.png deleted file mode 100644 index cf75cdff9d04e0cc9984fec38f793cc2d468dce0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 165 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=Ii4<#Ar-gY-Z;p~pvdFuSbb~W znrrhmRc~Y#HnU*3 diff --git a/app/src/main/res/drawable-xhdpi/ic_triangular.png b/app/src/main/res/drawable-xhdpi/ic_triangular.png deleted file mode 100644 index 3bc641ce3acf368464d02825618c22b0224854d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 770 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

g^r6FG3*zjIsEEt4jB-LPn{?O8 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 diff --git a/app/src/main/res/drawable-xxhdpi/ic_pwm_pic.png b/app/src/main/res/drawable-xxhdpi/ic_pwm_pic.png deleted file mode 100644 index ec19cfe717f4c68a68b8a528dc1ffde8ac20b9fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1386 zcmajfjX%?Q00;2zev`30^&r$CT3Ab-vT-JtGqwm7;SgsYMh}uJd0NXWYxB&Mv6H$^ zQ@xbOYo2C`6GtP3kacpS^Dr8=MV$Ks?sc!%=ixtiGrc|C)RDW9004Co(dFdkhyGg? z<;|U7C)fe7#fs!|)aUBR97hrBNm`4+uyFMr0o*4-8Pgm zmZloxa$h%2J&x&`9d;PmR!%b`suIvObrE#EFHUdcmj>kL#P3%}J{|lswY3Wu?J!q7 zBu$i!#|u*j22Dr>sQ=Cze0EOGIOPb%K!Yc0Mrn~76csO6n7V1QvV-*!Jexdk3$3u3v=M}%w1%77|MKoqPxyMm|1!efe3XrH;V zz-_Glx+uUDK;C=6D*rvccPyI9KvS+KHd<6b-lhQ6HnoK44K(`^({9&g{H!g7qX>er zodGJkUXdKnY{ldko;sMvt@bmPR9kxK&_=*j?ImNTtm!LHu|vFGd`GLBuMlH;gq&;2 z84}Gi%W}xl9&F`t5Ttdi6e-QBBd}e9fA^Vmn6$o6ZUP>F_VpZgdDS1noy^p!@i~fG zPLd8W`>WcyC>R4&Nv7CNVL28hWm44f8nu?;=3BDGZHw)4)K&n@EKjyFW#F_GaOJSbuGW|ezr4OP59o!5diE827 zyY_HQ^;E%llmYadg~H0fZxhy9hbp5m&-wh$6csIvdl(7GIT5)&S)bC9e3W_oecT|s z^D{Ek9^e%YJ$|@HdYwi+F9e2>Hbo9V0tp_M?s@b^etC{wW3p6bkkuDbGUx%Cg^Afv zRSD~X??;xX;>uzDw_M$HQ#+4O6lGwTDvl5vrkILUfc`;Rx=9)0Cu^kJ)z%JQS8^~c zZ>@aRZ{6PELOS|UKEm385?kc2nR4u0tP;T9U4Mq4aCS3!#{UtTnC@!|I#XKA)NO8)& z9Knd0TC6t3DeZ;!p4g&Z(2O*X7j-41gNs>>x6_~X)D7tHcEK1+Y1m8tKFTk3@Z3o+ z%9tvRfG_$xcrcdu1??&j6D^1!tk;fuP46b2AYL*)ek60$ zx^U+)y^>m1C2C}5JTQs%qAXy?G#x2$8R=(E`9$@3jJmtkvy=l@l}7uazDX&7Y0);| z!$Le~g~@W$Td@M8kX567ZVqhWbbCpm*91>e-l7HX(_zGE=f0{_qrnc@&Dr=N8pzH7 z>z(~;$8d+I?2`)3X#8wKhUP^_E70*>RtP!(vxx$Q?xk;l1k-oJ@!v4}h2#Yz@IvoN zxf7f=kgt0L!j^6WjE~>1b`sS@mc1J7W((-<;i>%8-XC-sweaWw+ Y;2WjuOyBrS(QeUj8s<;vx2QpsK}Y?WpCPIfjQ~@>iLQ#ai{e`9=XU)& z^Yed1^-O}l1eAk%KPI}7>?W&zr#~}h{OvDM1)cTY>AVBxH;J-5mae1v%6E?OfgO@J z^X`H&qRh|qS;CHp{u<-l6V0L1?#9)D^3mz#$_Ha*i8{bcs;AS~u*G^oCcR-L2kQ*XROhDo>l)cq96?E(ujFhc-kUKU0@H^CBpj0WY?Rb~t6rMQ|QGcQ_OAcc=y5q2HDS4p7 z3D|E_DSQA7Xo&DWWX4u|V%at&pc0jUAhy9h#BK$#TWwp5s5QZBU_|K*#8u^Qt&I!9 z;~)WTA;;VUV)od&CzS^dbg5drJfwK)0n{^)fU=mafG2WF9U;Xk2eH(eWP!~ICDFo8c6Nd>2k167Y>DVQ zFsvob@oHS&-q}UB-A&u-V%lM!Lc-|^b3OHpzGO4cm3@X4JCOW`LRA)IiZ`PFD{=~<7}d<{*zFaBne(M z6!sSP|DJ@^qDN_(uXa|~)5Ym0AxCt=<=thZ5&e!@A>9i$5e1?HNoIuFMZF+eMYjkc vgb+dqA%qY@2qA~)y}gmQK|#bdu&jtV ze8aX>_N?#(_UVP{N4%W-XH@uos;bNL390R0UKiu;BQ|>dmeV<^B2m{b1A3i9c!%av$u? lIX~>>1lq*}cLT$pyPTz~G`a3)DP)2i<>~6@vd$@?2>=&!Kp6l4 diff --git a/app/src/main/res/drawable-xxhdpi/ic_triangular.png b/app/src/main/res/drawable-xxhdpi/ic_triangular.png deleted file mode 100644 index 72b55caf0175fb641016af499a28c9f7ecb85d84..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1112 zcmV-e1gHCnP)pAze_q5!7RW`4Ccunh}Z*5=aGws9h|&8a-8B z=%QWcKiNL8KbnTU=ex~0^ObACdhlyz&ez(bNPuF5;X|`~*J|YoU-`@ym#>1o0DmOe}^{cEm3r4uy!HU@vhg6tnO99{(Kt%;dpQ zsOHA^JBfY5=bwoip4Z`&;LIKbpWKn=U#QA`rzlfJiag^@3o3HWT^M$w>il*=TuZ0%RX+@%_RKo~Px((|;ik=sVW9UhfYJV!b0)X7Suw;8zOl2VI>b*)3G(jIcS#Co=e}K7iMXDgky9o`$hFRSb!tkKzc3)t02A= z#JQ7+?}v<2OdJ=+c}857L*m!+#PD1dU|8AbskHQ;n^E#0KL^Aw4K5m74C)EKzt7@$ zOulp7i854Oixfa3|@_fHJh1-Kif?`w>-_6||0`7I8*n+W z{;noY31SS|*e^0c&l`fl@g6SPL&n@6d>8ECM3i>GwkP@i?4o~d%4du`;eGPX2z!uL zr4ek-TkPOG7*X<|Jc8$M6@1?;0IuOx=^v3cDE+};HX_lzE8+X8i*-=Q12a=kXOai( z`~8aVcT@5Jf{c0!}O%XZ-f#>*a(LD;iukOmbaY - - - - - - - diff --git a/app/src/main/res/drawable-xxxhdpi/compass_icon.png b/app/src/main/res/drawable-xxxhdpi/compass_icon.png deleted file mode 100644 index fbe46d8d92769e1969c8080229de2e8a3f57ce3d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 436188 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

$fMF2va4zo2O$|12hQg4Xx0}@ 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

@M;33Kr)`n9zQUo82RZ32vWQ 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
B8r&tgyIXPB;82Q7(c*UU{o`D{ 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 diff --git a/app/src/main/res/drawable/action_item_advanced.png b/app/src/main/res/drawable/action_item_advanced.png deleted file mode 100644 index 9fb20aeae7da19065ef15057601129295f373c7c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 645 zcmV;00($+4P)2JhTIN;n7DYThO;CCX?cQDLg#}t?e^sL~lKyE-k zB^_56-AY=|y+N>kFa=&D0hq%#$Z+hoBvOn3fa#bV&#|sq0jELkRR`y(gnB2iCW$WD zhtcinJ2C5>z|ArPh!AYv+5(N9Sq?puTaH)hQBt4yq-@L&Q#XDQXktu01?2$D*^QJqeM z-!3Ix1iw)_!~IZ~O2r6Rd%=}X*JZ8LNzMJ@3gCbgB0c;XPg$j8VnjLokIIwtyj@fQ zKw7CpCkA-fymC@!5CxnQE6>B6w)RI;2`yTMLg!(f_y14n6QgY66cSy)52}D8<15h> z{3rx)3JI)fyqMG;NCDGkP4P0?22{>9Gl86Fl~|jt0Nrz?1dEYi7D6NDC?UP7zI?0)0sd{v`Va< f6(|waoO}KOm@jrQ@EkEG00000NkvXXu0mjfHx(Jn diff --git a/app/src/main/res/drawable/action_item_main.png b/app/src/main/res/drawable/action_item_main.png deleted file mode 100644 index b6a6fe49882e4217b3be98fa626f2c357f6b173a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 168 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJd`}n0kO=p;(=Ku`2newJ{NJy} z?`8Qa;_cM0T4&Dcp6s+S`uRttVFTN##W_B#>v>uj9k#9ze`2Q4aIs-(x845P*_CZu z92krWK3h0Bd9Vktr8ML<)N%h~*|G9g)a!qO7a1wkCt`?If+)xkV~QDc^kqTg{Z QC7{&|p00i_>zopr07T?G#sB~S diff --git a/app/src/main/res/drawable/action_item_read.png b/app/src/main/res/drawable/action_item_read.png deleted file mode 100644 index 80bf15c59a742bd186c3b50e392a36d1515c6e55..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 233 zcmV^imoy=uq~AWz@}C?Yx`>MLi800000NkvXXu0mjfF{@je diff --git a/app/src/main/res/drawable/ads1115.jpg b/app/src/main/res/drawable/ads1115.jpg deleted file mode 100644 index 7ecce1341071ed572fca9e5fbb029093cd7742cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25877 zcmbTd1yGz((=Ir8aEIV7g9aPieel5t3l@S5Fjyc#0t9!5;O-E7a0w0x?h-t>2A6F9 zt-asfyS4JycGao(SalukI{ozX{$2cg3c!=Kaj~)m*z^DZ0HnVwfG+@aR8&+nRCF{n zbWHSr3Huc~`YUW4EG%p+EF1!y|6K@h@bC%n@oz=Zs|DMtR@O=3Cp3y76lP+|cS$@G>0X}x@(uEO7C01nE( z5fY*h0;B zF^^(_REE((cS1Zh4nv`*pEc^Y^yfKZFOKhmbOU=xe81xsYr-_UpY$xYK!5sf?jh&Q=n*8S1Y%e3s*@C(Fg}ny(0m>EBsfnBe3d zE$L<=CEXa~gGw!%`B=Ng&@fFe%c1|Ku49n0nX9R3;>HDiMpm}l?qQ#`2Y0L+l(#UR z3OnC%&0ZK-XC!{Dx3%6d3+GEF_NyVuJ`=rbNxEPvhC^fX4Qxi9KRuHxD=QKJR@&!e z!>-7K_15a|d>IE%Djz%%vtJl*+RQGbaXDW(a74MQJq;Z;YiX%3#nBhfWNn%rMezz_ zI@`F`InAqPi0h{e1lM+ry%Zz9_>RIHAbOc6^ilc~>WA(zvP5p9hE!kTF2~KBiEtgN z=HK^3#N(k;3lGtbCA)vVMG;swhyDdnjkjKRz~_pc$zuN$<1+(W;oY9^>C2gFmpKdP z?HQ_y@98N^XDx^-+2;jq7KR)R4P>(M8E`YcQ*-{M@O=B1fg%VIw9Q>?7^B zc?Ea7tuieCZ=7BB3DBu9>1Lheaep2&7cniic`M$^d0~(LWtEf=uUbL5X`^E1xz5pH zzKV(e?zrUeSvPPu=NM!FH_|tgmg|eXC4Lbv7_e9((^@gpj4OfU+uv#h6qM9fWSj8B zp495Qtus^oITy0Qnx=0Ps6TtAb14}4oP9-12V}{I^^B>7%b;x6vCj-I;67Hkk%|Dw zWv3a4?dTNM&R<4980M%vL#d^UVi@`^FIyQ)C?T^2dPS_G@Ek( zyemomoq5xY!On$NCw;Z%@&}>hM2&0rRV-=etT0JjhhXeCacc6X&iIl@Fq_OMNlNffi4G&^AwKJ_Fa`EmykJwf`& z?P4Nqs=1y2+Q&b&3UQeq7oz;p=u6B4rBACJ^93Rd-2 zILCb)$m5k9Z9Zia>9gFD5U52QB?5T1Qz2{`m~%L(5EvfoS?-5wYc{hmLRi*5uE}j#RqH!;)3l;PkcwHta1BTNRZ+u@}`7y%m|lEa>Pk>i^By zbIc%~@3u^3#PP%iO+@0frrzY&H3dZPBQ&~SwRMd)O#K;6sg_zi`=fny#DtAjZ`%Fi zF=ezhd7|vc7>6zT#YU5dvg0H7ui7(?-`i$NnW~zf-^Z@%OG1;%%oP=G+aAkdMdd@L z4BXA1^@@q}keDEjKB?EoZ>w|GypWxJZb^qrq8*@`h`mVDWRiT3FvXijSk3ptt0tYJ zwk|c`@`ue^-FczlKC3!aMiA}(Dg`FAz5y{3i1rMszNXy z?Mg~Q^eG+fo<;%Ahp(b{QEJ2_OX&Q1jhSl!KvnWPG(Ddw*R9>Gck}GETpJQn=KSy2 zcP3{^I<^;=EU`=o_F5g4qU#Pn{d&0wov!4Z z{~fMRY&3pLJ}ipG%l=H{ZbNQWtxI1;#DkUCJSjx$IsIZ}5VbQwcb;2Ob=$xE`sRUa z$vEe?md!VxfVswMY?v*T=2_@uW7%JTqBW%llgqZt`Ey!gHJ3&AX+F_P>S`J>Cp-c1 z7-Ew`yr()ldsj!s#l%3r>HH?Eoj2oaL zPN`5wIAJ2W=gAp<+v{8kQ1Gk$dWCrINH&)y(c=A5F5!aQ;Z$OFv(shEA~MALi6sQg z&~upLNY8CiUqYk2!7cg@)pY#~N1QBBecXtud4f(KbX@9P0*@#RyWFkraHHl@jDPOi z6vLaIX?Z#Q3pjtyX7J?6;uyM|?t0{VEQgv|Y>TpeNL%t))+0eqbWSQ`$|oJ;Ec$}xX?^rVhpagex22}l224YBF>7|@FOXq1%k&Y>48A7N&m z?Q@fJgsmBKzQx|U))^ug^j-Qu_Dlc`DFfuwK`dw zyo(nD9v!kcZqFY-tgm(8Yn@6AACeDP7WQp zzeS_jVWBtEZ~G!Z@ac}1jTKFC`9s{f$XHlp*!2}Npi!|+pQZ_boFdG;tZlQ@qhcEe z{^(rZ3hY^iU7S8k{OBNy^KFH#S7|QToUbMV`PaMoEIDM&##H!5x`tIWIzvwmj2uQU znAaN(Y6ULp#XCP-aoX7TTdWs8k8KgM6~AFyX2eR3)>M*<%=-KwYdE6WK^Se zGauFA)nw%H{#^7H3(=rMw|`kFbFi@_mLbh3F;QuNZOvME>qG?H!T>p zy;YhDhn7O&X(TJb4wFtr^B=-Ytp8mURc~RS3u$`fPyKtfZJu_g63MVNSPPZ*GI%nC z&6|>x?F`8wq@pl~jnl5DX^ef*+j_v*=iasCEkEuRPBg{qEccW40n;8y3VfKyXQ%_a zRO})XGf#{jIAVpj5(I^pe-0dF4%c`E=1REx{q%m2)$-O`(DAmU zakgo;dV2idcsfy=w@a2O9gh+AsndGfl?*_zQc=0G4BAH|mZ0-gJv%q)jH-9it3$4{ zg$!@ZI7dbBXFwn6?8V5nhIU`(%=aIFX>HZPUedNE78YN`Z&tqk=DPXBmpj~=FsA0_ zvEXl)t)qi-UgQB*4$>|5&^s6;93$v8pdd2MG^le%bWr8ieg$CWWEw=6%U z`IBYkAfBq=uzc=>%at2LY4)FP)*m~g%V(mZQi89SP8kNN+<`(vB+Gs!IkBN@t}HeT z&C@FtGUjuf%J?JO#TM_kfeDx<+>cKBtR*`5?2BY2&H|hu!7B!&!IkxlV}?0I%sy?& zo~nv`{Tjw&Y7m81>|v&^K9>B-uY>kM(_|w^@{dYK!gcAfyNYws!OUR3&}s@r+C?N3 z2O1kA7!b4?sNWy#fC`6*}hH`PN#B2k_7ANcADeDhQUnfo`yCHQ3g z*dSwp5T{Z-l=SBgXf`@Y<3hs665;E2JOBAm)0>&7tNr4+FW#Q7> z3NT(eiCQdkv&eKOiY%-8_hGWJ{Se{Srr*^8Nj~)UQ!2Xy)C5{IDn>wM%bvb480@9 zDEOpVipqyw;WhR5E!T&C-qS)3c8h6?0G5)H;G02yp12(rMEF!tZOePl>EyCsqjj~_ z#mJ0m!yDWjHuSdC-?uxR`7Cr+?wvU$1H%&heIYkQ;Q8@n!Alaz$^mydtQyI1HEDj1 zw$MRd4ic*i+phD*40J>C%XX^!Vf`CjG}rAC!a6kk7#8A5)X<+b>;UC)Y@9yJGq{ zTMO%@d!O`XFQinHLxg_sfue(E?gO+xKfY!6jTLqzDKjOByv(XkVB|3x7kS$)((DtS zXO(3?n4I>Vm~nJ&J_pFam#kIBqB_r6!OSfcwThKpmVb{9e=j8wfbh>>E`($Rj(YtC zG;XeT`jGgO9BH*vobPN*!nM#&oEb6J{RV*CjS|y^?z=kW_B%JQ!&=4l{Hk1AS#CsKMd$CofYXwi1AA*Fe7)V+V=b3S_QZ^=s>X^1 z(I4lFtv|?g<|W;W#kF#i z-l1Urpg6+yk7QI%mKWHTTZ=S8#WhVW?N+kKbFJNMrER_a^*EvJC~9G#AqL8BoSSJz zMrt<0c$Ic2^t%F*eJ+J6(DYq?JX0|i@@d(M%eWLt+YjNbC>fm4OIH!8z zmLETMdQ69CueZnJT#QHRYZTjk4HD4VD0(E)sD_5*BICM+dWzakcgq!D(Ri?S&M39U zHBhPVaVKn2BQFV%yRS;>F{N*q_t@!2>ZPbfuV{3}`pFcfPZOUBsyWOx5p+X*&vYA` zx|yj%d4|&Klq&(aX{5D7a%u6Yt0G*Y9FB*}vtAH`t+-ysy_TO=3_C{LqN-dZrHQWT zuemsI#%C=@GR=O!UD1JSG#4NPe7==D&mJ1YEbD>ATJ^FMq~kFCTAVpWA%tYPUT2*X zy=F9_XF4PKIh-R!__LWvuSZU4Y?$9u!j&I;Z?)DRKTdl(r==X~-faoPcXz5hKCURR zE&7KYbRC^_I_4UT{I95ysqT8L9b1ZfNARd?C0(qiYuyhNkI-cuaHp?M#wYYTgzFvv^`E7}};>`TnrFOA6&@)6qjG4d1BW z%&Jr=TDw|)w)U;EW9m!5<#m>uK-|UZx^R4T)TfI=1i=OZ@i?a0O~la_b{fggEs`Fy z(Uz%OG|Kqhg<#CO|GYzRKG_^X%VLtPR`V1ZNSQGp$nZaq$RiHc`@)wb^jW0YZ z%BAZD&F9tMO9J0nC;y_AxOLU~(IfTTF=u)>TY$u($T-5BWVyq;X@C*b$LTkCNB3ro zpMNoY6c&EUwmd9y1UI?u{lijfrfaF`yieq!b2wj$JPkUvJI8jCWeVEYoY=7gr(RxN z=*Nxrd-kTpmh?fMzQjG05C*8VyPV}C4{lnu))W_hq0}4eSr+k2{=riy7_G5AboNJ= z2e#@gK2%qu@`)Z^yt5Sc{B5TtEN*(xtouF|H+Wn7&oX6-n!-n*5a*z9jrHEz@|YcJ zx=}wTRaEj8b#fC|yBKuYU@t3$`5{?bar%of@SJqk{-ZCDPwK!MPu5VgE{&yryVbYW z%?&Gf%$--NA6@&Hi`m6lth6nNC?5ex+}A1x10l1#Ezr5L62VD=gH}FJ_;- z&wxq8EL|lRF{fSzz<4lr(2)+6b30+p6ciZ5#p$$zTkVi6zw0gWj=`eDIz4bO-M*=X zPZKmQ8HI6os9eUg9IDgm(AEA??{2@uHu+aO4Wg`6hs-t4O*D<~x2RAPX?8A$jnB~_|&Ss8v%ZeMU6cc&zAd(S>tR6!QI@}bPjrAZryl`t{`q(z@h z?Ncb(SU)eT%8Ur_+Z|k=anrtN57wzkVN;vivKiu$Z95mfpjzIoDM^o7yQx$1uHxEb zwegqB2q+N794m0o3n7gP0flzisgi>etRLq|J)y2y>QqveUJLH0`h$wkEzuufPfoht z#xDZW*Xk3*+gwc2NFnNePm#}qlyX?I{#>;sBANR1iA)!dF4%@U!x!j%E-PqR3wR@NbD2hgk@JiCsne7e-c=Q# zt7)cctO-O2Sa=G5b*AY63mAy zlp(F_^SI*Jsj~SBDx2EL^lg(}VeM;$K{rPyA|`>iN27J)rWp0}XxU~oF=r4_VqEyT z%)XLm(Mbf*1_}l2YduYhz3_B8WLEr{7z|+HJMMRW-!MjU)59PTKZfYbqSK`A9xyy4Z^l@y>XYD%(6D9hr;dFc6@rO zFsME+F9;n($~*e8U|e=K0zV)@g9C6m>QhAL;t5fQ7ppvlHeVBfOItxoAT{a4Y>Mu8 zg5_EgqhiK*2))cWamt6TuUX|&(YP1kwAhiATr>QyQ(~g}clnpl>kx}S)iUW%-ifPn zKx1l47lowsPvq!vil7WuD61u_?u|YY$*ZCKdh>7hF7{!6tVjK;c|nCoQpdI;2`A5g z4)cVX6f0+$G#Oki?rxST>-%uH`!^t;`EIV1b@Zy6QQg-ci`3;X*#cxaI&S0 z*s`{YGXO{2EyQyYFGuGKFCZ1_R)F`R*t9HGFdc1xY0hWQs``|pa#n%p3QqN1ccNGx zeib)9&3aP^Zm;Dxxd@CiQ)cf3bIQ1r@Nr*py?{~M^Y(y}zW^T2B5|E{oB#&fRqxQ> z3-VYd-=-n0{F#zA%|rw#t?hSZw4cIa+_II6zp}l#%l(t92rr)9qtJK>@T~f6_A8Lq zB;CnIH)&kWusMrNQqiVz7c-M3Gtqa+?&UH>uv6%H`ew-I0l(Z>Z}u&TKs@}Z@U_LY ziyOg9h@Mrun5GzEN)%*{EPMuavX>hB}7p_iuC>E0%m1gpdd2|PVG**9?GFm=z zYmxi=N@QnC|G}Mr7W@rC4FxIN%RB_ITde6fLef4R=@XaPm@AGz3JFlq=8T-IpORt} z6GrO(0t#(xOQx+6MKJjh&A)&$OH1Xqh*e>uqQ3z1a0#0WF2ym9&+3A~(fVp@v}7+z z#H)e2x*P_4fBI4+0R>XB1w3H|%nxeSf8tZ0rG32@ET%ne2$88kbfW_ZBM2dwHuN~sMX#P;e2mOukK$RU77gcbl}^6L6J_mvX* zg%Aifq`Gq5_~jW+lzJRohq!>Qy9|3f?ZYe)r?e6g!|V?^GUM)qT0k0IT1Nb0j33Zk z2IGUqIV<(wj7(28C*!panp{0ztKA~zmK_tU-+Onl9jrz6CzJ*nL>`^e3o|6X+Ssw!(zpCUTH;ZS zoMBxb{Ean9pjh3|6PW?dF?yA0BrH_o=0n_3lYJcLv$UI_6Z}IY^`6?}BQ*$Yn=kDr zy@hneb`wYCmi-UGC(fZm*}O4?a=&x2=`w;pR=SnzC;p#e)}}t|r@V}8(&LY1+&uE3 zPW+0ASG*2h38lrKlFaZ`4=p0{r32473iV4xBgiYxNOOK{+E9qJ#`Pv#roDz{>d-2! zIhIr_WxsFSVkTi%>F-eE&OOXp$lA@@q8lC^8BN?Wi5(A1E<&U0wDO9=Rc%sCk(5fz zC}U&h-a-+ zGg)5rXrFgy0R>$%f6^1WGi;N+KVWZZQ=Q_|jftmhxlJEad?SnMf+i-;#IVdB-z@m? z3jDs{2CD|p*Ldva7?Kreh?tjn(MbB}kK+*{cKt*{&x-Fx+{?5P(wbo#Qc*xC%ZFWq9 zq&QyhvBn=tsd8uvx%m=!(ew$ZgfzM!R%K+uJ@&pM6&rxX$F8KyENGxOyDo0`#5#+C z2=IB!cB=)Qw-#M?qN;m@IrKxu{cg^`pRKGGHq;ZdshXD8)+nTTn$)nDD{tQ5BN+!V zz6N6VWL zxv9796)E`IAtkjA zv7)Gty;^ekDefsu>Cmc8RuIQFdH-WT?`0inU~i4Nwcu9rlD*Vpl_13M^wCip0_{qh z^h@aqL7|5s%njO_Owed|)&`Sp*y4&C-PUy(PqKJ~;h&cSXAW0oSuVv=A7TxQf0}=2~tNKH=<$!Y4~zcR1-WXeT=wLv-|@D!dsxO z#u|v_Ub$)C@S51_*LqPZ(iK7DRayQh5!)Aa?IDyl_XLTMgqXn>g-|xs7i$Q!=_Bs1 z9f)&r(LuGoUabK{@Krb)1r)~{NAn`+lBA!JSuKvK|8&&_inDH=aVyN#$|XaDgC1lQ zLI`YEFNb26J=U`4R0s>TWmAf&Kuthw0aH#{#d>A^!$})zUd%UHG5n&7e?A1oZ{a5< zRx3kOuoB{b5N(vz2a~;n#ImjUYmHd7f;fRu(e|8>OQH`9NheWdAflA&0c;0?B!`&t zLy`j{Sn6g|b|uG0pP!T8E`2|-4N(Pu4Ni&zHgz>BX2<%LH9sP8iUGN+nbCr$8%j;} zS<#t|;jc+|%D;W^HxWDdId&TF&0f>}Yo9@5-;S3@w?>X)t^diWk$=owDU(>hJSKg0ZdeEk&{jOBt9man7 zwP1Z#kNXPjX#2C9!QBMkz}~7;+bmnn16m8&d}7G*3j+tJGPbx#EJmU{E}^}Cu2#$N zVqDFw{@%szjp?tX;XP{WbnBIvBv;iGTC1vNQ+j85G!}F6WiQTYjTfIkwy6=ME+AnoE28J}LM z{Ra8x3aOp$Az}GROhqOXNh35bK*MtnE19%;dsSI9hnL!2^@i!ovwArmL-qX81bH6WC(4CiH`InLOv795BE#HQ3%|Anfd zfAdu@I3cvXd7)!T8Xr9U39%Jt@vr$TD@ZAd^EYFTHpeE**<4<~A`WnuucLeR5X?je(q8sCTQnH4Kv?)YaVwm

FF%~CCm(D(Ll}8{mYqj^lh7g=B6u*4AV#!#B$M|BP zstRRbxgr}Xw*?3T$PXLlr`>{InBN)VPAaBQsLM`K7cpUM`evDr{PX{ptF<^2VWIrMl4SAdrf4zY)CoOMHxG*7RAFD8f< zcz&7<*pll4(*}6w4xR)L1}S)a22;}!9=-%aS*iJq73y0>@#%Wo;*0q=ccx}bFCuKd zbWMlcbREvhnY@qNa+!>ZqFgG8h;G2H5syO)fxNP6Ep44bEc@`M4XxW=bAORccK|^0 zmD4?Z__FAo?Y#2-kbe_eeb1pTTWZ_2(D}`uBj+3Hl0T=~P{YrydR&RTasupdfx68B z&}!(kpNjdfK#&wEs0dA^S%hX)&zg$D7-F;aEk;0~SsM@RC0pa z&5q_~4j>59(mT+HNAGRxaMeY;YvbR#yX>{$P(sVM@AjdVI--!Q@>imu$Wc!7?8q@Q z{D(I-ZeJ{W`k`w=s*E9X2m7$u$)lbeFdUb*Px%jyVJo`nrSM&V*BQ+b3T4N^-kXcn z7S4pBkzP~*r1W84>CXE2aqmDfdzP^%t_PLb^&&NfB0Cj@-<`*MTHIsCxC|6@vAtc9 zW)lJuI^{8y2|bo>1>6fv=TDA-xb;Unzy&vV0xol7l{QLBpII7GtS?XX zY4<5@t)wW)K~_;18!dp-IirwNEfZ#2N3(X4{1p7UDiO{hwB>pD0kfb5!xnd_`aIr&*LzUlAgJX15K8vk>`h?)p<^^k5wck3Y>UeuqGxcZhF0+Np zy4m~8YzHclKW!_$;?@kwF{AcWF868kMcPxpa_ALWn#S9GE}_MegKM`w9EVO%^PjlN z1!xnJM%A>@z#N_nWFD9R)926nUl?91jWLqdt3qD5m!0K#la%@|sht*ay1rjh!hrHF zQbtZ?f}`0_ox298w86SMj*fZ23^|zwFDbU5aa~3kYQHxo9k(!%94wNKqJIIa8eXE% zxs*PZy{Nj>t>(1_lRwpsWnaqji15>(gQ3ku!_kGw-~*wshLL%p_nkxOL!E}Av9bvx zFxc)FMTeJuQ0O2PU0dMn%VkaBmc!_qXr69=PE&e-rQ2-9jse=}GMPCs;~pm;HtPzv ziYeRVot2#2vPE-Vb*1Vdt`CQ3f$RXLnd7qh9nTj!ZExw=?S8S`sTC5%e zK^!mw_22t~EVLyS`qhKO7IZ2;#4BW9Qo}~ec+I*ik|QbQNYvoUl*)j7t8t$}&5U0pIp%9Zz`VNT|-8;^BC{h`_RB*R)&a5XB7?En)9HYjj9`dvEu z*0+g^j;M>U)lANgTFGv z&g)3EOv+}H*R6$1aaU){4hqwjjScQ|=mxg={{on8)6~(i2&GXdOy(%%gSJj9y%sAU zEA@w^f_Tl8g3BoD2vJQux^h<~T=X6y1(;t_y94-o&ieMC#~AL#+wOI?q7<0DjnuZs z5)flq+nX^>g1isF$&il*^%_qhnzaSdt~*Kg5%16a`S9YoKqONt;avMt#7)) zeK44!SbmD5{Zx4jf2X&E9||O!^>Eh8OcAKA4;c_Dwy(%SqN6>;OykILX2TrIVQGA zt|8xZuSm-EBq#b$-s)6UEoQlV6&DEKF}<;D3#)5DYD?-wQmn58d`m1?LR@1dfYFPo zn?g#yA6-L>>6y>#JOk{-%VU41n~lDT$qq+$dn0>sa3f*z$RdEZ8HpO=bbl0#vGp6rXx{l0uF%p%Y zz@{igsLOlP;)Fp&Q0Z6A`OsK43%L$i^nSLoN)ARFA-$D5(d^BAm9;ZQ9ZJT!#L>7_rnZk0_{Jqz8pFSTioHcaDON4PNOC% zxq6kIIKd(IeTol{X_8uXHTwucg}}IAj|;4M7kAQWoTT#Rm)*>isos&^aKq8HHm&t= zD~7A6Q&xqg*wN{i0zvj+-L9EeQ?ICGS=U+D9Gj*O4&LvFQvifBsVl^ivhBsWu@PL+ zrcnfL@UCOkD#kZB_kL;=E3kQUg+?H;krHRcx5@I~3+3c7&E#II93c!!_Z()d?9LX}^wQtP3nC2+_!vsg+} zHQfT$?f{O8w1q%}WM*`W>G_l|`}qAV#9V{7b-o*)a!1}Q4Z3NxcX41eo&uR$Na3@7 z8t5~5S6KJ8)n^b-F)@95E5*C5$2F%Sbt>-YYSrwii7Q}%Flq$Dfm1$5LiYG4|8>bG zY<~#avRv5HoSDNpsXPrTJI-88W~jKcu7DmcdpGK(- z5Ip=e3DM$Qb9AmDv*0N@Dr(O-Q_ZdowM`_K}UxwwY%Cz;(3L=SB zH1P4)S!blhfp&c5i9u9}o3DPtpoF3JK!HmQiJ*|?E4It+L5m-)zYNj<`ZZz7{CFm@ zA}HO_VQ3ioWnYx+{j=NC#Oy@Ym1)}K>n8gRlMQB6JS0ryQVzgzW@6@Z3sY4rCqs#) zq}z;K45xlwhu=@s7GE!|a;?@3Y*S247p=W=w|oVisflpceHOa<*`TR2H?Bpz8D_Qr zhvfjh*IaUR#}}kboJQkbsGfSr8)qNFvVgKcMFRTuo>sV`El-#flzGErH~zcS%7?^$ zaUqK0)jm~nkW$eqivd&hhhHsa8SjV7Bp?Fx z^&W=kwRJ!P$8TGbA63NW>Ca*D6{DoAbhqj&6;;SkP<<#j6z{pYkpl9<6{BP2OdE$h zaa46<2H@eWju1U%8-VacqZ8 zT+#F?S;So~R@p%Mm5cc#_fLXJ``;6N1JH^GeiQSar!-U8d?S17Isluu2kvZ!>)nXA zX63$)U|Qmnx5y+PY+7hn7M6lOz$Pqzcf!AkI`B# zLEs_QOtD~_@f=}tksIKm?I+sW3QDUjS6xEGx)XC}M|ItWUewC7+#>gTIh?wS`EjahTCNzB0UL7jcM2JJY&o}Gd@^t(rU(7;VNYR{;V>!Ven^f3C)U1C zek}X8j-GZm*b(RcF{Z{H)ba~*N>VKLy9l4ZFo52d zyA<MRx49ysmV=1a@(?c7QI2` z%y>}|1v2u?Sj}#FOx(ucp)yq(^~w{zeJD3aukdVBo#SD7+a^Nm`$Q5cgz7?rxN+tT z2=1+8i@6jLd75~LIj;H6;~3!v;-_oea8*lUHIluJbS5IgoV_l)u1FA}P-Zm=xdfR4 zdOvA0ttGeLV4v}BE*FZlh^E0B(x0Aeo44_ijT0zlyYZ~)U#u1T?KjJ$imuD+1)FqI zL`B47zQCc&dc*0GUDmUHh9<5&AHM7%(ChD-7M~Kg%3iGTR`j?6zTHJ`H+@x|%rW+& zIegSI)r;B=hloYC6#wV%xYq8jwY=9&s=KdQ0pHuOE+;c*7WGffiHp~6BB6G@)T17Dh&@U21XY_D(K^%`s~rGi&PZ!EkjRxIX>O8NU^*h%fmq`~D5wfgc5NTnJG^a5 z3|OEZ+L076cX~|B#hNVjCcpML)CzGr_zP%ZP%=JLLOIw%VPWPikbwk1OsVmiT@R)rS=D zud7RE^icb0iG*oGZOL_(@k4}YG;>r&lLOsbA1TMc-_O<6xI(F*CDZv{Yp>ZcHT^Q+ zuBYwz*jb4oV&R&EXRoKJl$*Cln1N0r#4SCuDq}iXS&Ts*`kgg z2aibv(mqs*KU8i<@7lboReUE=J|Q^c+|7_zRAcfUNj8L=4K`(KQq#l}rWtB+%SbbV z@&OOXG5ra%HO2h#XUEo>rvrR0v6QSHoLu0n$_CLeI>$DG(BgjIx-^Y&c78`oPCLD# z5CO?jfkqX5$xn?ya{%2jdw-oOtFRyFS0Cx&Dwwc;+faPYyzNG;pW!oZ&M0sy*qfaE zY`ux~ZE+NHwLn64QJU0F%`gXr{RiV4gx9e*w>}*o@=vyd?y<;)9Z|4J?4B@k@1S)u zNUXYN)Q|Zu;Nw2>h;$$s?WeYRc&X#WsxJn^wYd_&B=$P9S3Hb2vO*0U8J)^wg!W`T zX7c_vQJQ;)o3;ojiT5l0y`yHkD%OT%A~|VWimJ?FXMOg{E`>3cC@6nCNH8YKGwyO~ z=nhjZu`ySm?e}2Q%;e1H8-)1!%nuGV>5;dzIzee(B^P&f)19QOl)v!)JuJN$hN!{S zyQRyVzLsyC5>8wcsiy#+TuvSm>uHA?7*gvJ$r2Bf+Hn&!I$PrX4U#>sy_s{5E6pn8YY*43Fnwz4J{v=b~n6^6dG3!G$ch#kYo(SSHV z$97$UoSxp45q*5onkoW>pqrYnd?-ov+)r1!&IZ2L`?7S|nf2XxK>a+sZl@y+H)2pO z`yo`Q6<=iCOZFcD*nAc-!)|no1=00y|3KR|$Mdzr1MnhuC0+Ef+*81TLnPKH(0>IE zsnK0=Ub=|pcpH|RFcQy0XRoM+CG9gmg4-NLn=70mBaNuUDo}U~NDIp>w<{j>829z+ zh1{Du-W{;C;O)&F+V@_Tv$mUoN=P@@kT)t+<#ZCFgH@cig9gCI9-yo0L~LZz1{9{x zKek1_YuRn~_gGFY^RGI)nK^zM7WUa;6w|+EIeO5zMJa~-6!@~|mIU;*d9w){Zz1Cg z_af}>JnvkXcMsl67|MyeCj2HLxtf{82OKL`AA_c@56b6bepo@PJNVW7A{0Yo>K-JU ztwSd2yxrdWNsJkJUM9=y3Q8+Jd~fI|TAAM&X~ObqL|#77NySzbTO(QUUf-j#uVl7V z%MiTsZ5?ZlVl?>}bYIiG`P7X$_D20393R74f~%1(yA)%5CAjyWx7<<;|C%khKR#$N zV4+=0nE-zxJ1ngJA7nVi%Oj1pR!tFC}G87=#Lm|ku1PNgEF+>51N3v zmJgBh?l0T7mJ(;YM7|O6^Q$S0)aWhw?Dm{Mn{NpfEv!SXokzdlF}@{l`FeEF=rnp^ zVCUNU;m!A(?_qmxXX#nphpMKY*cj={--<@;3W741PMPm=#r6Z7r=FT@m}$|;ZWnzj z{7b9}PelIFL*)iM4xmeXUKupg8)ELlo zoJ1#u^7UMgFdbDIzm~qr-wK{yC1Rbp$ESN=hQSb*j8Nn2w(H)_Q}Sn-oe)gKz(CkhXh<$FbaQt;H-*fe0hJ`l9+>mF!zg39@`$;eHW|xbv*O*KYDWis>^l z3+>0|cl_QP!m(S@v148| zYXSYSUHO<8FBhjFG~e2K4bJ#d;Ff7F{JqXtce)3e^5r^j(+yE0p3TrPtGENdNbPnL z7)Hox4IfSh`AyIDCI3?NKyR5n65>FX0-1OG1%zXe+PI&75XU=KPi5|iP;Xu?*5ZWZ zbBSaMT7D*&irzvJCqC57JLHHg6OGEeSuFP$M&3;utQ*Pznf2y#i>ZjRpH{-7x30UM z)naP*VDe>0Wfk4M44ga$?>gLCA$a=B=AfTQA`5%vJ`1Ty)GKZ+oHDsEw#yZ^{<#J9 z`3VheKJU!F@_8N7f?E|+uU_|46H)Rjbru)Ld-ktti zZZmbF==^VJZr%+V+|btRLGtsou~1F@QYwm210xV69K9PEH#&5j2_vGsDZ6f)8qx!k zGqqvO@kJ`>2UyEQwMi>&UA_8kZEPz9v)feermN`VEf7$mY4*zf@sZ&$BF(MAM^!Y! z*TLQShp~@}gFrjv)f7;5HIE1_JSN zrgMW`R0Nb3YHS)CuRN$dEG<$dMb@B?%zPDXi5hFq9c)TudBw@p(^SPR*}p~h?8spd zmmwM({N?@T7HDQK3SrbjH7i$Za%0BdGfzeGI4Hc#I?EkL_%QNdEIZ{P_ZG9V4vCGuRfIsELl1p4Eu zKc_t~_YtU|0E(?=vuV`n{aRy$o;Od>s5qcJbvtWOa-U?`A3e zppw5w)R72{5%XXN!_ga~x`fEEqW5q7)rrjNT6gOx5|L%eM$sO3fD}Dl{dkC#JNd!T zO@({o=gwrF(3Nm$+CBTqHK~E!Eevl@w}p=yk(o1G)EGSkmW5dMGXaiL87>SHb~&Nj zP`^v@E=yQI%1sl&$CFCP+g6#Wt44&DT}>Ki8y#~uWNz#!OuJ#oMc1-nR8@k4C^40L z9E$<}V6EPw`a#P@prIUJf@Ac`w8n5=N#uZe%(|Jd8b!*4x^4{wKaQgY#nokM*sSl0 zSK>2QYDvEW0>z{s1?798TyeYY?&q@K+FZtF9f!NrJsInq0iFQ0rPaTZEPw;8&kolL z#hx_CbMg-OV)!&N#9Nk{zii;c7y-^Ey#@5bcumnQi(D&O>+R*+qpbK0I(>slTgIen zjjO2MvVt&?`pZq7%cyN4g)v9Ex9^~z2_C&;Xp0%m88O>q9(Nk_!6CoTG(OT2EN+lB2Slp z^)sfrKa*QLE9u&8)HdYMK$P5V_~~RJi)I1`_6efzDB0$*FO7t)mxb?^jcO>oUrQR2 zs$+Tj5E1=l(I8hjb{On6#Dv~0|Filzk~q4uum0omlN153u{;l7WHDSW`;2P42LzQ5 zi$;5aeZln|^oBH_uvjF#B#pjgF%Nc}ce>^H5AZu$n9jk|_Wb!syQgL~&q7?JL@6w3 zYV`aq1B@Dc*IJrL*klF-QYM5@SgLwi1cWt)K$aQHB;jfGTb7Xi%EDrQk~gad_dnr2 zLYrsY1s!l4`?bIFL)c{>CtsZ(?i9?XmoR+mfjWoO$q38;SeSV~A`M4bQ6Yf{rVou< zrb{JnZwmuTljUN9p0{3b3h(B*LzRI+3~RW_zNCrs>5p3i*i`+2nOhTAn6$|Ony)Ue zqfJxU=b^S6_f1LB9uEe0mp9;x#Fa`FP;lJKSKL~2DcmFJDo!rgP8h75REoH`u%+ib6F}pavNBhcn1&ya<-0#lOKfU(XTwu z9Xt}9ZwJ%-E1BkcbWUOzPRU7$u#$OTO7!&QuY_ZWwmyneM_KKd)`Eh-zOVhq?ho~t zbuwXtg~)S0n?nVPC$hhgj=JqKfng&^sNb%4A?FRp3AA)J%@YS16=cD>wlYI@%Zp$)lQEtA{LXWcq*5;BK{+^3JE6VqP zDIlC?^w7HpdS-;(i^Y>7BBY{foTt zCwyK{$LaI-myR!7x{S&qXjIQRDILXf^v&|dtEnW7)>>x$aM&@*N_PMkakDRA%h=;_ zb4|-WlCQa4OCBe1d4$-H)55r}-o}1g86E{22EiI*PTHYbs6t}LXexw(ajMKEy=WtZ zRI#w~vpuYFAgThZ`w%I}^%i?lY<^by%!9l0htH<3ElG%yZsND1Innd8nu-x^p37XL z(>g|g!Fv!vaB>Uu=a|pbBP^>K&&9$)ixrF1Z7Y%vKb#c{exm{ZwTBs|gkY^tTzG8P z1mcvYuHRmen9R8q8@GHo$kHk5Rc=s8YGvn=xp3@_&lILp*P^~~>Bt4csua2!W}C}Q zeZ3oBFQ8Rh3R~tff{VDqNe#ynD0SJ}J&31&@047B8!*vf;-W|kPHcF9Ats(=k^N1p zF{GV7B-i&PP2i_9u6bJRQ4aPcF7}J_JWU529&^oeGDAC+k!rKP2i_D&73UB~Rw+e> zCo1IiPqiWt!ZRO{Y_qs&qZ1tnYLmkmE@+=s-8d||c)8NTWOmkwu`g6hrHp9i6FgSV zNbKZIsm;BPjE!yS)U+=d(Ly=RG)Rb}{i77ivM$yGYM&%*S=&NILwM4HNE#|e?eqEs z_OWw17a3CyD$5kdm{sG>)Vq9$8Y(~iSoORw=2fikN6fvmxmC0vrqI#BP_R9G*1rWR zd_`mSch9+BUy?<-G(h8>)ID@VQog2raL)r`7}PEBi(SQgs+Kx6f3HGKqCF-ofG5O* z`f5T^2{uSm?^40>2uyEzXoXNDc1*AE{gq4nD`l7K_H;_*b|wuP&4h#ZX)=XRU%hdz zbC1sbYWhtd=FuOtVjt^`EuMNDpK!MsmLYxdSEwP@(=egZB4dGOH|k+p%Yfy&AHat* zAjWaGbO#>k7G;GfF18S=dM={9*DvDg=AFklvw;O`LS5LVJBOE{`gu3jX-7u)3F9lE z%)+&$yY2adzjuKAaqWS=J3txtrW(cw^3R0gs4pKdcD0Fa|3bmML~%Mu`0TM?NF`I= zJ+Z}7-b6{GItMp$W#0L#&#dF~Qy|x`=k)gpyzI_~D>m2@HEpdA$t`|D!DHgd%e?$= z_6_JOK*GrxACi}Av)XX)&(<^e3b$d8IPq!mJX12|zR>7op;nuzm70XvCkTp*4ljP* z{_6W|PC1?&B0KoE@t%;Z-!EpUPM^O^}!fjhBQZqdpn4y&0#BIJg=L9 z1eo%*>cEp&A4&(dx@E{*4n$S%C7rC4jxa1>o8#8Fh^6ARQOm!G?!YMEXr^X3+ONRmC%q z7EBnaJRl`4J`q->;E0d7e%M0uJbOHiX3%ChX*h_81aDR@XDgE86OU9zj?}}HHUCP7 z3J#v|__`7i6R)B*F(%0%(UoesUxt*4-Vz;e}H zgpp$JotIDWo*ZRh+=3(7LBBZ1J+NOxyIXZ|MD;5ok2=)=ZH9LM>x)J7cWq$$ire2H zh}S5iA-X4)iekr+W`qm&rl5@$tJI=#EYZm^c~Io=3M8(nyn<*13XO?sv~C1!juNLF z&yfCN$e_Oi1UO5WyM<2NJ7m3PFGx0nRRR|cj%$95*ukTQU9EM9*h1%ufZO$+*9WGD zG!&Si6N>F}>2AyT=!b2~sWx4+sR-57zk`NUDr(eKv2j8TiG&8M&sZd?B^#=(A)g{@ z?f`f{FGBd#b60JvW914DBn4d^IF!uC_KLWgSzeBAd7tr>1%`kt?s-9^4+-;bO`ve= z>p~cD-nHJiYW~5aJnHZJhk7!{sWRkufc~pFNy*#6qC3E}!Tnf)$K0UNZNtYqz(~gJ zp6jR5dgy-us43Fz(P5!|C8-uwYX#|B4vr#PrUQO1BcS7wu3Q7@)Ndz8g^M z!DL>#5IhLFaPAj;t28=H>{ml6-5&5jU-y)Hd&i(0DV$pO-1w9QPK}4tN2oQds zOO@wVWxCgQD#rZ+w7bhj*p}B$hCh?FmI0hBd)?b^CgrJxKI189Cymg42tt zRF~rkXMF+KQX_V2B5h^X+m@~+NtPnr~VZiGm2HCgkCwbxJdof)5!Q zS!jTww|$X-2Y<;Pnc=;M_b!Z49XPOBg*A}to$e)2jQ2dcLe&&*L8O%kc9QiuB@&`- zC{Rok_$a*QS;9!nC5!*vVYiW2KDTzAWXOi6T>iiehRm-D#KqYS*&e@+yaUJ#9iSeb z_^Ehvy0@NN)K75WV)KfSUU@dVQGDd@J+>0+7mNshY}#dQ*&^PNe+R%nEt^E?U9#R5 zZmtiwa9&g_#okLMJ{OS>Lv}Ss27=7&K6cz)ypF3X8}K3%kjg$GZ3QgKik>-gSS5QB zHH4rH1wW2#=nd+V9!iH0f0?&em15ztVegI<(P zt|O53$&qhU&w$G*l6}9R{=ww@IJ-J%rY>kpQ^)lMbzwS$7Ee5>_&Eo^GX!DxO!V_% zvwkuBn55-T@6oJ6J-)dH96Rr`H5<~X#dC8Us=Kg{*-B(~>OSUQl3H^*-espV=o_yz#1BHr@usZ{p`O)9a}u@7vxG>7f#LimB9O+M6y!R#0PQ{NegS4T6?f>Mx@3TBQ7F(x-bT4}T z+A+UBevy`(nV)~a)1=h;FnmcoIcd<>L*2kMsJT+@=Q0}_ejTKn6PFfW5La!E3-%J9 z`MKNiKLg*6x-IaZtjEXte<}on`#k1d_3#DKd&`^O=UfYc*YwChtv9VIWi4=Ky>*J9 zXnJZ`Q_bvwwA6q^>=5g6hESiSA5G_THTZhnppfZ_h_r0rhq&@_y^#??$|r#8!8E0u z(qVkVkJ<_MUxXP%{#>#Ji8&m>Ryc#LWWx%w^HMY$2oBUdU6x(LR>reJvf=W9m8r=p z5BR>-m5Yd0Q7?`y9X(Ms3~$VdMs%g;K|Uq{nTl5>9v1B>!buSmoTkkqC!lQ>XO(vo zj2k(`p#~0RDqK0=cYE9$Ur#yuUI+yzA6`({*%tK6&)U275~ikS8;l)$Pg2*%VnfKs zvGXW>4dG78_X>_u_zdcJelPfT>kafPK(nElw0D4IDL0*uMn7vV&MZ_-3%>=u)OtZ{ zxYDp;>G!+Y6L%wJF-7mQbH0ivtLuYa*Y7J~w>L411qmiZ%)-L^6{BfYvKDNc6;?x5 z#7kWBUwDHz0ONVnCTK8=F-U_9$oSBq#w_b7DP|q@E)ENVA+|i6X{ym)Hb^^=0-Kbt z^FCYe@|97a%vlRCd3yVnF@Qho`iB)M`rC^fEumP772Q8IIo|Hs`94os_C7y#w@O+3 z(C@S?f8PL-c);i?8XP8dzPs3{QIh6ho;N6_BrEp@Hgf_2$^!Kpdb8CvK4I5$dd|_4 z6%i%jiCgKF(6N5YGA+|GsFYd$RvUDv69pRQ<$F=^XH*VWmre1qi76?{AhV8V&T;jS zq~E!%*bw~2GtA^QH_sDeHafasHfnd-Etdy{2BbWS7^+Fr0VQ~;1{#-`aUuiDL`x{u zMSBc8j?_aTsC>`;eD9pMJ`qx;{~?RJCw8x^98W%oL}_lwK4-1dGWJo(D@HPE#`;*K z0A4$CiuxByt@+F0=MSMI&gz0`t&!7uI(EEJ55hlYf7xc3S1vt3a?A1q>>lJmXL_@+ zgVBQR%X)EIa=*sc<#m@P6Z~Ea^;=gfArg<#wnF&Hw%u!z*oKGgTKs2omP@y9R?T8c zjErX%4Y z^m;hX8lG^Dx>bium2`Kw`Hj8lw{_Z)RR2kY#MjKHf6!W^2nG*LJFxOdggJV%!F=~c)|*zvNUt5o=Y9#?>JIbgQr8iRl#43 zH}7K?`5JW}*PCZP3_d(EE7_+Lgnd-+vGPv0?dw^=G2T&I7JiN$=v|z!CoLm5JB#GW zoq2W5jl1%Qz(DXq8*^&kfW|bUuM@qF4OVj7F`QzYBvfO`FRODwjj*QjNEp&H1nB10 zj;M@PtD}#1z&5OI8Pc{%WU=MwfWE>@yUbu*k*$v+7+f7IIQ+|T@JCukWAxs>e|fb{ zd#IflOs|JJJnefWRYE4;Zk;-XDCv5AdS+8Mvf?O4YaE4N^O%sRHR&^=JWq)0f_ww@ zKnMA>i*0RcK6nuJAh3^?5OULY8!9vRHjol=wWWG}Lf)O$_+1&P_!<#jz{olF-4=0c zxq2dcNbAillQnF2ctp~cuoXJvF8hnQj_jQ~_JACIB!m~jto4kPqGos-ul?mwl|n|e zs%W1G#>~Iu5n4qxX=%3UCo^At>j7>#19%y%87d{-$?Vk23b{9-b}x(sejuXS(*~pg zHPi(>*H0#Vv3;hl56A2;=Gzrm8?&uy9CGM(t_P-kma@ z3(lB2nI1nK{StVC=*TXPU_`b(yDD=9qV2WSrI8Ae2{a7GP527=xFMZwuP;ndxb8mX z7HA@Cd>|FIebe_Sj|rD8Bv1%QKR~PauaLt(iuQic64i0>D(xi34D(y`>M&)jC4{4k zDD_X+CBf|p>n-yEcH?NNvgE_p<9S=nNp_H^8#QXX^6Y}MKjEhgQ`TdzlUI{WLi*y1 z#+?rtq``RFEmX3)ghu+2;nRjj71-QkJ7?~JlkzwzYqRZYhWL+=50=?d_E29Q7PJ>} zC46RM^A{TSzpdxSKj^A<)e@e?ZryAF4w}Wz))WTF)I2V)HRj2{b9|hT`ejH=DV}N@ znl#?j>CUA?w{3rK9cGq{*8|q5GcNMl%qqA1&HKxi;rapCmz8v83m`}Hprk5{M5y$p$FRpjLM-($nBXakIpDs#pi46cjGS6;y z3QT@jN^lKYJsTA`PyhbAw-=AsW8-0G+twW*Na31S59GXplX-<~+qFS2c7LtEnlxji z-1({mO;fqyq;I#aDcVD@E)I#{CeO2Rt{7_@9u8?ZWJIjJ0#j(bMSt!5WxLwz5E^_` z!1v&B@~BtBF{n5ZGw_t}YVw49Rx@q?pwy#qJRiv_(ou2E+W0!VaFjkt@pq2a+$?Rk zk#nurL4n(>+3%75&T(F8_}gEfO*d~EN;AW@P}y^j8l4XGeyWmM^Z(8dGShhPy3`n| zYTT+7#vB~>&D3FwkCPB@4^|-I)3*EQ4})o!-jK>k z%K1mH?NhUx$YxEY0%VXw)=Xquq1?l_3ZPjsp{Hal8khowm^(mZMBb3g&8r0i@LBSS zVKoJ9AGGx3-yjJ8wxE+f8>)@7o_^AqR9lTOA0DUG3wHHaamP`23B7lWgMSo_l-j(+ zE8^2F8^wLv>)X?xU%OX$PR!|C`LkqOG4Kwc)5dLD_nsJRS!cE$&zXQZ2l7HPzhMT) z$GcS2h$HaW6^M)Gm{pB(Az{lKwN?B>8e-LGVKcev&0JZCn7zYlE`EJz>Pjti*#08Y z=lncg{Xig}_bNfpWfoR1wC!t2Ong2isEl-R))d)txOWQp#D!}4lj&!W$?3D&#!+*fLo zTQ{Ug!i#hy_W+@G+@>C^#MpC`>I-u{SL zRN$>5w;s*{yxv_w*w&qlcA{ny2%4+`=vIz@n0&y*(3zRLJt8P>Hu{7{M>J$QyIU(%u$cr$5Ylh!3*N&9Pn;jAP-rIP)|$Dpe#j#yk4v&2P9j?6W&PD} zUa`kt@YGgxL#RSNGgqFMF84?r?Q94Q+mSs2CZ%bq7~VAHTr^3v z|DEv{3atB#$0$A>X^gc`1G2&apYcn?zcNa)Hc5PED>&>+8vJ7@l`m!#Fkg0}CWoj8 zX;zJYxX9DpLI_a{UnzbAJX=%SKBgz=ar=8rER*0n3=CY)~N~W#&jd_)K0%T zMd%ZbyF=dm@zeR-BIT|oNSzoJxDO7iQpRCWk1S)foYg?fad5E3Jbr2W9KOLR|CHM zF?0^4wOT%>_6J7AzfU8aD?sorAu>)Ziw->Ylq19$WF}NWmiypG@h$B^Id~-6c=a=G zVXrNHG5!m6RkKf*&&hd_$TcqSfmB=5Mr*cx`?`_@4;)dGouI zLnBk~(z2s0${qafRTmr4{`h=+(#HZT5f7L3#sab{T~wt-PUuTe5TuD@d~JzVu4tWH z*2=!_N)ubBW3fBof(=E4Bt@!b$9#Pab4Ik=_V~Xk!~e@dah>Bukic9bbKN~6JAKaC z3dAiJ4M*VQ9urwoX$alth zZrXwfnC>8ExZ>{pjpJzBw~Y#9s{djAd!umGc#{dvCPV!nW^x zkC_ymm?f5^U=FECNP=05c>Bc6OP3h6mPX8&r+=thzw{Y%WxU;?lY(-!t))w3WKb*y z-D-0Qy|>vZia73*;%N-;siM9rG(9t@D3O&+b^x1m>y?_aj#yl)H$0MlzU`u>u#+7{ zUTPWu64ox8QC7H5I<1(+)RvA{`XsQnPFOm>_5+!Qj{aG-mt8@@(m%qYpG9q@BdnIB z9i|BHovmqu?nkH#cy!ET>n}50qz&TiEECl>9UK2yO#ItU^1l{58Vz7zI=UZ?G1kb0 zz@VXsgy?%`v$Ox)=u^#pEQt|YfP6!0lc7G^pTm&eWw1KUf59%%)Y}{<4tPKs(v@92 z`Qy!ZvS0azV@j{ozkIfB3erS2vgCy}%5q(m;`c|o7LT383*nW3R<=;vPV02leRyq# z+PU9WHdo>t6eQgcfBlOyPp6pGH=g>l`o=L5a!fQ>9<0jrYp6c)Ftr7}TLnY}TAo1W zIj1qgF+NYK!v<+TJ?d=;b(L8Laoz!l{I9r6%%>DW>#7zuN;Y5HA>DTF`3ymaMxKxR zP>amA`2>$9#lbER9&%Z@Q`+fe+jdqCQl~AxJ&F}DqGz1>yE^HZjn2I>XxlRuVTZ%7 zYGSZ;@UMxce}ve7zIXT5X#zQaEZTud42S(Gl}+=J@E6kL$k-Id2MOI+`byy!AsCoX zJOYgod`_gQ@AOyHH0X;`MebM4raadCaa#qi3-+(Y$~9EKnqEsZJQfZ`wdJwx^o>Tm!KK_~0|1CvZY}-()Mdu{b5RYV?PH9c ld7no$jN+w60RTV%n9b7fzq#`NmzU!|c*FlcM@zVy{vY!{oO%EN diff --git a/app/src/main/res/drawable/app_icon.png b/app/src/main/res/drawable/app_icon.png deleted file mode 100644 index 09da1420bb51e4d902f53417749458aafa78c272..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8741 zcmZvCcT`hN^lb!`-XbMP4TL5|K%`3vp@V{SqzFh?TIfg#hF%2(=@1YQkY1!KAc%C4 zB1J%?C{jdveUtCK-&^mGm$kBz+_^Jz?wL8~?7b(^y7$y5$!?HAAP`Cob<_h08C?x~G?9KT=FMY%Bk~`b-8Z$+bU$it! z7$UT8nbWP==~^lpv?X$F+q8>tCfM}Rx``wd3ir|4_s&L@#(D_lIJ}`I6IQcpt8k!e zL%Q&DSbiR7)WbB^a|pFJY4B@|^Eh;dr0zLo*4JwsH2*x4cd2o_m)ssQx;oWmMrD~Pz&b1aR{udAaJ`D}{xp-&<5c5&W`4RDDsDcS$bA&CU< zm=u3ZFC(z)DC*EDh}>tG3(IC!7Z1&FGtnc~Pz3_@7!5xx&0Q(VM|VT_<3x|2+@jLp z$o@wMsUkFio=%g%W&YBJGBep$zObZARUEGHP9;3bc>kURexggd2<@GIvt-F}wL|Lm z(_>yfe;VY;`K{sO5RYM7ADsr&9=x7Khcr45g9)LemvJ-CYhW_5&=%6OCqUo!?3qxOp>d7wffJF`#qv zqbkYRmDc%OCyA^QLciaG0sNsCw4WLv6=f=*MNT8xBp@K*X6W(h;dZC@qEzU{SMpdI z9HWzylMiGu`*L;h!}Dd#1(DdpiBb}H%cHt)$&gUdwCVA2H1lYlB2VcJdN_(vkYV8c z$GT+1c`XjdsX>rbVWW+u$q~uWeolV>I?VR+A%Vz~mrQUhh1lMgbgeF9 z{1_S}XP5MdXgMqPg@K{r(nm%sic@npw_A@*Bc?XON7kM%Y_t1SmXr|7=TTc$`7SoF zB@$<&Kh;unE-36oqNzF;sPjf7Z3LB1VM2A^C{mn`OmEpz*w-;7BPh?9PNr>Y6q8Rv zd`;g@VygPWL?eFuuo1Lq@fzIbuK6H+-#!~%>BFJAbAGsBd+_Jm`sSvgZ0fsO*LfMa zi=$=dNNX5y%Ywp@sE##Vwa2n*cHmZXsvMEuk7(ZN;PZfnZV|!EE)t(UR^P>ybSop- zxOWFT-PBy7qO^zezIihRFsgV(qJZ6gUVeYRpBJaweFvMf6I9*qj+CgR=fu=DlNF|5 z52Or|TRNXW+0IV)kc{ zURYUqIefsOT@o5iz)f?-ypneNqcRb>w$)j%!i^g@3=()c^ayA<;FvAx%Hp1$i&?4L zy^caC5ls#P?F=!MO&W^LwtvISN15n^%1UAS!f3ZtMWUneyo(}Wt&zDo%ig=XI{h3) zicn}2WFSrG`H;Q7EQRvt{(dEUd;8Ivjt=>kxabhj$^Y{FaDwWCJIq!oorSm@-68?-?~kgGbAbo?`V&;V!jB(6UVKxMi*$10=eeKDvMaa7l8yek zwpLD)<1xB&M&|75s;aC^IOi%Ue{p2{>}V-c%I6Pk&h_wpa51ivHLm8B;LV%#

QB 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 diff --git a/app/src/main/res/drawable/app_icon_round.png b/app/src/main/res/drawable/app_icon_round.png deleted file mode 100644 index 87e92faff33ebc6f46915263bc07d211d30da3ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18082 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 F{y!6vsvrOW diff --git a/app/src/main/res/drawable/baseline_article_24.xml b/app/src/main/res/drawable/baseline_article_24.xml deleted file mode 100644 index 30d5d26b9..000000000 --- a/app/src/main/res/drawable/baseline_article_24.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/app/src/main/res/drawable/baseline_attribution_24.xml b/app/src/main/res/drawable/baseline_attribution_24.xml deleted file mode 100644 index 9278d2133..000000000 --- a/app/src/main/res/drawable/baseline_attribution_24.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/app/src/main/res/drawable/baseline_menu_book_24.xml b/app/src/main/res/drawable/baseline_menu_book_24.xml deleted file mode 100644 index 10d9f76b5..000000000 --- a/app/src/main/res/drawable/baseline_menu_book_24.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/app/src/main/res/drawable/baseline_star_24.xml b/app/src/main/res/drawable/baseline_star_24.xml deleted file mode 100644 index 9b295a03c..000000000 --- a/app/src/main/res/drawable/baseline_star_24.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/app/src/main/res/drawable/bg_circle.xml b/app/src/main/res/drawable/bg_circle.xml deleted file mode 100644 index 88f4995a4..000000000 --- a/app/src/main/res/drawable/bg_circle.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/bh1750_schematic.png b/app/src/main/res/drawable/bh1750_schematic.png deleted file mode 100644 index 8691d598a0d69b4d0c62713fd79da36dba427680..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 71092 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 Vu=g2(dkKGSF|jhfVdxR@{{Y|pUc>+Z diff --git a/app/src/main/res/drawable/bmp180.jpg b/app/src/main/res/drawable/bmp180.jpg deleted file mode 100644 index 04d88c01f759ad7c7a7aa7a2c98426998a9d6aac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 295051 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�RjUA1_THP3KS^;Zx(mW`d0B*x5++xc(c7p^V`K;>QA2DF68Be{WexyP2+8muSJ!E zP4xWsR*5>SjT-e^WOAMs*&lb#me`+n&-|^jF0uLTu|Dsg`CG-$tUi^J8O7a7{Htt> zy4wSk)>5{}y2t0X#JjDrUbMEwdeX|tCrVplR@pCFTV%ayZJN$gOKjG1pV=?rvV^xP zm&vxwz1G_$>q~6=*XXUbYuEJ`?zYK#(%T<9?AaM5Sxqgm^S;X4W8d|EJ0v-->08Ci zy*^F6P`hJog3eRN)mwP6cl{N&i zyimJeWUbU#cOVZGH#Tf z3DRBGZ^3>YQnJ!0g`VOVM!{wC+x*xe>6>~)`G4Wtr`59fFS4qm_rmD&DtMs(02P

A~`xk>NT^IZPpXhD={);bzGXpR5``hvS5OaNh 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

6!* zz;|Yp*hn{EhQGWTLeOGYLx9jrdG=>1o*T2l0-K6mCH)u3K5IZ86jbB9%m!jul>M}$ z;MYBQCgU4Rra2Kr8gCUPTPYO9iNxJe#k-z(ec2*&gpOWX8hLFJZij=0dBYo)RqCMI zyX(Ojv7M^RpCHgO^7E%6g^;85$GG)kUgW-x`P@E7ahZMo2EA(L{@r|cGUx5EK~Ipe z^)s8F<*+#wmc))$^&x|lp5H;f;j@R!hySPdZk*31sqf|KR^OGiv}CEccM?(e(MYJ% zIR_}EZwe8fSp_do9%r&O42KoSy&Zf|t=bP$IZQ`+2jKj^u&fx1lf8@@fD7*KOeVn$ zXKR4ns^mctdo$04-ZycBA|a+vrn-YbQScX#1fR8m#q$||m{)u;y^VUG>wp24F5%E% zO9PuP=21Uy3eGgYdfED5&7GjFGgg6Ny4at2$xsT|#Rd9m%ihLk=Rk|_+@;Mzj1&y7 z_3&LWSL_sqo-GbA)%M2$acBXURYZMrIGLH)y2>ONgso;V^Km&L{q6u`3ukh zh^3{Yz$L7WiErn`=X&c*@Dk(=NES(TJ{7DzG{}TcaJCIDz6-dSE;QTC@c&#dHp7@* z!c*EM+~35U!JJX=sPFfN$yb|pHBX1d{xI?w{jhi%sA71seVplGpEmG+{|GX?5*dE2 z3~VP2bN&`BcJJD>?X?tOu-NyUkNiQ~$yXtj3#Gn}98ceO=X|#)<{7{;(B8wdvV|wF z6uC`YSGR0IOXKkh^}X2s*Dy;}2GLgmu3*Av^7eq*&&|GuDp|ETQU04E^VT=%cm5G0 z4#qcSN$#%Y8Cb$9zXAD@Z|2y)?_ht{tVp7}Hce631qNzE_KHos_!~at{RLd5a~9o> zzQ-hq-iEmFa~sJuh+K!ZQ-`BLoHipN5YKw~f8;$+cO)W##cf!HL78YpPq6tK^QFpX z`g|8^52}Phgf>MLl$BQnnBXs6Z~ow60rjPdK&47UwS-tevZDkVa`L_&O*xIbTYuM? z;?qEQ;9Pq=L!SL?q#KG9zrEe^ozlr%LS%b>7kTmL*5z3BfBFmP91Q!^aCNWPU@1S# zlej+OF}N``WC&ZyNc6Cf>56_jXEGSL)+zeqJG%WBF!H&_%xR=oC}$EUiJ_NgYscDt znY1?EJERvt(2ivr8YJ&%|HW#qgjBBT%S!rRfKIf@^&_#)WjZ&ywcCW)00aqD{Wrq- zW1%3OhRKUJp`973{F9%dyL+8uN9)Fmg&`#dEHz&G37R+Pyg%PKwEBk9kf}=`_gJ>) z;~}669yn4gB-QS9SuVK%S_O`G5;@mtBm#YKw~&?bs|Gk5*e9Pp0fp7{qE74OR)$*d zeplkzzcgs6Swh5_Jcltzr(hDC4`J8nk1Vw$if80@cfm!aNOhdNzmYPjT6lg1iyjk? z`AQhbVHoe3bw!VCxA4q^$$~R|vF`!ojpu_A z^3Zo4-&k_b${`_qFy{>-3-Bi>J*r}90_s{pm6dxlaorgTLCwUa30!wVJ=ndu>2jiI z_xb&J#cVswi}aID-{p}RG+5gtugE+f+)3~x@<2bMa;8On9Pwq_`c^=WFh#lxInv^O z_V=6>wkW_~01OFo<4L#0dXj^CYM`6N?TggM`&2faCUxF=cVgcu;?Yao;%}>l@@r=i zz35I|$Olbt+>In;Ut~}~-r>um(Dz5J{wOJ9Oo72(F;QS#4I4YYk73V(8o@Xn=L~VR z1A!XnRH#;=ir6r3*MxdZ-)R*w$rqk&?ySUgZ#zOT7_v!eVH63VoGvjoLt|uTe)$ZDU(E-E&G5fb6%`0s2IVf zJPfJGF0g3Pe>4axESv_dj1hP_ElB|fD#5RO{`j-V%O(@DGG<2&j_t}o@ouAnLp?ss0*&8t1im z7_4Xwl5iJL^i+It!i$F!5U$#on3nG(rZ#>h4ui*>zm*emewG;c(@4kCVaXqi;J`>8 zTKjZFWsW~KrWJvT;mCirj?A+tl(e;}CTifvFl`$>=mCp`XxX5H*t%dvshtwuC$p}O zOB;pe(iTz;S9dzWhdVJ9$JAJ#}dWRrNaYXq- zgfBg_`jJg7{F1;7Lm}48`-_+{^p8(9N;J}9>e<0hoH_zQ;)Wh`(y-IuNbHE5s|n6_ za}b;|iXn{3MiHrq+qZ^sJb@#?(aY0jA9Rh%+skciHZUb#dUDQ0k*q8PP;?miW0wW? zdtPDHlc_gz3gH9vfZ&_&I1dA!L->_NbpcnhSr%{H z!|$EVuAH_XnS4@pb`u0RG0zM?|YjW@XG} z1sB}_wU%HwqvqqA;`!?@01+Tf4W)GZ_~Et9eE0}KQna{G9&ljGxQF9JOCnvV$a0OD zoulTKCcIl)z+5$khZpQ=0tSJMjBmu(2c9y}v_afc%IxS;55|yjDSAVNwoP6Zc9k|Q z%Gg(ZSe~Kri@V!-u;J5&>ryHAfxUkA*HQO@$0ps0Yl&+Ed5qc>;W;LH0W{_{gmN}v zuaw-QOFyJFHOrj=-wqCNSxm1i+uhY5z5&J>yXv5I$#qgr1!C!b$Y-E#a@YuTw(Pj; z3GbBE^3(HX--bImyY94gp3lOP2G-8_(BI(AhX4yU2A^*+wT8Z~7~jj32$p`ZEH{$> zP4OZ~D3`e#dG9aa=Q{j8j>SiRA7n``F-c`Y%Ez}}i8b*=|9&fQ=T ziH^H$SV*~b^Sqx&`P9mYV(@^j^N}xuV`eudd_Hm?36fXTD^``4Y>vScWPkuZzT&_L zY>_H(xenW7cX-gc%t<{y(7vD1fbf}9fZdU|de_~vrK7TKBaf}qs4Amv?P@5Qq^)@5 zv-_#P>v#Tra#HfoHFyb(`Wr#{mtAhC3*fLqM&(HSQ*jxQvN)d8AR+2T-O9|>i$#r9 zMo!VHtDPdmk)e5TRCo?G&#FfL><)-%Sb+26Q&)VyBs|}4Xn1VYTlKk z#T6mQZO3Qmp^pn_@)@waKZN{UAOQs{6ayEh#t+vsU_o9mb)XO+k|aNy`hgn~K9+8s zr2jenc4{>3o93NPyP2VvQIONBge&3 zb^L@6X`9Ql0@u3Jw;xA~Tet5+`?f=x&fa+^L}iMLPgi>{`b#rfpO}P}ucPc?l=Htw z1+itt__Bk1CVLlS-9o&6wUe6$E9TvS09PTmBS9>my@){OvvcGs$lsf!?pNSt)0_z> zn;N+^(fSFm`8uYUamN?|ilYRJlEM2svOsqhl7l3nCWX81D_qodI2dkTKZ!94P7{;* zCtm-YWgA;Ko7$P=q*@jN-4Z<>C+Fh~UFKNXF1VsCl=I9LJ6gM`*k1lUiMiT`Fr#Jy zeyecLhn6@fajSfP0%+_Z8;H{>TJsm8HHl5>_-F}s|(gffv zHf3-(yzp!6UjTFX1^uU@}n~oMd#&!!=`pQEsJg zcPSq+!c@I0GSdbiW*?Ae|Nc#tuQn48N24xtVVOSMW!az<9j8N>4nAtgJ!5#Z>yU%G zhg zo{T;iLv9{=kaYO>oab5Jd)5G!S{MQ7i@ZIr8K-q)17x5Ol=Z-F1#%XMN8`Nkf|0m8 z<9u1Ui)Y13_vZ}Np7-^qoIAoDt|cI`nOi;KRU=S;)t*4e>f{U)H2mcK7r-{dxUk0g zDMt{oIio6cafu1~bH80*D#ZEz?sm5PoSWpfSX}|j4JinXyUf_i*)z_WI`p^W}#QIvf)--#lmjuue z^9I~>?s%EM_fX-6R?odXnQ*49Z@!P!O?JPIek@K8_VKRwDsU`2fyHZHQRS z8>=90C3@2L zc?R@O{!Bk#Dvi0%6mJ5Tr2PPb7|ihV832$dyPqil0QVC8nWBd;rLVht{%~vj?+jeX z{yzi&A5{wm0LZ>T08i0M>rFH=3jhFuX2<^!0O%an3V>lcny1l#aa_}Q`Jw10;U|JfZB$2cz7 zlQzNDtWhBm;J$f9BBPCXUqOB?_{UJ66*Wsagy~6wQ@aQjNmH%u6(hll{#S#D@5-Nb zI*$rU(_My=hpP9E?yw>|{FC{wAQa`{Ye)HR;Vj;R9iE)bFnTgd@O zK7(huime6dEJParkKaudf!RL>L?LAO4v#dLUGHb@@}uQXq+PGSRe?$0f8_wUcjjGs zVMh9P>mO9UqW#p*l02|WEW!U61>|Qi5JuPhq@sA`loR6WWT`2S-_ns2X-Q?|P} z%q>YBzMeOSDNtclwypmda9tJ{{ReeNZW%34PhAx@>0L#Gyu>2-AJk}NzEQNjXlH?c zIijs9|MbjqHV3=@hX8G5b{W5^vdm(jw(xh#@z4WaPw?3Jg#W=mVNquoNq1q^UC=F^ zV)$>tOgA-Za{sF*w9Ko;+Z{)wM=0u1Uny#~Ag|*hQIY?BC#u2EM5SM^3bJ?YcXfur z!J%dgDZkCD|3RGIL=Hg+>0a!g6YDZ)WU^QC;fOdPZ~qt~_6ZKn-+1Bv`70FWz3czaH~#YuA(YSFNPp5(`$5s$&%`HA z3I4sODIZS6F^4P#yk4he+xRK33O0?}ct1*O$Ja;&;R6KX02s?VlmqkAaRt zPfFKQc28lixk^sQpKA(_JJepo9>)CjRj_XRV?Ve4y*RWXnHAhqbk^3%Ce$y4`CF$vNX}|4r zw!H8A`-hE3&X2dr_h&#E(y>Ptag7&G(8?Y_)ztzb^AZFMgnokNl@&rrURTo?^b0%exTcS=C7KPQ za8MbRpe^kmTr+SY!e@5KeWoK>)4h`9LtA!bQ!BXIuQ-^&CY6XlSB&>E zLnZWNmagei(etXrRk*{Nne*LV154h4y<4AmCK5rVr^g3%l}yC;5Ijnzqq||rz?d+L z-$KT1|G8_wZ)kOhN#y{_#gW?>_eS1|Wuhz^Z*4p+iEHdC%MN!s*u}io<*N~2$u z4oi*AB|>Ixe8&xZN%eO}-eYce5Pz<^?#C^E+tLVbx_w2aH*@<5My;L|Sbuf#@2^ey zlTW+2bqO2W3Tk>DxhOE`q_NxA?E>=r+$g`5j*{{&roDCM0y4bco-#oiE}71*SzGJ( zdOT%_7bh=KAf^={h|qRXeuOKEelaoUaaRD^yEE%)Upj9hsMVR;X9_e8qI}}zln1o| zPM1ZrcnP7MwBW##`8;m@8@+$qi}pELP%N4GavbOCMK-4UQlv!B(xw1{_5UpKewr?M z)6=jfeIJsqJU$rp&m0uj&x45s@r*Qo{Yj<6h^BJMr_9?P4GxLUds`+&f5hw>Ro~}# z1N*iOOu|NBY85!>IS}T^VlZNM^u^s^>1{6hrc%owApf2LEK8X!z_-f2N4XpRdNV!ApOv*@=>F@6WPV01HrcOUi?%? z(e{b7_eeLvc5KD{&9EU+!H;rFr)_)6_QlRY1SQko{N+Z?`xbn)E7)nD`UmsKDm50eyX2Y>6Pj4P76-46!56FI4t5q_5M^) zl+XM#Ll=zi1x5%Pm)N!gFrYvx698|TWHgp)i1el3+OZ?OG%b|eLbGdhyveC+d%KFp z&RV!+1O3SjUvS?B=@9E(Z}exDMugAxZ#jcn2*4_XPf}eM-$(!Swb7=*$HN~AB{*K& zK>jR5UCDWx;feUvk}Nt<)^^dUbpjv-yP9!BpKoI+7a9qU9~(FSl_G;tF+- zY-2ku;}>*_MK-d2y8hWO4(nY%V>nt7q%7`=FR!5#@{~kKfv*+ar)_Vu70M4KgFrYnH|0Vg_a6Cnf7a9O z?PnSk);P_sV0oMiDzUUi%c8la# zgrGdR&W!dzSTl-@rt>{VVb$Oz810taBY3dhS&}4bQ{7qM5Yg~S~7KSUW3bEqc*Q2Z&VPX)38cQqnU@Cz@Z?ev3~6K`zqjHZ8Y@fufK98sKi@CLg^Rn>JxDs~y8c z8>QH#keA6QwK@v)UX9_3pP`*jk@HYYV1~kpb{%BuKx;uGO`F43*^P*Sg|Kf(t!|?K z<$A`4aSM+-H-JgC>Z`sHx5{eW)PuiI7W$g(NwDRX^UY(lnW8Di(0Hp+3NS9ZJ8dYc zs3z9w6%&mpL;XHs(Ic=}r?b40ULKmJ7a8z1nAxL(P{oL<)3iA7`( z9cjAN!4;AINlG^mF@s?(3_rCaNF+_C%5bFCM#(O2%ne;nufaym7RThiAHSO|y;fu97fZVFQ>v zauBaQ>(X6QCIr`wbBP>RQnZSm?c_mGQ^it{zXWUkT=tA%Vkgd3LrFj3#?GaQ+j3ly z*p-$7f!b2Gsw$~MUDU*Ivbpk&{V!ns zq4u{O`b1NdsHJ&>)Oh8z_Z9V$B$#pQeQwDwYcU3JTAj>Xfq5awC~%uh$xfGJ_t9|r zq9R*t>KH@I2o#(0a(xK1!$E7Oy=*3ZqOg}R2b4?k3OWLu>z7QStDaiYiZE=tBkNfU zu|%@w{1GXWXZON2013BBgU%wG{#8jhGK0>KUyDi9y2&Q4w9r2jxi~{u;@W;6=eIy> zz+ppgL!X!%6pU4u!XnD{UHcdU%TFNF`Y=Vi5x7uv502U8!P33%D;HzyYks91-spe> zzA&8Af``|z@D%q(G-V>w(Sl;G8fGcTMn(I5dgJ^>j~|^N14QR;73vzt`)pI&8t1xr zz4E$+5%%Qm1W_&(ZZUs+ntQUW!D;J@MZ|nPo=P~7^EkKd5dDrUeOKPtCt*hEv5q}$ zb+I%xaWgsADpkL3#gFu0qBMSdcEmRMOW*$D#%fuA44O4E!ffU*060&E!kU8xW5!}K z`uSfjLLjj6nrKJGg&9i#xG)>BBf~Z{%gke zfK4-Jv{Y91>1#Z+@Nsx6%QODo@{lrd2JG!6;e>nq@ocrgud3uC!P+z0g}4go$k@}2 zqwYGZD5OUfipv4%Y@0|hG8}=7-tS|k7xV+YX~T)^g~P71OmS~8&L13MM?xVpfeAuh zW-DkH23wrFE0Ru;v>jZsdKwco*V!S;Et#zkcjd9yc=uYpZIbrLCcQK$eI}_$F)nc# zLU4pVWTZoL{o7-~0#pc6J&4MXjEZAtelG~aBTo4>{^!`c(eW}a^;SEaaEZL%WX)1a zOIZ9^qDc5SM!j@pEvBWx*}S>5i>7Xr8btJK#8WjA^9f_|yWJ+dSn>lAzUEW@srqAljp@`2&?AE; zO;L^gGzULwiTf|*elhh{w6c!o`^K|v4v@gd?@7r z9dL_vPm?2Nx4ldZniiNy88L-!#5_pgoPxrSV~y;-;FB2<;z?Y2`F{NlH9G!wQ{g@# z5bLcIEldGeRdTnyy5;S4^NuKl^NRe{3XUQblCe6Xdr&mSH}ZnaeH6bIuO%B4?j{C?Kl6DaV{i0^_>!wPC=RkAsuYfVV48uoPjXBv9=8}Y z%2?IjqJ+zz!Ac?xH$nVV@cg>4(BH%~l$4E-gg(cHL4iInqL?>WeB}*{3U*1O7MnJf zU4q$Z*@8a6&4;VmZRk7W+CG6Na;cT~FWsv={x0n2_lHE<5{PnG95!QwS1O#Y;)9PE z3Cg3i6H@@YZxR_kS+?jM7=JVZzQ-Fc;e1|*=?-(%CvX=UD#v-=B?zatgML< z(0VKlD_~nc@Sv(m*>!K6HAAO!mLp}tzFgya3FIutlJ!pm%Cmy5aP)sa21~1=S@h>V z3{rKi_PHtr`cQaNQgDV6Zk{^mEKQ(Z%EH;lt7t>aR0aI7eI)1#T8cXgAL5~Nv8$=_ zab~ZG*B#o!kj=7-Gsz?Gg_sg`wI<1p+EcB2ej-SVemWrkROKDll7uqlE|(jv-|gE# zMTl=;ue>nihb44mfm1sd?k7RZ!bZ+02`Zk=){SMH{k{03oDFjTKC**?lby*K)Kmwv z7&kqJbG;wP_Gz1_0Pjovx&s<=MSb-T`!bP7wC;8@1rvgbf5plXjZ|+sW<1gl`)JeO zN2I@GzPtB)g_x{i+q@CTr+jHF^A5Q|Onp1J>QAuXA>SsGO8|d{nGL$A=Du;T`GUjh z?Y7CgSjRh<=8MG=kLBGzu6>)?4?}ye`4@18G(E17=9T6ev42<-viN@hfk1x0BTV;Q z?%WGR2Z09?=&|A!?QpXY4m!a}>y)b@37(c!S-}nowk5_5-+*}8gNH=tgAT#N+aUm? zl4bGb4JP#9_4sBYty2H%5YSfKx{X{FhDR+c_Bo= zXiEq!tcW_NL@Vi>zeCjj0KiOqaR6}k9gg4$4J2?yF^mjF`1!^Ck}Xl@;nacStpir!w$r6Wk*J6;$8|>ndaHipE*nVyeXOZ^q?ha z&1SRC_q^Wg>j&;;{{Yr12E5Ny* zGISF;;r3-$8qWqzDNqpe$!q~?RM2wp&e5^;gt1497Jo-;tCSBH6nruLyD5gacf&1> zy#q0Su@)Xv!2xhEjjl@5qX~QEpc+arXacpG#a!b3V;w;tjL;^eUxm!tw44S@oT~V1 z{3(DAHiTgrgU>CL6`Kp5dRaJ;Rj7!b&o7@(ZrIjjAe?7Yc-&3QKO=A7xtcoQsL5(& zv|^&etX^uH#MA_V6;egGrxaQKTLvte7ieL6V(K`%mej?aZ=_bT8;aQOq$uD3Q&KQ4 zOhCq(OU5d>+?wUJspq>KaEEUYDU#ssIfqzLY`gh?*Z#&*Fg{2C69Q&&)xpgVcbik$ zwRxb0I29#tdQ)ymRRzXX>%#2ayE`wIT z>V~4uDcLHa5(YK4lw*zTilN4o26IHXctz@7Y7|GBWoKN*4=EuQvxYYakQ6wdZdY)| zu5!+`mj?u5+RQj{iE9VsbvfdF9D%D3n(~6aKkOw%2E7kX&V1aXCejZ4$_z~W`CY2> zSrCFLqc>at&AH*To!?S^T3w%QBfQ5`XYtwV&foj?K2PU}0zAfS!~>R_CSu0~W?|&f z!xi(nEcJ>gbRJ(ko=$!p5Oa*aJZ?mU9lXpIvd3ZAf$F|H<>-xdYsCT z61DZ6!kB~7f5yl#HOceS1kloEa3Z#JRg)!(I8e8XddOSZ$U&}Y>~akrVu4(c8Oe=8 z5k79NV;_dg!QW#w%6Axf70_#@K3&wRb|ndg;($uh?Is9Abnl6lfaGmJ?vj7!5^YSL zMDJczW@N@AdXW|QR(Ns-ykD0qPAubG0B#N~fZP{~iykoTRIz5IXHBL;Ie^1MDS(h) zbCs_~h0i76j(#r=%#&j?^Ss{T&P0I7Z9QCksH&WzNfrx{Ht!gFTYiTjsH?K_1=QRPFj!&p1QZk07!+O( z2arWFR6s&Vi?*~>YwxH8hiZ5;LdjXUxpA&1E9^*M^G!mrP_>PoCsSygBIlKxC;Qz?Pz7Z zgT!PloreZoV{^X~m0+}*9t>J;j;${&$gky8^>K}V**!rULacL`?523@D`nrxx!#02 z&RdZaR~#~Y;n+N8%RSpmx2);cQ2vKMuHh5fGr$j&97-5x9S}rG<>~;54z>pz$u~zT zKc+t5gixL)ckm&ABOA&<%hx^Cr!oZzo)J-=f^W(X8)3KnU*@ zkj%VTORAnPYsB>~(bj1p6w4#C)MVbWPf=dAEe97dHuh}-Uj1QYDNY;oNVM2&t1YeY zl_-p7=&mk-v4(7h?PnfdXXqz^KfYj{^z)z+AS|k#g>ooJ69~{R8kam-ohJpru9wqI zo}?JhAeafIFDKR9lO5r-05opkvw2G_>`)T0l{4Tve<L+Rz!f%fVG$~%2{ogEbVDr2zyr@Q)%3^XHgMYo*c}UA&5gG(G0a=k@_@p1gIno?eN2_WyZNYi20T`bm5cpYZc!}6um{zh45AX z0IeO{5dr0YBQSYyRNynqWad1JBMt1sfC*r$#8vxzxLzxOhmM7mRxtxO zSCeo;aD5GT+@W&XZ<)wO(-7RrcXfMGgA&q9LpPgn!Q`08$AKQVCiFP;WDen&mIQej zRnMCccsf?gp8RtF-0&OfvMd}P0tSc$0xibQO&XjIu6hb@F5;vGpw1j-qckHFxnpA# zlbCRR<1^c#_u4$i>L@&-47CRGO$}Q`{l9+g!T$hLB7`B#KMDuEEfGh*1jTPDzAEQD z?RsV{&Tt*q>9E~sXB1R)Yxa9&UAz>MgEQNmba>A9Gd+ z5Bhq*+c8{!EA^eHb1=d zgh~MPLe^sAzTb|q?nB$ZpMO*9f}oWh>pp&a;7jp`*PLFp#iIKTW-pH}GJsDPgmFxf zi9_I$UpvL*)yBMxCL~ZXryY3XEBu0~iCemxJ*O5UBb3qm)l0j;fxL4Z>~FceYsWki zi9&Ql8LaxbN`s9VGh`apOpAx;c`;iv4v&79{az_<4!dBU+fc_(3m0rR+t%@y=jKG` zr$Y^=hHv2Khpx`t~=oWxp;1^u$3qvzkUE`;-gK)-}wM@S^Om8&R(R?1BOk~relMUp} zfN*wTGX3*9o*^e|@x1OIHefjw`C3N`?_N1!Erk$ZxVAj(5ay=J9ynkGj<9vu25wPO z_plOs%jnM-1G2!(-YVh;zk^Nh&2(>^B}c)lCMQ^N$511h_P#exH1N|Ok_ z84sTN%j#~i4RI%;o9km<-dHsO zCCt%ru*E*ON1;CQM-UW93VDmS9qFv*HscT+%`zECv_ORh zK*SrRdd4w6d7S)b;-B7eVx~}lz!#U0jMwq`GsjQ)pT4+}BjoTNK2Gtfb-;-K0L}9@ zd-4MIV1nlBJPFDg7j4|MGxWC!))O34C&K0K`e%+hm;iiVjjs8RtF_}&2s0EGazi%P1X*9$IAx|oIrQzhcxRm zg$D;=mRCCO@iE1G*=+%_%O+=nZ-lUudLbH%;S^>k4VES*v=7anZU!i`5~A8%7!7iqy&>dA+#m%?qo&|ZlNWWp z(QvHCd}t`i-;M=jEY%E{II*oI$;Zel{X>v@N|NHkg5^Cfe>wV(LDw4(!XbOe&ro#f zc#=2L@!RVenAZh|g9QB&eA_)^fma{&eI{&j>KH;0jo&M5e59S=Cs7S@o_+5=ujrGH zG#{vy+P#JAB?3IRe4~*e_bmnxq0?~g7)+?o7lVOiH9nAAeI_`*dj9}l)l)2Sc`gKu zvg^s?2xevQuI&0h)yxB|e?j{01IauEt;TMB<^A%e1E!3xuWW~rvxV?ZL{}%6@~(Io zlL@60z3vMfCws_)PZ?k2-uKU9;$?OJ0GmDWYLvYa6Vac`FTNsD<)7 ANzNwrKXY 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⁡XIt7?m{B251Zb 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 E1Ki>`Y5)KL diff --git a/app/src/main/res/drawable/btn_back_rounded.xml b/app/src/main/res/drawable/btn_back_rounded.xml deleted file mode 100644 index 35e099f47..000000000 --- a/app/src/main/res/drawable/btn_back_rounded.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/drawable/btn_back_rounded_light.xml b/app/src/main/res/drawable/btn_back_rounded_light.xml deleted file mode 100644 index 0965b8c5b..000000000 --- a/app/src/main/res/drawable/btn_back_rounded_light.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - diff --git a/app/src/main/res/drawable/btn_sheet_back.xml b/app/src/main/res/drawable/btn_sheet_back.xml deleted file mode 100644 index a9582b7c0..000000000 --- a/app/src/main/res/drawable/btn_sheet_back.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/button_clicked.xml b/app/src/main/res/drawable/button_clicked.xml deleted file mode 100644 index c6965284e..000000000 --- a/app/src/main/res/drawable/button_clicked.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/button_normal.xml b/app/src/main/res/drawable/button_normal.xml deleted file mode 100644 index 928de7f1f..000000000 --- a/app/src/main/res/drawable/button_normal.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/capacitor.png b/app/src/main/res/drawable/capacitor.png deleted file mode 100644 index cd6669cce82f7f0cd284625d80ed5a4c1a99052e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5544 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 - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/ccs811.jpg b/app/src/main/res/drawable/ccs811.jpg deleted file mode 100644 index 5d69742f2bb8c654c3ca461dcdb8550851fa16c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 83403 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 E3+~X}+yDRo diff --git a/app/src/main/res/drawable/channel_parameters.gif b/app/src/main/res/drawable/channel_parameters.gif deleted file mode 100644 index 3871f89ff39652e020f127119067e9571ba8f59e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10949 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

&vb3LQh)fh^L97#Kk=_7t>1a! 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 diff --git a/app/src/main/res/drawable/circle_pause_button.xml b/app/src/main/res/drawable/circle_pause_button.xml deleted file mode 100644 index 2a15db43a..000000000 --- a/app/src/main/res/drawable/circle_pause_button.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/circle_play_button.xml b/app/src/main/res/drawable/circle_play_button.xml deleted file mode 100644 index e7b6e6324..000000000 --- a/app/src/main/res/drawable/circle_play_button.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/compass_help_icon.xml b/app/src/main/res/drawable/compass_help_icon.xml deleted file mode 100644 index 757b585c5..000000000 --- a/app/src/main/res/drawable/compass_help_icon.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/control_custom_border.xml b/app/src/main/res/drawable/control_custom_border.xml deleted file mode 100644 index e8282afc1..000000000 --- a/app/src/main/res/drawable/control_custom_border.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/control_edittext.xml b/app/src/main/res/drawable/control_edittext.xml deleted file mode 100644 index 58075abd4..000000000 --- a/app/src/main/res/drawable/control_edittext.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/create_config_icon.xml b/app/src/main/res/drawable/create_config_icon.xml deleted file mode 100644 index a4dd6d23b..000000000 --- a/app/src/main/res/drawable/create_config_icon.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/data_analysis.png b/app/src/main/res/drawable/data_analysis.png deleted file mode 100644 index fea9d594f3d831f1dcded093e2272ae6eecd88de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15336 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ℑ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 diff --git a/app/src/main/res/drawable/delete_icon.xml b/app/src/main/res/drawable/delete_icon.xml deleted file mode 100755 index 7e8e3ce02..000000000 --- a/app/src/main/res/drawable/delete_icon.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/dialog_body_background.xml b/app/src/main/res/drawable/dialog_body_background.xml deleted file mode 100644 index 9af2cdd54..000000000 --- a/app/src/main/res/drawable/dialog_body_background.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/dialog_header_background.xml b/app/src/main/res/drawable/dialog_header_background.xml deleted file mode 100644 index a9acd5f6f..000000000 --- a/app/src/main/res/drawable/dialog_header_background.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/find_mobile_axis.png b/app/src/main/res/drawable/find_mobile_axis.png deleted file mode 100644 index f1f666a79a794e94d7dddc20f6c537315ea23507..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17625 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 QasU7T07*qoM6N<$f;$m31ONa4 diff --git a/app/src/main/res/drawable/gyroscope_axes_orientation.png b/app/src/main/res/drawable/gyroscope_axes_orientation.png deleted file mode 100644 index cd4bdcd487f0ef9b22bc745d7115883de07fa2a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23216 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 bjw1MPzfI9cKB2><4MOj{q0Z}bf86^YW~GRY diff --git a/app/src/main/res/drawable/gyroscope_logdata_logo.png b/app/src/main/res/drawable/gyroscope_logdata_logo.png deleted file mode 100644 index 847068197b7a027ca96fded6b1043e30770d3b29..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10463 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 - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/hmc5883l.jpg b/app/src/main/res/drawable/hmc5883l.jpg deleted file mode 100644 index 00de91740792a88904b5ab221eda7f3c14585d06..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 79288 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 diff --git a/app/src/main/res/drawable/ic_android_black_24dp.xml b/app/src/main/res/drawable/ic_android_black_24dp.xml deleted file mode 100644 index 401cbf63b..000000000 --- a/app/src/main/res/drawable/ic_android_black_24dp.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_apps_black_24dp.xml b/app/src/main/res/drawable/ic_apps_black_24dp.xml deleted file mode 100644 index ff485cf1a..000000000 --- a/app/src/main/res/drawable/ic_apps_black_24dp.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_arrow_back_white_24dp.xml b/app/src/main/res/drawable/ic_arrow_back_white_24dp.xml deleted file mode 100644 index 563937bf1..000000000 --- a/app/src/main/res/drawable/ic_arrow_back_white_24dp.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_arrow_drop_down_black_24dp.xml b/app/src/main/res/drawable/ic_arrow_drop_down_black_24dp.xml deleted file mode 100644 index 6f45c6ee6..000000000 --- a/app/src/main/res/drawable/ic_arrow_drop_down_black_24dp.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_arrow_drop_down_white_24dp.xml b/app/src/main/res/drawable/ic_arrow_drop_down_white_24dp.xml deleted file mode 100644 index b89b1bbf1..000000000 --- a/app/src/main/res/drawable/ic_arrow_drop_down_white_24dp.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_arrow_drop_up_black_24dp.xml b/app/src/main/res/drawable/ic_arrow_drop_up_black_24dp.xml deleted file mode 100644 index 3ea9d609c..000000000 --- a/app/src/main/res/drawable/ic_arrow_drop_up_black_24dp.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_arrow_drop_up_white_24dp.xml b/app/src/main/res/drawable/ic_arrow_drop_up_white_24dp.xml deleted file mode 100644 index acea1e92c..000000000 --- a/app/src/main/res/drawable/ic_arrow_drop_up_white_24dp.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_arrow_left_24dp.xml b/app/src/main/res/drawable/ic_arrow_left_24dp.xml deleted file mode 100644 index b79d00f6e..000000000 --- a/app/src/main/res/drawable/ic_arrow_left_24dp.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_arrow_right_24dp.xml b/app/src/main/res/drawable/ic_arrow_right_24dp.xml deleted file mode 100644 index ff5a73fff..000000000 --- a/app/src/main/res/drawable/ic_arrow_right_24dp.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_bug_report_black_24dp.png b/app/src/main/res/drawable/ic_bug_report_black_24dp.png deleted file mode 100644 index 6eb1474e383a522d4f1d7633fdb172f305b721c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 527 zcmV+q0`UEbP)3~&8kbgGh`JQ1pk6?*P3gST&!& zyzwa$?vmq{x67*We2;``ewAQ2ze>1$!ubUbXPuB%1L_lM=2w@}x<1*l33sS-@7Vbn zedt(%{e1s~oP< z2~RNgjuO}47QDewf(vl3G4hl$NWg-}7`VX%7wB@-0Y^kvMh%z~or@aa2u}eD(34mJ3Q&Lo6rd-u z0u-PZn*ZgM@^93D-$a*M|E;1Yu>usJ00k(Zxnc03?`c(!{h;%ASfOQWjDyWT;wlCn zvIsJN#(j*u3^2cBfT33nzlAvij6EXvov(002ovPDHLkV1o7l?v(%l diff --git a/app/src/main/res/drawable/ic_delete_red_24dp.xml b/app/src/main/res/drawable/ic_delete_red_24dp.xml deleted file mode 100644 index 3e7908563..000000000 --- a/app/src/main/res/drawable/ic_delete_red_24dp.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_developer_board_black_24dp.xml b/app/src/main/res/drawable/ic_developer_board_black_24dp.xml deleted file mode 100644 index 27d3805f0..000000000 --- a/app/src/main/res/drawable/ic_developer_board_black_24dp.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_export_file.xml b/app/src/main/res/drawable/ic_export_file.xml deleted file mode 100644 index 88b8e4673..000000000 --- a/app/src/main/res/drawable/ic_export_file.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - diff --git a/app/src/main/res/drawable/ic_feedback_black_24dp.png b/app/src/main/res/drawable/ic_feedback_black_24dp.png deleted file mode 100644 index 1343fa837d575f39a63540bb9c65ae41f9aed884..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 311 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD0wg^q?%xcg{&~7MhEy=Vy}IAG*-*swC5 z0U~ZGtWyrOOR&voRMJSkp!#RyOTj~JZRJag?=gM9e&fdWnKN&)aSFYa7jweIF5ED9(-rq)o#eL=sSjs1Ouy8ie7Nt+ zCG$5b4h;=l>JA5{v-mK_v2q9~0Qo5gW-~A{vGA-j0dmTLES35cCKiq#D;Nb79^|V# zG%zsw9^hAhFoW;La^`I}8;)5?Z)i?AV4J?P;aFat9jp8~+vsaPW=t_b`#$_!a$ddG x?&W9C`ToCZE - - diff --git a/app/src/main/res/drawable/ic_info_black_24dp.png b/app/src/main/res/drawable/ic_info_black_24dp.png deleted file mode 100644 index c8f86b925366485cef1f43c089f785ab8415068d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmVDuaOF?qdkw!ZaV?`>xjy6gVLBv5If;S){v5mCXA=Y@H1rfw?2k|s36`TsO zNHkbQ$!A*+5eLd!$4>T2_S$>D#r=D(;16rBEP_R$P$(1%^^m2=ItNs!^UUj8&(x`~ z&l*LtbfZ#|309~g2Axu3oCHcl$g<57(qs*`7$HKSIw(*>Ty)MH?F1shPyB;e=#~ZI z_$<#QVzCQy_@bx0J~enA3k6_=)wfSbaFejbp3yC+S{ z_7DY?X;B_gQjQiRTt1lJbNASe)3hHEH3Nk2X;KG&s~Yf`BuyzGss;$NVD1ZQ>IR$< z!B`eiH$cc>Y+L1kO$;S@QaRv}I7TKArHx@^1yR}(MyiO?PB74eD6Y%=3f0*#j*5ul z=5e%+D6WK~14MDVII194dQYr$jH9~h0XH~$Rz0ABqgT}fUjFw3KEM%D{t z0UH<_Q90l{j72zCH=xQV%rU2Kzzj`k=T_B#ItiMzplU#Yrp38XGoVI{7UU2mP12$= zqM+YsSs!;u!2L@vF65Db%i+>05@0{$T9iX1pnj(f3sO{(06L`;O9r??eD0Do77h74 z;V-_%vH{L~JUnSU(9NMwpKd1}iL!=x+!AegYKnUge|2;CAWhk$H%~9V$#H>L?3_t_ z7Uu^(BNnPtAVwgP%(}c>tIUufP!Te0^4P-PR2zKDCzOaY#u9%b231&Olo%?d7-pUl wyBu>vgO|4&+;Gee%M{4ag*Bm2C=?3)2UQ-CT`xs~ZvX%Q07*qoM6N<$g2UHD;{X5v diff --git a/app/src/main/res/drawable/ic_map_red_24dp.xml b/app/src/main/res/drawable/ic_map_red_24dp.xml deleted file mode 100644 index 07885fb63..000000000 --- a/app/src/main/res/drawable/ic_map_red_24dp.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_nav_header_logo.xml b/app/src/main/res/drawable/ic_nav_header_logo.xml deleted file mode 100644 index 34661c2f6..000000000 --- a/app/src/main/res/drawable/ic_nav_header_logo.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - diff --git a/app/src/main/res/drawable/ic_pause_white_24dp.xml b/app/src/main/res/drawable/ic_pause_white_24dp.xml deleted file mode 100644 index baf8f08b3..000000000 --- a/app/src/main/res/drawable/ic_pause_white_24dp.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_play_arrow_white_24dp.xml b/app/src/main/res/drawable/ic_play_arrow_white_24dp.xml deleted file mode 100644 index 7e05ffccf..000000000 --- a/app/src/main/res/drawable/ic_play_arrow_white_24dp.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_play_button.xml b/app/src/main/res/drawable/ic_play_button.xml deleted file mode 100644 index bf2ad5b07..000000000 --- a/app/src/main/res/drawable/ic_play_button.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_record_stop_white.xml b/app/src/main/res/drawable/ic_record_stop_white.xml deleted file mode 100644 index ff13e3487..000000000 --- a/app/src/main/res/drawable/ic_record_stop_white.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - diff --git a/app/src/main/res/drawable/ic_record_white.xml b/app/src/main/res/drawable/ic_record_white.xml deleted file mode 100644 index ec6323806..000000000 --- a/app/src/main/res/drawable/ic_record_white.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - diff --git a/app/src/main/res/drawable/ic_settings_black_24dp.xml b/app/src/main/res/drawable/ic_settings_black_24dp.xml deleted file mode 100644 index ace746c40..000000000 --- a/app/src/main/res/drawable/ic_settings_black_24dp.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_shopping_cart_black_24dp.xml b/app/src/main/res/drawable/ic_shopping_cart_black_24dp.xml deleted file mode 100644 index 11887e38f..000000000 --- a/app/src/main/res/drawable/ic_shopping_cart_black_24dp.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_stop_white_24dp.xml b/app/src/main/res/drawable/ic_stop_white_24dp.xml deleted file mode 100644 index 86b8cd2de..000000000 --- a/app/src/main/res/drawable/ic_stop_white_24dp.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_usb_connected.xml b/app/src/main/res/drawable/ic_usb_connected.xml deleted file mode 100644 index 59b3ad703..000000000 --- a/app/src/main/res/drawable/ic_usb_connected.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_usb_disconnected.xml b/app/src/main/res/drawable/ic_usb_disconnected.xml deleted file mode 100644 index ec696e430..000000000 --- a/app/src/main/res/drawable/ic_usb_disconnected.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_user__24dp.xml b/app/src/main/res/drawable/ic_user__24dp.xml deleted file mode 100644 index 1936c32f1..000000000 --- a/app/src/main/res/drawable/ic_user__24dp.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_widgets_black_24dp.xml b/app/src/main/res/drawable/ic_widgets_black_24dp.xml deleted file mode 100644 index 4abb823f8..000000000 --- a/app/src/main/res/drawable/ic_widgets_black_24dp.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_wifi_tethering_black_24dp.xml b/app/src/main/res/drawable/ic_wifi_tethering_black_24dp.xml deleted file mode 100644 index 4e021adaa..000000000 --- a/app/src/main/res/drawable/ic_wifi_tethering_black_24dp.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/icon_logic_analyzer_white.xml b/app/src/main/res/drawable/icon_logic_analyzer_white.xml deleted file mode 100644 index 933d8c7fc..000000000 --- a/app/src/main/res/drawable/icon_logic_analyzer_white.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/icon_oscilloscope_white.xml b/app/src/main/res/drawable/icon_oscilloscope_white.xml deleted file mode 100644 index 8aa5db4ff..000000000 --- a/app/src/main/res/drawable/icon_oscilloscope_white.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - diff --git a/app/src/main/res/drawable/icons8_usb_connected_100.png b/app/src/main/res/drawable/icons8_usb_connected_100.png deleted file mode 100644 index 387514b49cbe7c973daea762ac073a6dae5c6f20..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1796 zcmZuyc~BCF8pjevFhlbo%T&}{4xRZYk5mrX8P9kHnr9(vBT6we7?6cZ+70iKfdob-~7J$uK8wutn=>Y4uRFd007{S z6V4vLkK}(FNM_$hzAg0J2dNnRIV^zx^7ztzAbkbnh5-QTav?CIj7P#Z^@yO4SOHJi0H7*@WV2&zFK6>dN(Vp34a&(4of zE2+ul^;0*_it8C_cTV*t&ZT1}9Y;JWF?O!Zt&T62izAsIe7?6>w~Y6FiQK*dS!uEP zx;GKOX5yuuV>*eOY04S3WRiwvWXY4!la&kbNE1G7v#kH*)!%cm zx*;}Dmft7UM-fw#Pgkm{IPO!+hr)C=$lMz~%O_CXekni*o`C6cHw_7R(GGEeqgI-5 z@%2*GR!cpZMkRg1!q{ZyJXNua)Kfb}8ZU&@EGWq`%}kN zfQ}6i1F~yRZyN{g6%bQ}2N*RN?~*vBEKD7^&>?&>)ZV+~R?SV4iXr5`SNZ#>jxCVV z-Nn`Kq}bcL=3yygxeby=lz+at38j5}RsPl*qp_oXJGpdL@Vm+b=N2$(+IK`@F&6VW zVdu?2)Un*?LwUS@=@g#lviXIB8bW6re2L*(Y@H;C8LIEq3@)!WJ>4YKzE)N5&nU@y zWc@tny*4Kf%GOZ020WosSWpxVRSFGww`JWyFAeMt@t!4~J~x85;zBM@1a(3R6xjh^ zIa!Y@%ZAVTfWm?@)$}bRhawceaMK?`pIn#oEvg@*@whmIaw@~3W;S)!!N7U*^H|6$ zR@n%~y-(<T{PlBAVWmbB@;Y^ zKEnZ9L|_~L=g2H{z=)ovGj?p^Q8}j%H(?R+kCb8$tM|99mW>f`;FCP_3&pp%Ae1*T zJE5JW_BJXSoo4ctOmGF$^ooCsx3zNcJgH`g#Uj2?j|S=orTH0%v+KF8CY}t~x`};; z2p!ztm+Hc^X3QW{YRSd_VWcV4s1ru0N(afseTJu`bU#D94Xa79*M$$>8|G zKDxF}@uibn46fUW5P=!Q$cfV7CfArKKBcYWt&5BcmNKZdneLz6pd`P_7+;8*zkF}O ztL7UoxyM~Y2OLiZIhq7JMd<{GMXYe6Qs1t~k21#>_P^4Oc;TVaRTE>~T)Cu70hM=V z8&B?=O`2zV?5{4dSGrj6kimXSmC|`L-2_CK7vEL(ZsQR?#1bsJLrfhg(JaR*!X={? zW+4Y&z4#%sKTG*Lv{pm-CX?&>?H%I$3!;y6M+CcBEUwzUcFebtO|v$WOnI98($*^T zK+u%YT5w8^?}Vma1}lvb(p8fvaJ(c({seT`C=TB%CWfl7w*J};&cC-Yy%fG4gQQIG z2LC|!sIbEo&3K%vqpe5J50#2L$ohAqV-aZd)%$dK%DGV~jZRIsDWG2bk3nUtt_xKY z8o>Ls^-nm*aoEX?-?HZHKX&5=tg;IAb!dLd237P^2GjkCW3)mpLpr}1W*Q+3cQe<4;p@TUk!bQk*2Q z@XW;l;>WFo;FVgR>#WCzy&vH7w?ATV2awhDX5|QqsKH2ekWaTnO`DoRKk{H!KP>Bv z=2tL(6_cEm*!Q%y`>?2|${oBVkgW{GALD{oVec-lfNXWEJp<_oMyDosP7_=~aZ+eE zJbW!J5K1txC4=UqhkLN2_^m&Iw9UK{>`k}}NcKqqX!TpkGvOyIt$D*4bhlqI5}g{k zrDciN(z!#JKKfP0l@RD$$c`19U zo&U^BgFmVQwz*!c8Qhd@J>Zey;H_Yox&R7E&avYi!@ShGxJ69*EeN1E=xj^FyXh8* zwUnA#1N4g;yUu%vG)1<3uQKVcBaO!nax@dy+qA`&n>Jc}maRm-O>mUN{7WaYsxx^H achu}p;FSIl&Q9I4+(8`x diff --git a/app/src/main/res/drawable/icons_usb_disconnected_100.png b/app/src/main/res/drawable/icons_usb_disconnected_100.png deleted file mode 100644 index c96b092839da84d102401568877475590179c16c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1901 zcmZWqX*3&%7EX)WYfBJI389G;4Q-!zs6?!Z(u6crV=UbsRkiO-OCxF*wX}59k|LE> zks_wHiY=|Rtw>vfsv#ZpF$UFV-n?_(ocDg*d(U^jbMF1ly+1yh`x!@h84Vc#03h$| zgeC0Pz&}Fj(0&dT7JBTL1K|Wm44~na*3v!@zl?T80{~BRWOw}}002ofXDr$yh9bHj zA58Sr;zBae&?`cOq0QFoEnN-vG*TjHI_q3$YICGaH()U|K%}KGW!zhf9(|&Mq$ zIu->Dnud8!P-PlcuL3``MpV#2jq>SVnwpvfz0`xpL{!WnITueG7P0{X8qB8fB%47bUnndaFna^vF%(AB9w_t5$<)Zea z>?sGCS@krn)JE$)+wK!z_6+Lq0jEwT+zDY^-fVp9-;#&1_@ALYFzAK<@BU}iUo>D> zwBN%}L^+VQso%rh)-(Rum4Z1Zp)|RI$v}3!8PJBo+PPKe5zx7lPpNuFt=G*k%(Fs3tn8RiL%j&+w5up2f7h&9Gv^6 zdAq!fVG?zK8&#U1`dEt_4QU5JSU>$8Z#~&;pP<$#%kq6}A6=X<;q?dji^Bh2$)QFT z6~N93iJk|g`LuZYF~$_b_=nLqS2s#>i75FTF2-b`{mJ;IO~OY_qv03&jdLCYScrj* z=kz9iO#>Elw90&?@#-Zp;r7f8)AUltlt@2TKB6BAIZhIFj7jj9u0}Pj1d5q`mq4E^ z{jEzgMtkWfG1bFk;tJ2r&EbxA9R1_8OnCWBVO0@casAV-TJzU}^*lYI+VfWtJ(YFU zJ1sVm5Y6%j_013oZ&0yR@a>?X4bG7@cU8h^2K_?nsE{eg`9$I^cVwS~s@7pBzE9jg z=P9W$u4%KJjseq-G0DubvVU4o==~PK;W4hlpJ4NynYA(KKH&V-+3vNi*UB&F#ShfH zoIUKgm&h?fx~r^ja?G0U7pG)4^c{K}??xmLOjzC(8;8y}N3mPsCw%7FU+a2pou$tI zD9Nx%Q&j<(*m0RaL%U^BR`B?a<46;*A_(Y$`2bHmU<@_Vt!!Vr=T!R*?BtRRw!BpR zB;Jo>vRnb3cOL~d<<`^m?T(fM@wc&xCEGf82^`vn#D|Evlo@iA_Yj$vTLV2Ulix%rw0c5xK^ygSUgLsNd$+C*6XQh zSDVsPKtRxk5EtFebRkp`igGXVdHn>9?5szmJQX+Y#OD{9k-^78`E~mfxrGYL;+9Vy zVlR&3Oe-adU9p1;IL`W3#I>o^kn5HbF2*dLw;(A}l0<*xA$K;tWC~ar|C@reT8@|l zU2&5JWx~#SxwisMJF&xqBj61BsUkub;@REx^>w9C`u)B^<-9J+L_uMNITQb2Z5Wj&Xa+2)apC*ikb zcT)bQhO;hxGu~6*i)=6-c3KjUb(-bxo;nv|z;d!0A6j-mJNs(lo>@v>mJ8j{9&1g? zs@d3BGpeMqKjWa)i>oZ}7=FR$sJM5D%sVCvB#PTMtl=D%VWkOystO}3N$?Q8T_cNaNHk#nuxySk(d zbSuqyiO*5`=EXSZz`h@YP8}pNy-gcv>QA|Fiuqp%hFMc;_vnBzp3d=I5h)=QNJb;t1{yx z?U&{SCW|)+?fUUdrI9lRC*ixXd+` zQ7dm)CJzkv{R1LreDtz7u*GbiU^#-JDl^7LLfG$lzD8e_AXrAF?jps)+s2=5J`z@t z(P%n9jF@*TvrY#-R4LzmcfpT(4X%ac?Fw>$M>Jbn07^mA+OeqJ+D3&O)77V3)~S+g z)7-JsL&47$1$`fQx0Y>F-bWvFo}O7Yge6PTzk?F4pWN}W9OfUHx%a0Z{w{MvMXZthQ2FwpP{{@M3d2;{& diff --git a/app/src/main/res/drawable/knob.xml b/app/src/main/res/drawable/knob.xml deleted file mode 100644 index 447fa9c93..000000000 --- a/app/src/main/res/drawable/knob.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/knob_base.xml b/app/src/main/res/drawable/knob_base.xml deleted file mode 100644 index 843f9b298..000000000 --- a/app/src/main/res/drawable/knob_base.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - - - - - diff --git a/app/src/main/res/drawable/la_chart_custom_border.xml b/app/src/main/res/drawable/la_chart_custom_border.xml deleted file mode 100644 index c66955abe..000000000 --- a/app/src/main/res/drawable/la_chart_custom_border.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/la_custom_border.xml b/app/src/main/res/drawable/la_custom_border.xml deleted file mode 100644 index 43f586ea8..000000000 --- a/app/src/main/res/drawable/la_custom_border.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/la_formatted_button.xml b/app/src/main/res/drawable/la_formatted_button.xml deleted file mode 100644 index 359d428d0..000000000 --- a/app/src/main/res/drawable/la_formatted_button.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/logic_analyzer_circuit.png b/app/src/main/res/drawable/logic_analyzer_circuit.png deleted file mode 100644 index 4991d1a002e0b0751c65e5e21343139d4be3f90a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 91718 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

_!SJZ<21f%8qS_A6@1f=V3>zbv02}~ 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 diff --git a/app/src/main/res/drawable/logo.png b/app/src/main/res/drawable/logo.png deleted file mode 100644 index 546d8afd0815c03c435c54c3804479820fdfba4d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11906 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 G&;Adzr0w|t diff --git a/app/src/main/res/drawable/logo200x200.png b/app/src/main/res/drawable/logo200x200.png deleted file mode 100644 index effdfbab9e13958b4dbe9d589827653e74b81793..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7612 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 - - diff --git a/app/src/main/res/drawable/menu_icon_map.xml b/app/src/main/res/drawable/menu_icon_map.xml deleted file mode 100644 index 265f9ebc2..000000000 --- a/app/src/main/res/drawable/menu_icon_map.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/menu_icon_save.xml b/app/src/main/res/drawable/menu_icon_save.xml deleted file mode 100644 index 5ac6640cc..000000000 --- a/app/src/main/res/drawable/menu_icon_save.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/mic_schematic.png b/app/src/main/res/drawable/mic_schematic.png deleted file mode 100644 index ece6f21fa1b930f093933e8273cfa443c0678dd1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 60726 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⪼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

&o}7-@PZ0*TkOO#tMNI}1mQmHOVCCkA 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 diff --git a/app/src/main/res/drawable/mlx90614.jpg b/app/src/main/res/drawable/mlx90614.jpg deleted file mode 100644 index c9cadf1a27c390160128d37fc52ee11c7729ee51..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 103531 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�pi`Yj{g&qKBF**Z>$q2i%I#o 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%0Avh{;3w)YbBXxGv6emL#g#H{G~`0*46ii-z` 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 diff --git a/app/src/main/res/drawable/mlx90614_schematic.png b/app/src/main/res/drawable/mlx90614_schematic.png deleted file mode 100644 index 9fd28bfd311de6c19548ed5dfb5e9aec91a916c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 91721 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 znc⩔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%0DOS z>d`^U2+q&njjAoYVE8pkhBSMyZZ3R&Vr1%Vvun>3DQuN!UAb}vpkq@r$U8uQB9RDv z5uMX>NF<#BTZ5L4?rLOYq{X0+pdiG$lh5NdJLnt$Q5XK}d~ z-bn<*RTYG~2la@;F!B54mHCSxX}OwZvZj2C5Gntq&a}6;o0_m|s;Xin#v!J1E4lB0 zwnZ8@H=?5(;0Q{1Cd93{@gcHs;^fJhxj9d3=SV2`@BIHx?S>9)Kr6-%XMxC^*Yz?Yl(yLedXoyXlHWBJ1^<5lbP8-L^2yiv;eMU{C zD)9UP`VICe72f2ml~vH$_xC6WQu!Pk6Mr`Kcd{?#%f0G#An%yu2bhJ$oj%<$7=o zJw{0zo5{Jif(~;p(8kHZ5wawyW|DpUAI7Z)MVn{q);(HUTA+BoDn3&Lxch~lZzC88 zL>p2cKdvRJ0S(TbKVO0_T7s6lhyIMF_}!~lDVTT_t3kM1|NQwQVSisXYZh~Bi$&h@ z_AMo(-#vjqd}pcxZi3lwB!IwUWWy=Ax8r8oUBuV!Snqx)A< z<<8z2YPX>eP7S=>E@+&SU!O|^)zF8Bhi?>pQ1E+kdLU!Bl$^XgX>EE=^dv#EEC~t< z(to-`fWPF)6H#lfoP~o&kJg9KvFE%zAiSZ$sAa2{2FS>Vj9w7))X~ZTu z3&mY>cDNZ=Ot7%C3*~9)opyl8bXapm6>KkV$!~uA1W+xl!zx@(a&*x3YSXmB0oBuB z#A4X|8t1xYuNL4x1gxCuAGP5m)382&{ss`PJ2BE%r4|60)_9{E2PRIm$B}9)C7nPh zq>C=nVu6zAPS#)49vxj>QoHd()ZnnGDQ8nt6Y60#{HY>DQ_3d9?6xdGl&_=Mj`=4o z+m4v+Y!T8=uu16~dd>xsUkwNEi4C+Fo%12Z&UI5y+Xe%2G z3=EPc<|YN%7jNCV1=^mt|BAvl=+5wC^q)#Q_b4XE#B48-6cC_5r?lU5w#5o^jL!Pn zKea`IP9TGm%2!X178PrHtV6>5#EEwgIy~InA^KeX7-+ISTkWV3x2tZ6Vi-s>Z&@eAKP3t`Y

4R#9B_w3>~E`$>*00V(vt&mOPXqq4E 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 - - diff --git a/app/src/main/res/drawable/phone_x_axis.png b/app/src/main/res/drawable/phone_x_axis.png deleted file mode 100644 index a17cb3ffbf0a53f40f42fb4e39259dc852b21055..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23634 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 diff --git a/app/src/main/res/drawable/phone_z_axis.png b/app/src/main/res/drawable/phone_z_axis.png deleted file mode 100644 index f6dedae835c80dbf1a53ad98f24444781c228cc5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21940 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 QaA6ftQ+cIas%R1NKeMA0Bme*a diff --git a/app/src/main/res/drawable/play.png b/app/src/main/res/drawable/play.png deleted file mode 100644 index a9db0ea3916400c28651a6d39feafd88530ed512..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1909 zcmV-*2a5QKP)000L(Nklf+AdS<;(E!u;1?w27_~Ra{!=FD7I|bl9!iPTwGjQTDpJ#eyvuk zR4V0i`MP!MaJU%BNJL*(k(7z}c`97l|W%*;%K!O+ps;q`iP4spaR5C{aCnwqw6-=6r>Uqm92 zsMYE#SFZf}^$X`)jTi)In(pc8*}Qo(&YwK8v$LH}Cr&JgSOJnGPn%i__jU=;z1qFP#7)~{cWGo&85T;AN=j0dy= zApx4E&!0b!1E-hz`g%O9NTLcb40Gnp860ncO`A4VRaNcYy?euk4Y)4Z7>&kID1^ti z0KWi5QQT*rk&%Jp5yYN7dj?Af#9$B*N7Nu{l=jbRv+7kC964u|kt8w>_lJc;{7A}qk+ z^?K{;>$9@5aOZ@nuC7M8A_RJRdT@^wh!Nm$xm+fb3HMK!&d$!|S(XF>fqX#xGf(s32;nJOZPoF+D7z`qF31GL|!{IP+ z0)arlU@+h&QAkh#0466V?RI-*WhD+B3wpht+i(*A;C8#k?+g0sugwP$*F8 zzlq&$pO~0Hg;J^XfAA7dPfwf8X5J54rBV?G4<5wDf}~mC?%lgNIXS%NYXm{;+__Uy zTwIKc{{a|=>Fev$>-Co}U*?XXa0`MU2%@N{NLpH2ii_78kH_P5I&C&vI2^`xk(8I0 zOZ9p^E?ztQe*f*;w;w%vG&(wp>-eatsrgry(*R(z*)$qWwCT=EAP^vCW@Zi_K8$Ok zlL~>)pFhX3MJ^~P004t^W(>lSa*NXC@CpfyyIFr+%=ocxFH{L2#k!3 z+_-Tg){Tb%Jcqjg5DW&hv$JvA6~rV!({y)tcX@d^j*uz=6!6TakAC=>z$ zV`F1oU0u9u_r%G{%KG~CE6Ruk0Kn;V3LjJc{{0*G0hpSax^w4Fa;N)pBofJk2M=&o zUICV6o12?)fMvXT^$K-)^5jWPO-r$hfRI2a6gqqM zERL668XFr0Mi0UQ0Py$k-?p|k95pRSB$D>__GmL_kyQi$fMFPy%N5hEEpf84vhLr% z&->OQRu|y#`~B&e@dQCsR8*||zK@1j0glejPK`!`6DAL}T8&l;s}h?40FWeUu~@WP zEl!>oB_$;mi)HyLO(Zc3aQJ*ayWO6YBbl0-8i&I%G&F>Bh$Bt`00@V}p-^aGV8CLr z6c!fZajix{LBX|a*ZTYWDT?CuR`HS0zt@*DK0f~D&6^J&K6pHyk&%(f$w`W$xPPun vrBa1Lp;D=eii*n1%k_G_(P$K2GK%LvjLX&xv0zKC00000NkvXXu0mjfFV%$0 diff --git a/app/src/main/res/drawable/powersource_circuit.png b/app/src/main/res/drawable/powersource_circuit.png deleted file mode 100644 index e2cd829236e37b20add121bc9e2a03666398ad50..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 147931 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

w}{TZJ>qXMGx%O($Y#^xN+l# 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 diff --git a/app/src/main/res/drawable/pslab_v5_back_colormap.png b/app/src/main/res/drawable/pslab_v5_back_colormap.png deleted file mode 100644 index 4a9eeddbb4b929dc2a295d5e78085b78cca429e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5249 zcmd^DeKb^Q9Db+SOj$%VC89cQA5z$gU1Ks5CWH+U#SWz?HfKpB45?L|)J7jZc1&N6 z)sB>8G;M>WmX?vyk`TulWm1hnM(n+F<{md))6{1E*)wO(oO{o_zmMnnJ2+rl0!PxDUSG>R9KbcTpFBRe}ZX0L*U$Kpkr1oGJjd zN`UT80AQspxwI(20qG_DFZfc%B590q7C|AAOh^nk^!tn8I*?2li)2>|hn6lv zVvN(``-#yl@9>C0bNfk4VNLW8PcH_EyBX#&+aH^Y+bWhk?rYfV@#a46il50S ze*dW}6cqfU(RO-lh>wOHbxN}E{@;^?V)k=^4~HBh0QpBsZbD>Ni=IOa0iZ@jcD1m! zkW8{wBkdTS7=Dsn^i0nd;UOk1Yx4tT1D8H0;My#kguBuir$Q231Jq)?qpXb zTbwjY%EgqecyRn$N%%}soRim6|P;p=-D&UymK@QhQ=bs`0x|?2_ z7Fjddvh$%|2PAT+*DO71zZbN@xT%7-TC+`qLa47#~sd! zqm097Z~O-4yd^7x<2a}@1bx{#FboMLeb{ow0n3-@pgJr#+uvjkjEL#UQM^Hk1xVvz zc$JKS8h;T6f!z3WIVHJ!SmkP*;x@?f?W0654D<0ZmrHB>q2~jI^e%F-%Q;eV@YT{# zZ!foBOhAF_?BY^|sV_~7Q#|O_%}vdPQ$OekX{k^nN30x5nuuc+dIY2nJ>Ly-|1?dM z2pX;`YP)ke$T(1ZRHvxR2XC?EiP>%a(B|re`^pqYJ&^^#-4?IfLN8X};C>tkOodHH zx`|_qD;mE~@f*amMz`F=NHJ6BeT&F&QW)RRgAKh&$Gb?KWM~|$xQ&+KY{$X@THyp7 zDlwSi#+MQc?v$`wW7G5Td2?0FTSVnAcMf>;a?77H+YMF_7(MODo^Ml4N1h+!MHo^j z^GH3Vf-M48stCp&V2~(h#g}~O@(TZhBi~ASg CeNnyu diff --git a/app/src/main/res/drawable/pslab_v5_back_layout.png b/app/src/main/res/drawable/pslab_v5_back_layout.png deleted file mode 100644 index ab75102313460b6c192b44f58c15742e5f7f1caf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 528000 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

MKKo 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ℑ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 z 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 z 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 >P`lzQ|ho;oDMmMc(O`LpBma9Xgzc+f<+fNQ0yE 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 diff --git a/app/src/main/res/drawable/pslab_v5_front_colormap.png b/app/src/main/res/drawable/pslab_v5_front_colormap.png deleted file mode 100644 index 32957eecc8f344d289c9a1d3c9228d36335964b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5312 zcmc&&c{r4L9RE$TG0~WwRS}7vpV$UJZ-)P5zO%M412aJbsCyl>{2F{R#czWf5de8br7G|mWTb&BbIiaU>cJ0&AB zrmQ0_p3Ch?dZTxy#<;6%P3Ph*DZ2`fJ6f#-z^0__R{%_kF+igMfCyCpuHpe`mKi=y zgHhr1hL03K?C>q**y6kqlslEajZw47Ir1V%JJNkb6xD=?3N#_2s3vFtIchk#)L{cH zt})5B`F)y`fN3#w08uUY9n~^Ee+0M27BX4yvWsy4_3r&Mz~W<3?_EKp1eOtpQ6-4O z=2{(F?7kfe)FFAkW0q&*0Is=ZBr%esLv=75+%Ukt*YB}{*P(wEVAC0W&CIQ^9>;5L zjJPHyDTYZo=Vdo}HYn-m8?&XFP+GiWp$wo@wM{59VnPtYnFv_WbdD}0R7Vu6<45$k z5rnFifS9p+N5qnZHi7*&K1;|gG3grJJqbcW=|WR3!95rR>Yk90Fl$I|4vjK~oY!FA zvJQC~-H2U8qG&cr2RgG{HiA~Vf73#1;KdbTEbU(k2ft1;P&r(^=lctKcyK;tY<7?w zBAPvsTC-_L6m^dBki$3nzqCpS#= zpH=oR*whz63fg#)L?Gp4pIBO^<#FoKR2nO!2AE*PT#<|mlUZ6zz)&oQbAw6N+vl!8 z3-%+Hc0D<$-fg>9r~*E9+S*}Nj1)}nXEK2T*RQbYwsW-#G7!S_n?}g|ITN? zsr;WTNb#t8mHS6{l6-}t>V6fl(`a;+LU5(LgY+EA>3P$LqtOF+37J^<<6HjPW_xx# zKSar?%P?%a*O&b{(?84vK|O_W4jYX!k9Shhi{KtM;Mrc1Nu^dahxQ*w3wfn?HHdX03#QWsSjY`tuV@lEn#B)=|_P>mR2Qm9iMs^3tEZ&70!lPBE2Zmx{~oO zrf9-Zijc(C`<9xSv%@c^d$*TlxrWvQlU$L?pu*y@hCmOsD2C%D3&G7Nuj2Q%nClAe z1GV)s6jQf5;m_pgwAwcZ833eE z^Q|!G=83AEP{M^9QoL~_XBz2RtfoiAFqneeQeUw6{{H|vRuipOcCR{6j=e_6YSBR$ z;J+Ykyn)+UX>ybs)bQ)tR+ZM(%YaSi7_0gj{7g2rG>#6ZUE-&&fS~+&?`Lc;DYCw5 zKFddmyAqmDmYVqvPUxNjY-n5dl7{VJTkxJ;tThi{5Awz&`7s(#2(HM4L5@NshJYG5 zuE+_%Ht(^s7COr~<)=2%Cm8V}L<^6U=p6U(GG6;hHr4n+qb``fyO)1~O{LfD zAlt!NMM)T+|Ko$Ic#2B3fo}>7onpa`1yL87n2_fO!{0dtN}ySj+`cF?Nai@C$9l@kEN%ce!#e)>j>*s=;Dw&rvm~?M}X;HTgrm#DfN{xez=h z6j{tL6bMnG;X8D^PZ!|`+&~)-{#@b^uZOnbmN~MgOh`e7hU!32HA< zJdzSoom8ee*ge>Co9S=O3P01?aiG1pCSWjg=3p9`IKQ8_J=nC;mwU$nC(Q&ge|UV4 r`8nu!waqVzklObrDSs}R#m6tOZW!#JHU$g6H3Ca>JF`4fuS0(U_o#nq diff --git a/app/src/main/res/drawable/pslab_v5_front_layout.png b/app/src/main/res/drawable/pslab_v5_front_layout.png deleted file mode 100644 index aabb61fe566abcb2de1ec779c3a9960cea508864..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 380165 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

jzh^CrW*!?!&3`+gc>9rO%Du9}jN zn~}bs_tUM zRryKu!R&hHE(%4tdH0U^I&ivG4RQ2t=D*L|L%zDX?$tIdF6qnMK?Aa#BO>`HJ8$9^ z{|6QOxmhHrtC-(Xu0i|cshnSaSb42yM_1(S0qu<;8b=@X$J|Uv==(f2b^y@!2iz>d z7N(~q%1?`FMp6AF=ZdAY)*rslPR{xLCgahvlF4D2E zv}Di0&R!b!KM3bd!2T7XVPPUPf-+e-T(uwk*A}lX`mJ`RYvr%D!wsv$dBw$5XHe+M zxwyELMMkpTgzdV07M2*}JFkxFE4T|g1zhxeR+awq_u7X6%iZe=UWbx*a9hngl^VXx z{)V^n1y9#~#WdqY9h#lF3^F={XHJT{@eO#~-~M;HtmIyh=mROIrB7Q^Y0vmD9lrnL zzqfzva}+gvu2pxNMU=?LKDu*r lV>+one~rJ0+t&1t&f|ift=^vCF$(@?YP8F+NZ;Y|{{w2L(?|dS diff --git a/app/src/main/res/drawable/multimeter_circuit.png b/app/src/main/res/drawable/multimeter_circuit.png deleted file mode 100644 index 386734d93fd24532c7b9201057261e05a81a6089..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 160727 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 z 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 =ko1L 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 X-^Rr0H+<@&;KyR_LbIgVt9SnwF^~DC diff --git a/app/src/main/res/drawable/nav_header_logo.png b/app/src/main/res/drawable/nav_header_logo.png deleted file mode 100644 index 09b19eec4ab850aa092c322a25480dab903a3ac2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 73448 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

I&Im}$u?#OBIGkee$( z2cc2yKG7k|b8!Yy>$wUuA9RUx2fioK>bVXx?BAw1avO-u5j?fv-~to>$*Dt@41c?yL>p-?Ck3WY+UP$+C*6G++nxnu&cZvX%Q07*qoM6N<$g1t0l A3jhEB diff --git a/app/src/main/res/drawable-xxhdpi/compass_icon.png b/app/src/main/res/drawable-xxhdpi/compass_icon.png deleted file mode 100644 index bd2de32948a43da10f9e22588a57f355cc5fce8d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 252462 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