From 20037ec1eda5a0de88cbbfea6f75253d972f72dd Mon Sep 17 00:00:00 2001 From: strawmanbobi Date: Sun, 21 Oct 2018 09:04:33 +0800 Subject: [PATCH] removed unused examples --- pi3-smart-remote/.gitignore | 10 - pi3-smart-remote/.idea/compiler.xml | 22 - .../.idea/copyright/profiles_settings.xml | 3 - pi3-smart-remote/.idea/gradle.xml | 18 - pi3-smart-remote/.idea/misc.xml | 36 - pi3-smart-remote/.idea/modules.xml | 9 - pi3-smart-remote/.idea/runConfigurations.xml | 12 - pi3-smart-remote/app/.gitignore | 1 - pi3-smart-remote/app/build.gradle | 27 - pi3-smart-remote/app/proguard-rules.pro | 25 - .../app/src/main/AndroidManifest.xml | 29 - .../net/irext/pi3sr/Pi3SRApplication.java | 13 - .../java/net/irext/pi3sr/driver/HCSR501.java | 63 - .../net/irext/pi3sr/driver/MotionSensor.java | 19 - .../java/net/irext/pi3sr/ui/MainActivity.java | 21 - .../app/src/main/res/layout/activity_main.xml | 18 - .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 3418 -> 0 bytes .../res/mipmap-hdpi/ic_launcher_round.png | Bin 4208 -> 0 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 2206 -> 0 bytes .../res/mipmap-mdpi/ic_launcher_round.png | Bin 2555 -> 0 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 4842 -> 0 bytes .../res/mipmap-xhdpi/ic_launcher_round.png | Bin 6114 -> 0 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 7718 -> 0 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 10056 -> 0 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 10486 -> 0 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 14696 -> 0 bytes .../app/src/main/res/values/colors.xml | 6 - .../app/src/main/res/values/strings.xml | 3 - .../app/src/main/res/values/styles.xml | 11 - pi3-smart-remote/build.gradle | 23 - pi3-smart-remote/gradle.properties | 17 - .../gradle/wrapper/gradle-wrapper.jar | Bin 53636 -> 0 bytes .../gradle/wrapper/gradle-wrapper.properties | 6 - pi3-smart-remote/gradlew | 160 -- pi3-smart-remote/gradlew.bat | 90 - .../BUILD_NUMBER | 1 - .../FindAndroidThings.cmake | 105 - .../LICENSE | 201 -- .../README.md | 47 - .../armeabi-v7a/include/pio/gpio.h | 107 - .../armeabi-v7a/include/pio/i2c_device.h | 109 - .../armeabi-v7a/include/pio/i2s_device.h | 104 - .../include/pio/peripheral_manager_client.h | 169 -- .../armeabi-v7a/include/pio/pwm.h | 59 - .../armeabi-v7a/include/pio/spi_device.h | 119 - .../armeabi-v7a/include/pio/uart_device.h | 178 -- .../armeabi-v7a/lib/libandroidthings.so | Bin 137764 -> 0 bytes .../x86/include/pio/gpio.h | 107 - .../x86/include/pio/i2c_device.h | 109 - .../x86/include/pio/i2s_device.h | 104 - .../include/pio/peripheral_manager_client.h | 169 -- .../x86/include/pio/pwm.h | 59 - .../x86/include/pio/spi_device.h | 119 - .../x86/include/pio/uart_device.h | 178 -- .../x86/lib/libandroidthings.so | Bin 190916 -> 0 bytes pi3-smart-remote/settings.gradle | 1 - stm8-driver/.gitignore | 3 - stm8-driver/BuildLog.log | 1 - stm8-driver/STM8_Driver.ewd | 454 ---- stm8-driver/STM8_Driver.ewp | 1609 ------------- stm8-driver/STM8_Driver.ewt | 2103 ----------------- stm8-driver/STM8_Driver.eww | 10 - .../settings/STM8_Driver.Debug.cspy.bat | 40 - .../settings/STM8_Driver.Debug.cspy.ps1 | 31 - .../settings/STM8_Driver.Debug.driver.xcl | 11 - .../settings/STM8_Driver.Debug.general.xcl | 11 - .../settings/STM8_Driver.Release.driverxcl | 11 - stm8-driver/settings/STM8_Driver.bat | 40 - stm8-driver/settings/STM8_Driver.dbgdt | 1056 --------- stm8-driver/settings/STM8_Driver.dni | 64 - stm8-driver/settings/STM8_Driver.dnx | 89 - stm8-driver/settings/STM8_Driver.ps1 | 31 - stm8-driver/settings/STM8_Driver.wspos | 2 - stm8-driver/src/main.c | 439 ---- stm8-example/STM8_Demo.dep | 708 +++--- stm8-example/settings/STM8_Demo.wsdt | 14 +- things-example/.gitignore | 63 - things-example/.idea/misc.xml | 33 - things-example/.idea/modules.xml | 9 - things-example/.idea/runConfigurations.xml | 12 - things-example/.idea/vcs.xml | 6 - things-example/app/.gitignore | 1 - things-example/app/build.gradle | 28 - things-example/app/proguard-rules.pro | 21 - .../irext_things/ExampleInstrumentedTest.java | 26 - .../app/src/main/AndroidManifest.xml | 23 - .../net/irext/irext_things/MainActivity.java | 32 - .../app/src/main/res/layout/activity_main.xml | 18 - .../app/src/main/res/values/colors.xml | 6 - .../app/src/main/res/values/strings.xml | 3 - .../app/src/main/res/values/styles.xml | 6 - .../irext/irext_things/ExampleUnitTest.java | 17 - things-example/build.gradle | 27 - things-example/empty | 0 things-example/gradle.properties | 17 - .../gradle/wrapper/gradle-wrapper.jar | Bin 53636 -> 0 bytes .../gradle/wrapper/gradle-wrapper.properties | 6 - things-example/gradlew | 160 -- things-example/gradlew.bat | 90 - things-example/settings.gradle | 1 - 100 files changed, 349 insertions(+), 9670 deletions(-) delete mode 100644 pi3-smart-remote/.gitignore delete mode 100644 pi3-smart-remote/.idea/compiler.xml delete mode 100644 pi3-smart-remote/.idea/copyright/profiles_settings.xml delete mode 100644 pi3-smart-remote/.idea/gradle.xml delete mode 100644 pi3-smart-remote/.idea/misc.xml delete mode 100644 pi3-smart-remote/.idea/modules.xml delete mode 100644 pi3-smart-remote/.idea/runConfigurations.xml delete mode 100644 pi3-smart-remote/app/.gitignore delete mode 100644 pi3-smart-remote/app/build.gradle delete mode 100644 pi3-smart-remote/app/proguard-rules.pro delete mode 100644 pi3-smart-remote/app/src/main/AndroidManifest.xml delete mode 100644 pi3-smart-remote/app/src/main/java/net/irext/pi3sr/Pi3SRApplication.java delete mode 100644 pi3-smart-remote/app/src/main/java/net/irext/pi3sr/driver/HCSR501.java delete mode 100644 pi3-smart-remote/app/src/main/java/net/irext/pi3sr/driver/MotionSensor.java delete mode 100644 pi3-smart-remote/app/src/main/java/net/irext/pi3sr/ui/MainActivity.java delete mode 100644 pi3-smart-remote/app/src/main/res/layout/activity_main.xml delete mode 100644 pi3-smart-remote/app/src/main/res/mipmap-hdpi/ic_launcher.png delete mode 100644 pi3-smart-remote/app/src/main/res/mipmap-hdpi/ic_launcher_round.png delete mode 100644 pi3-smart-remote/app/src/main/res/mipmap-mdpi/ic_launcher.png delete mode 100644 pi3-smart-remote/app/src/main/res/mipmap-mdpi/ic_launcher_round.png delete mode 100644 pi3-smart-remote/app/src/main/res/mipmap-xhdpi/ic_launcher.png delete mode 100644 pi3-smart-remote/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png delete mode 100644 pi3-smart-remote/app/src/main/res/mipmap-xxhdpi/ic_launcher.png delete mode 100644 pi3-smart-remote/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png delete mode 100644 pi3-smart-remote/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png delete mode 100644 pi3-smart-remote/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png delete mode 100644 pi3-smart-remote/app/src/main/res/values/colors.xml delete mode 100644 pi3-smart-remote/app/src/main/res/values/strings.xml delete mode 100644 pi3-smart-remote/app/src/main/res/values/styles.xml delete mode 100644 pi3-smart-remote/build.gradle delete mode 100644 pi3-smart-remote/gradle.properties delete mode 100644 pi3-smart-remote/gradle/wrapper/gradle-wrapper.jar delete mode 100644 pi3-smart-remote/gradle/wrapper/gradle-wrapper.properties delete mode 100644 pi3-smart-remote/gradlew delete mode 100644 pi3-smart-remote/gradlew.bat delete mode 100644 pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/BUILD_NUMBER delete mode 100644 pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/FindAndroidThings.cmake delete mode 100644 pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/LICENSE delete mode 100644 pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/README.md delete mode 100644 pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/armeabi-v7a/include/pio/gpio.h delete mode 100644 pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/armeabi-v7a/include/pio/i2c_device.h delete mode 100644 pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/armeabi-v7a/include/pio/i2s_device.h delete mode 100644 pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/armeabi-v7a/include/pio/peripheral_manager_client.h delete mode 100644 pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/armeabi-v7a/include/pio/pwm.h delete mode 100644 pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/armeabi-v7a/include/pio/spi_device.h delete mode 100644 pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/armeabi-v7a/include/pio/uart_device.h delete mode 100644 pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/armeabi-v7a/lib/libandroidthings.so delete mode 100644 pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/x86/include/pio/gpio.h delete mode 100644 pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/x86/include/pio/i2c_device.h delete mode 100644 pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/x86/include/pio/i2s_device.h delete mode 100644 pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/x86/include/pio/peripheral_manager_client.h delete mode 100644 pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/x86/include/pio/pwm.h delete mode 100644 pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/x86/include/pio/spi_device.h delete mode 100644 pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/x86/include/pio/uart_device.h delete mode 100644 pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/x86/lib/libandroidthings.so delete mode 100644 pi3-smart-remote/settings.gradle delete mode 100644 stm8-driver/.gitignore delete mode 100644 stm8-driver/BuildLog.log delete mode 100644 stm8-driver/STM8_Driver.ewd delete mode 100644 stm8-driver/STM8_Driver.ewp delete mode 100644 stm8-driver/STM8_Driver.ewt delete mode 100644 stm8-driver/STM8_Driver.eww delete mode 100644 stm8-driver/settings/STM8_Driver.Debug.cspy.bat delete mode 100644 stm8-driver/settings/STM8_Driver.Debug.cspy.ps1 delete mode 100644 stm8-driver/settings/STM8_Driver.Debug.driver.xcl delete mode 100644 stm8-driver/settings/STM8_Driver.Debug.general.xcl delete mode 100644 stm8-driver/settings/STM8_Driver.Release.driverxcl delete mode 100644 stm8-driver/settings/STM8_Driver.bat delete mode 100644 stm8-driver/settings/STM8_Driver.dbgdt delete mode 100644 stm8-driver/settings/STM8_Driver.dni delete mode 100644 stm8-driver/settings/STM8_Driver.dnx delete mode 100644 stm8-driver/settings/STM8_Driver.ps1 delete mode 100644 stm8-driver/settings/STM8_Driver.wspos delete mode 100644 stm8-driver/src/main.c delete mode 100644 things-example/.gitignore delete mode 100644 things-example/.idea/misc.xml delete mode 100644 things-example/.idea/modules.xml delete mode 100644 things-example/.idea/runConfigurations.xml delete mode 100644 things-example/.idea/vcs.xml delete mode 100644 things-example/app/.gitignore delete mode 100644 things-example/app/build.gradle delete mode 100644 things-example/app/proguard-rules.pro delete mode 100644 things-example/app/src/androidTest/java/net/irext/irext_things/ExampleInstrumentedTest.java delete mode 100644 things-example/app/src/main/AndroidManifest.xml delete mode 100644 things-example/app/src/main/java/net/irext/irext_things/MainActivity.java delete mode 100644 things-example/app/src/main/res/layout/activity_main.xml delete mode 100644 things-example/app/src/main/res/values/colors.xml delete mode 100644 things-example/app/src/main/res/values/strings.xml delete mode 100644 things-example/app/src/main/res/values/styles.xml delete mode 100644 things-example/app/src/test/java/net/irext/irext_things/ExampleUnitTest.java delete mode 100644 things-example/build.gradle create mode 100644 things-example/empty delete mode 100644 things-example/gradle.properties delete mode 100644 things-example/gradle/wrapper/gradle-wrapper.jar delete mode 100644 things-example/gradle/wrapper/gradle-wrapper.properties delete mode 100644 things-example/gradlew delete mode 100644 things-example/gradlew.bat delete mode 100644 things-example/settings.gradle diff --git a/pi3-smart-remote/.gitignore b/pi3-smart-remote/.gitignore deleted file mode 100644 index e08e8a0..0000000 --- a/pi3-smart-remote/.gitignore +++ /dev/null @@ -1,10 +0,0 @@ -*.iml -.gradle -/local.properties -/.idea/workspace.xml -/.idea/libraries -.DS_Store -/build -/captures -.externalNativeBuild -/wiringPi diff --git a/pi3-smart-remote/.idea/compiler.xml b/pi3-smart-remote/.idea/compiler.xml deleted file mode 100644 index 96cc43e..0000000 --- a/pi3-smart-remote/.idea/compiler.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/pi3-smart-remote/.idea/copyright/profiles_settings.xml b/pi3-smart-remote/.idea/copyright/profiles_settings.xml deleted file mode 100644 index e7bedf3..0000000 --- a/pi3-smart-remote/.idea/copyright/profiles_settings.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/pi3-smart-remote/.idea/gradle.xml b/pi3-smart-remote/.idea/gradle.xml deleted file mode 100644 index 7ac24c7..0000000 --- a/pi3-smart-remote/.idea/gradle.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/pi3-smart-remote/.idea/misc.xml b/pi3-smart-remote/.idea/misc.xml deleted file mode 100644 index f3d13dd..0000000 --- a/pi3-smart-remote/.idea/misc.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/pi3-smart-remote/.idea/modules.xml b/pi3-smart-remote/.idea/modules.xml deleted file mode 100644 index 3d6b20b..0000000 --- a/pi3-smart-remote/.idea/modules.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/pi3-smart-remote/.idea/runConfigurations.xml b/pi3-smart-remote/.idea/runConfigurations.xml deleted file mode 100644 index 7f68460..0000000 --- a/pi3-smart-remote/.idea/runConfigurations.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/pi3-smart-remote/app/.gitignore b/pi3-smart-remote/app/.gitignore deleted file mode 100644 index 796b96d..0000000 --- a/pi3-smart-remote/app/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/build diff --git a/pi3-smart-remote/app/build.gradle b/pi3-smart-remote/app/build.gradle deleted file mode 100644 index f002f37..0000000 --- a/pi3-smart-remote/app/build.gradle +++ /dev/null @@ -1,27 +0,0 @@ -apply plugin: 'com.android.application' - -android { - compileSdkVersion 26 - buildToolsVersion '26.0.2' - defaultConfig { - applicationId "net.irext.pi3sr" - minSdkVersion 25 - targetSdkVersion 26 - versionCode 1 - versionName "1.0" - testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" - } - buildTypes { - release { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' - } - } -} - -dependencies { - compile fileTree(dir: 'libs', include: ['*.jar']) - provided 'com.google.android.things:androidthings:0.5.1-devpreview' - compile 'com.android.support:appcompat-v7:26.+' - compile 'com.android.support.constraint:constraint-layout:1.0.0-beta4' -} diff --git a/pi3-smart-remote/app/proguard-rules.pro b/pi3-smart-remote/app/proguard-rules.pro deleted file mode 100644 index d14c450..0000000 --- a/pi3-smart-remote/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 D:\Android\android-sdk/tools/proguard/proguard-android.txt -# You can edit the include path and order by changing the proguardFiles -# directive in build.gradle. -# -# 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/pi3-smart-remote/app/src/main/AndroidManifest.xml b/pi3-smart-remote/app/src/main/AndroidManifest.xml deleted file mode 100644 index 1aaabc2..0000000 --- a/pi3-smart-remote/app/src/main/AndroidManifest.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/pi3-smart-remote/app/src/main/java/net/irext/pi3sr/Pi3SRApplication.java b/pi3-smart-remote/app/src/main/java/net/irext/pi3sr/Pi3SRApplication.java deleted file mode 100644 index 82c5cca..0000000 --- a/pi3-smart-remote/app/src/main/java/net/irext/pi3sr/Pi3SRApplication.java +++ /dev/null @@ -1,13 +0,0 @@ -package net.irext.pi3sr; - -import android.app.Application; - -/** - * - * Pi3SRApplication - * - * created by strawmanbobi 2017-06-25 - */ -public class Pi3SRApplication extends Application { - -} diff --git a/pi3-smart-remote/app/src/main/java/net/irext/pi3sr/driver/HCSR501.java b/pi3-smart-remote/app/src/main/java/net/irext/pi3sr/driver/HCSR501.java deleted file mode 100644 index 74b958f..0000000 --- a/pi3-smart-remote/app/src/main/java/net/irext/pi3sr/driver/HCSR501.java +++ /dev/null @@ -1,63 +0,0 @@ -package net.irext.pi3sr.driver; - -import android.util.Log; - -import com.google.android.things.pio.Gpio; -import com.google.android.things.pio.GpioCallback; - -import java.io.IOException; - -/** - * - * HC-SR501 driver - * - * created by strawmanbobi 2017-06-25 - */ -public class HCSR501 implements MotionSensor { - - private static final String TAG = HCSR501.class.getSimpleName(); - - private final Gpio bus; - - private final MotionSensor.Listener listener; - - public HCSR501(Gpio bus, Listener listener) { - this.bus = bus; - this.listener = listener; - } - - @Override - public void startup() { - try { - bus.setDirection(Gpio.DIRECTION_IN); - bus.setActiveType(Gpio.ACTIVE_HIGH); - bus.setEdgeTriggerType(Gpio.EDGE_RISING); - } catch (IOException e) { - throw new IllegalStateException("Sensor can't start - App is foobar'd", e); - } - try { - bus.registerGpioCallback(callback); - } catch (IOException e) { - throw new IllegalStateException("Sensor can't register callback", e); - } - } - - private final GpioCallback callback = new GpioCallback() { - @Override - public boolean onGpioEdge(Gpio gpio) { - listener.onMovement(); - return true; - } - }; - - @Override - public void shutdown() { - bus.unregisterGpioCallback(callback); - try { - bus.close(); - } catch (IOException e) { - Log.e(TAG, "Failed to shut down. You might get errors next time you try to start.", e); - } - } - -} diff --git a/pi3-smart-remote/app/src/main/java/net/irext/pi3sr/driver/MotionSensor.java b/pi3-smart-remote/app/src/main/java/net/irext/pi3sr/driver/MotionSensor.java deleted file mode 100644 index c02676d..0000000 --- a/pi3-smart-remote/app/src/main/java/net/irext/pi3sr/driver/MotionSensor.java +++ /dev/null @@ -1,19 +0,0 @@ -package net.irext.pi3sr.driver; - -/** - * - * motion sensor interface - * - * created by strawmanbobi 2017-06-25 - */ -public interface MotionSensor { - - void startup(); - - void shutdown(); - - public interface Listener { - void onMovement(); - } - -} diff --git a/pi3-smart-remote/app/src/main/java/net/irext/pi3sr/ui/MainActivity.java b/pi3-smart-remote/app/src/main/java/net/irext/pi3sr/ui/MainActivity.java deleted file mode 100644 index dcaf926..0000000 --- a/pi3-smart-remote/app/src/main/java/net/irext/pi3sr/ui/MainActivity.java +++ /dev/null @@ -1,21 +0,0 @@ -package net.irext.pi3sr.ui; - -import android.support.v7.app.AppCompatActivity; -import android.os.Bundle; - -import net.irext.pi3sr.R; - -/** - * - * MainActivity - * - * created by strawmanbobi 2017-06-25 - */ -public class MainActivity extends AppCompatActivity { - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_main); - } -} diff --git a/pi3-smart-remote/app/src/main/res/layout/activity_main.xml b/pi3-smart-remote/app/src/main/res/layout/activity_main.xml deleted file mode 100644 index 722a2e0..0000000 --- a/pi3-smart-remote/app/src/main/res/layout/activity_main.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - diff --git a/pi3-smart-remote/app/src/main/res/mipmap-hdpi/ic_launcher.png b/pi3-smart-remote/app/src/main/res/mipmap-hdpi/ic_launcher.png deleted file mode 100644 index cde69bcccec65160d92116f20ffce4fce0b5245c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3418 zcmZ{nX*|@A^T0p5j$I+^%FVhdvMbgt%d+mG98ubwNv_tpITppba^GiieBBZGI>I89 zGgm8TA>_)DlEu&W;s3#ZUNiH4&CF{a%siTjzG;eOzQB6{003qKeT?}z_5U*{{kgZ; zdV@U&tqa-&4FGisjMN8o=P}$t-`oTM2oeB5d9mHPgTYJx4jup)+5a;Tke$m708DocFzDL>U$$}s6FGiy_I1?O zHXq`q884|^O4Q*%V#vwxqCz-#8i`Gu)2LeB0{%%VKunOF%9~JcFB9MM>N00M`E~;o zBU%)O5u-D6NF~OQV7TV#JAN;=Lylgxy0kncoQpGq<<_gxw`FC=C-cV#$L|(47Hatl ztq3Jngq00x#}HGW@_tj{&A?lwOwrVX4@d66vLVyj1H@i}VD2YXd)n03?U5?cKtFz4 zW#@+MLeDVP>fY0F2IzT;r5*MAJ2}P8Z{g3utX0<+ZdAC)Tvm-4uN!I7|BTw&G%RQn zR+A5VFx(}r<1q9^N40XzP=Jp?i=jlS7}T~tB4CsWx!XbiHSm zLu}yar%t>-3jlutK=wdZhES->*1X({YI;DN?6R=C*{1U6%wG`0>^?u}h0hhqns|SeTmV=s;Gxx5F9DtK>{>{f-`SpJ`dO26Ujk?^%ucsuCPe zIUk1(@I3D^7{@jmXO2@<84|}`tDjB}?S#k$ik;jC))BH8>8mQWmZ zF#V|$gW|Xc_wmmkoI-b5;4AWxkA>>0t4&&-eC-J_iP(tLT~c6*(ZnSFlhw%}0IbiJ ztgnrZwP{RBd(6Ds`dM~k;rNFgkbU&Yo$KR#q&%Kno^YXF5ONJwGwZ*wEr4wYkGiXs z$&?qX!H5sV*m%5t@3_>ijaS5hp#^Pu>N_9Q?2grdNp({IZnt|P9Xyh);q|BuoqeUJ zfk(AGX4odIVADHEmozF|I{9j>Vj^jCU}K)r>^%9#E#Y6B0i#f^iYsNA!b|kVS$*zE zx7+P?0{oudeZ2(ke=YEjn#+_cdu_``g9R95qet28SG>}@Me!D6&}un*e#CyvlURrg8d;i$&-0B?4{eYEgzwotp*DOQ_<=Ai21Kzb0u zegCN%3bdwxj!ZTLvBvexHmpTw{Z3GRGtvkwEoKB1?!#+6h1i2JR%4>vOkPN_6`J}N zk}zeyY3dPV+IAyn;zRtFH5e$Mx}V(|k+Ey#=nMg-4F#%h(*nDZDK=k1snlh~Pd3dA zV!$BoX_JfEGw^R6Q2kpdKD_e0m*NX?M5;)C zb3x+v?J1d#jRGr=*?(7Habkk1F_#72_iT7{IQFl<;hkqK83fA8Q8@(oS?WYuQd4z^ z)7eB?N01v=oS47`bBcBnKvI&)yS8`W8qHi(h2na?c6%t4mU(}H(n4MO zHIpFdsWql()UNTE8b=|ZzY*>$Z@O5m9QCnhOiM%)+P0S06prr6!VET%*HTeL4iu~!y$pN!mOo5t@1 z?$$q-!uP(+O-%7<+Zn5i=)2OftC+wOV;zAU8b`M5f))CrM6xu94e2s78i&zck@}%= zZq2l!$N8~@63!^|`{<=A&*fg;XN*7CndL&;zE(y+GZVs-IkK~}+5F`?ergDp=9x1w z0hkii!N(o!iiQr`k`^P2LvljczPcM`%7~2n#|K7nJq_e0Ew;UsXV_~3)<;L?K9$&D zUzgUOr{C6VLl{Aon}zp`+fH3>$*~swkjCw|e>_31G<=U0@B*~hIE)|WSb_MaE41Prxp-2eEg!gcon$fN6Ctl7A_lV8^@B9B+G~0=IYgc%VsprfC`e zoBn&O3O)3MraW#z{h3bWm;*HPbp*h+I*DoB%Y~(Fqp9+x;c>K2+niydO5&@E?SoiX_zf+cI09%%m$y=YMA~rg!xP*>k zmYxKS-|3r*n0J4y`Nt1eO@oyT0Xvj*E3ssVNZAqQnj-Uq{N_&3e45Gg5pna+r~Z6^ z>4PJ7r(gO~D0TctJQyMVyMIwmzw3rbM!};>C@8JA<&6j3+Y9zHUw?tT_-uNh^u@np zM?4qmcc4MZjY1mWLK!>1>7uZ*%Pe%=DV|skj)@OLYvwGXuYBoZvbB{@l}cHK!~UHm z4jV&m&uQAOLsZUYxORkW4|>9t3L@*ieU&b0$sAMH&tKidc%;nb4Z=)D7H<-`#%$^# zi`>amtzJ^^#zB2e%o*wF!gZBqML9>Hq9jqsl-|a}yD&JKsX{Op$7)_=CiZvqj;xN& zqb@L;#4xW$+icPN?@MB|{I!>6U(h!Wxa}14Z0S&y|A5$zbH(DXuE?~WrqNv^;x}vI z0PWfSUuL7Yy``H~*?|%z zT~ZWYq}{X;q*u-}CT;zc_NM|2MKT8)cMy|d>?i^^k)O*}hbEcCrU5Bk{Tjf1>$Q=@ zJ9=R}%vW$~GFV_PuXqE4!6AIuC?Tn~Z=m#Kbj3bUfpb82bxsJ=?2wL>EGp=wsj zAPVwM=CffcycEF; z@kPngVDwPM>T-Bj4##H9VONhbq%=SG;$AjQlV^HOH7!_vZk=}TMt*8qFI}bI=K9g$fgD9$! zO%cK1_+Wbk0Ph}E$BR2}4wO<_b0{qtIA1ll>s*2^!7d2e`Y>$!z54Z4FmZ*vyO}EP z@p&MG_C_?XiKBaP#_XrmRYszF;Hyz#2xqG%yr991pez^qN!~gT_Jc=PPCq^8V(Y9K zz33S+Mzi#$R}ncqe!oJ3>{gacj44kx(SOuC%^9~vT}%7itrC3b;ZPfX;R`D2AlGgN zw$o4-F77!eWU0$?^MhG9zxO@&zDcF;@w2beXEa3SL^htWYY{5k?ywyq7u&)~Nys;@ z8ZNIzUw$#ci&^bZ9mp@A;7y^*XpdWlzy%auO1hU=UfNvfHtiPM@+99# z!uo2`>!*MzphecTjN4x6H)xLeeDVEO#@1oDp`*QsBvmky=JpY@fC0$yIexO%f>c-O zAzUA{ch#N&l;RClb~;`@dqeLPh?e-Mr)T-*?Sr{32|n(}m>4}4c3_H3*U&Yj)grth z{%F0z7YPyjux9hfqa+J|`Y%4gwrZ_TZCQq~0wUR8}9@Jj4lh( z#~%AcbKZ++&f1e^G8LPQ)*Yy?lp5^z4pDTI@b^hlv06?GC%{ZywJcy}3U@zS3|M{M zGPp|cq4Zu~9o_cEZiiNyU*tc73=#Mf>7uzue|6Qo_e!U;oJ)Z$DP~(hOcRy&hR{`J zP7cNIgc)F%E2?p%{%&sxXGDb0yF#zac5fr2x>b)NZz8prv~HBhw^q=R$nZ~@&zdBi z)cEDu+cc1?-;ZLm?^x5Ov#XRhw9{zr;Q#0*wglhWD={Pn$Qm$;z?Vx)_f>igNB!id zmTlMmkp@8kP212#@jq=m%g4ZEl$*a_T;5nHrbt-6D0@eqFP7u+P`;X_Qk68bzwA0h zf{EW5xAV5fD)il-cV&zFmPG|KV4^Z{YJe-g^>uL2l7Ep|NeA2#;k$yerpffdlXY<2 znDODl8(v(24^8Cs3wr(UajK*lY*9yAqcS>92eF#8&Yxa2Dcw(Xv69J_N zk;D>XMA4`aM3i10k4LkBNK-;@A|OZ;#K7a*d%yYSG4Jup%tK1DbI$+FD>GmD&As=# z-?RrF=*NW+GKk5>gy{bd{J$)$!-GM#xR$V=ZlB*AFlGtZIU5uI4+V_?jR8H!G=}{) z)S5DXEnw(TH~8&w&`i)~kRK=sR0yi=?Cfj--DASfwd}tnw(Tcu-^UHglw^$q0gSEC z4dC;Wpw*yrplawiL20#GN#ggzGC;ws%qI=p*LI*=jE&&?bkGl=+Xhgy9c*DAwQT7$ zke2<|A=tiC2n@?+bxb#Kzrh2}Y6PDhK+)KG0hA5_3DQIHR67h{VVw@f+SK0x*oJ)` z4+;>1F+A$MpiWkY5EQmyykYzL1CE{G^M62h8JNyK0AmUitrM0uY?HCJ_9+}#KMYVp z1QyfYhfs`)Zv%^aq1eVgg(QG88B~G|VU5!EHyndF#e*ujckkYdeFBLOeC_S+v(StM zaL7QEplxk;?%er%uLf_PK2*8@om>!v$v_t0Mp%)ChK9wxVo7{~U^(xIfrE|d2M}f< zp|wN%Nli`7ocjuiH%ahgj5%$V;MCu#A=hpukh^UyeFmo$>dLN+C-u$M79l}D+KP*d z|9oHEO_1Z*W3Xc}$0Qs)LUBL)k#CZhkmSNZ^2;y3^g0}@BO(7Z@k&q-Rqhem21}4y zT3SjoGcz9*_OVBRpxh8K0T~;6H8+KPleB^yNLfiLYm0i--LUM6+5+N}w1jxaFQ9c> zIw*V}>gwvkp=*Pz2E>~mRQR#j(Fz+}RaHd-61}Mv1!cI9*1N41_d(&27mEMgtZPBp z0qIWEdi*sWv~H0Hq#az1l$DkJ*D6=zCwq7A-W>;UTKU{UR6J;HB{|o#$ak85QAinO zs%~bF-?4#Bcj`&Wt!$E25l2#r&XD+gKdR)SK=@5f|7(P8a9d+#q?g7JuS6yJR=tYW z3GEe~C*fez+}zxno}T`DVV@-df}?R-YOaGv@b>N7B9`6MhOX?ZGIm$hdB zu%8I{%9SgxTZ~1#i9viA<9U^r$-b2365vR)9&>>9B*@8L2;4tcUNSq~Fc++0jur+Cx}WstFViF^CqD+; z-jwQIH1}z&ft=@``cQOm78Ad;jU?deb_!68^%w)>1JF;WZzaB|8;k-%9ZXqG+ahs_ zL){E!`qf@uUZaFe^hPg;KQsCB%2G$H$ZPwJfZ;4AxiEm#H`L?#7*bY~M-E?FF98k* z==+On=)PD6mX%m=$|xXIc(xCXg;H}O9L-cJl_RoTP&2W=s zMf`A|o11%DFAfQAF&PYzJV6Q|I+v*{2kUvyAn{G3i#8MlQ6*#Ddc#I`<$2Z_0WQ5GpAzQ1pm~ea1jkSy@>)Y0{+O zxS7|CijZ{FOM zF!F%H!^6h`phhWx>Kksuu)V@85HVoPxt8(F*)kkY%{<797ST3J%&42Zy}c)O0~8t> zIuQW1ik+aMZx`IiG-)xGfJlQQ-Fgtv9*vCT-^dUfhdLRcRsb}m8=&Ce;7L*dp>JO) zQb__~9?X4&!vLYu3S-5_Asrx3PtTXS0XlKw!~`g)Nvw3oSmIVK|!K}H0BsFS-!+evp}TYrP>p3sQG&GL}}PM zUMY}*NlrYBN=DpK>UnyK%KSlWKBNoM>({RzCmh8npb;ZR42Os>dYH#b!%`2CttS=a zQ$IP`;wK}Y!TPh~OeZ*f{v+rl=#-3XJtZgGPJ{gACzo&~2-XpxNKUSiaxJpO6A5GV>618&CCo;u5MPI|0DX^Pmt;&M4Y>fIvI1WF1$KT~SI- z(Mqx#6{93>u?n(Vr66t~cPen5I9RK3Ei>v`?j~HzjcP6l&kzp?N4vDNw4acL-YE|@ zF&hH&kgZ}Ts}xYyp{~FRal;j?K;J4ji*ThD!2}N)W^w&>o08 z2m)h|m{H3^PXH+MfY=z+fk|a#WTXq5YIK{d+D1e~IEuYR*AS2nQiMJrSDm|XfObbI zsKxMrcE@rSqYnt-$SELC3I_pLhT~}fM=T(;99$Y38_E9t`xhY#!_yt;Yc@-lE*%RL zE5(dtJRp8J<{|AtNRiBX5D;1rxYjNTNTCC?J4Qj_@PK%ia*vZ!KpyB;YPnHBmf=VS zL<4kLSy|PbIddkm*}VQE4~*EuRaI5z#l#^)KtkcwPK1GQTy%gi?#Oj6wkt*bp}q@{(gY+WagFMV zL9Pf#0En|5Ilz(Y0YW&O70J5*SqaBo<0uLcgcU8GO+0n#)ThV*K-n365(idxix)5c zV{2<`jU_kJ2V`6b34!Rt;f8HPIBqH#6>mL;?qv-eF@SjYs;H=_ef#aV@y04UlTQ@+ z`}+@p)nobj`4-PCa>M+0W&u%18h{eR3JB;X6NEg=1$=200}0Lri75(Vp+mRB?CY*21#bpdJs%c;JC-nF$)ND zL$sc{x;nCT>(&L>ccbw~xNO+40iV%&sd zz!3+C_U-cJ%L&luQLOLg7e;WnkB`qnJRxt&is)1W0GXOu8=Y+v_{X5cAEW<^?Kb1|uax*#z?ah%-a z=21X6ukwI7ln{=Gm2liBpzgDIe&m8M(j=3~W@2BRoSdZHrwBVB(Wioff}HR!EP&Ku zc)~0tCmcGg5D!LgsOBuD3l4M~Cz@zE43If6V&J&NJCbB*qws_odIa_bFC85@a>Nz; zxN+mghpf5Lb%xXs=36tU8>eFGdh|=h#l?k&k33=anR6|N1jqT2 zW6`_F(I^+m@{JVAnG^o5lXKVaCbiQ*E+klWjJ8d9dmgqO!$nqBR?(kBW^&`k4N_QGNFc!+5W==#n-C6vMWcgF*^7#b znqjse$3C&X^?X^jY?(c*o^f_|UUlo%Ev*m|?`~+e7z_u3ur0zX89W@APG}(^TnBv_ z!}@gJUQ#efp-?;m>v3LQUK^^btF`PV&-VU!vPa6DC+Jo@95}!mu@8=pj*s3?IQ(KW zW5x_Dcml+x56jET8`(^FKtkdJGR7QmtEMemwxH!qm_B_vo{;ag2YqeceDh6w^TGJ# z%a_ZpU%y_&vTdz3_cZn*94)p9-7O;{qiEs6g-UEQYkRLh1#L5H)+{^QdOI*x1+@XyY_&D{FI~Jt98nt+(F7r-?^{CLcb0*tw*nqydju ze}EE#!8Slj(s1CwfnCrxe3*AMYipmsHD=J%sZ)oI9Xl3pdYm|O=FC~q(a|9_H8peu zVW2vC)AjgQSFlkPuZrSTiBJaz2Yi5cBDM|N*dK6&i|w>&)6ln{1-$@i`v-}MiSann zVSHkX?u`;Xu`Jw|m4Q&Syv1N$SSQrI8ry(vVQm^PFFT>uG=BVed>hLI(3ExS)-4YU z3-gDhtqL!v@K(iMUC|+Y#|iwWWgXW^@EhG0_u==)vYMKjFd?kMI@YXNgQqL-mX!(E zhJj!;rk264yz+`Yb2|j}0xUCqe0;X4)#^ydax3uc9cH-v1k%!i!!&N&($YeoLn|mK zsDOD?1eS?qGmDvkbz=W8<&GtU-}>|S$M5}kyxz~p>-~Pb{(irc?QF~icx8A201&Xin%Hxx@kekd zw>yHjlemC*8(JFz05gs6x7#7EM|xoGtpVVs0szqB0bqwaqAdVG7&rLc6#(=y0YEA! z=jFw}xeKVfmAMI*+}bv7qH=LK2#X5^06wul0s+}M(f|O@&WMyG9frlGyLb z&Eix=47rL84J+tEWcy_XTyc*xw9uOQy`qmHCjAeJ?d=dUhm;P}^F=LH42AEMIh6X8 z*I7Q1jK%gVlL|8w?%##)xSIY`Y+9$SC8!X*_A*S0SWOKNUtza(FZHahoC2|6f=*oD zxJ8-RZk!+YpG+J}Uqnq$y%y>O^@e5M3SSw^29PMwt%8lX^9FT=O@VX$FCLBdlj#<{ zJWWH<#iU!^E7axvK+`u;$*sGq1SmGYc&{g03Md&$r@btQSUIjl&yJXA&=79FdJ+D< z4K^ORdM{M0b2{wRROvjz1@Rb>5dFb@gfkYiIOAKM(NR3*1JpeR_Hk3>WGvU&>}D^HXZ02JUnM z@1s_HhX#rG7;|FkSh2#agJ_2fREo)L`ws+6{?IeWV(>Dy8A(6)IjpSH-n_uO=810y z#4?ez9NnERv6k)N13sXmx)=sv=$$i_QK`hp%I2cyi*J=ihBWZLwpx9Z#|s;+XI!0s zLjYRVt!1KO;mnb7ZL~XoefWU02f{jcY`2wZ4QK+q7gc4iz%d0)5$tPUg~$jVI6vFO zK^wG7t=**T40km@TNUK+WTx<1mL|6Tn6+kB+E$Gpt8SauF9E-CR9Uui_EHn_nmBqS z>o#G}58nHFtICqJPx<_?UZ;z0_(0&UqMnTftMKW@%AxYpa!g0fxGe060^xkRtYguj ze&fPtC!?RgE}FsE0*^2lnE>42K#jp^nJDyzp{JV*jU?{+%KzW37-q|d3i&%eooE6C8Z2t2 z9bBL;^fzVhdLxCQh1+Ms5P)ilz9MYFKdqYN%*u^ch(Fq~QJASr5V_=szAKA4Xm5M} z(Kka%r!noMtz6ZUbjBrJ?Hy&c+mHB{OFQ}=41Irej{0N90`E*~_F1&7Du+zF{Dky) z+KN|-mmIT`Thcij!{3=ibyIn830G zN{kI3d`NgUEJ|2If}J!?@w~FV+v?~tlo8ps3Nl`3^kI)WfZ0|ms6U8HEvD9HIDWkz6`T_QSewYZyzkRh)!g~R>!jaR9;K|#82kfE5^;R!~}H4C?q{1AG?O$5kGp)G$f%VML%aPD?{ zG6)*KodSZRXbl8OD=ETxQLJz)KMI7xjArKUNh3@0f|T|75?Yy=pD7056ja0W)O;Td zCEJ=7q?d|$3rZb+8Cvt6mybV-#1B2}Jai^DOjM2<90tpql|M5tmheg){2NyZR}x3w zL6u}F+C-PIzZ56q0x$;mVJXM1V0;F}y9F29ob51f;;+)t&7l30gloMMHPTuod530FC}j^4#qOJV%5!&e!H9#!N&XQvs5{R zD_FOomd-uk@?_JiWP%&nQ_myBlM6so1Ffa1aaL7B`!ZTXPg_S%TUS*>M^8iJRj1*~ e{{%>Z1YfTk|3C04d;8A^0$7;Zm{b|L#{L(;l>}-4 diff --git a/pi3-smart-remote/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/pi3-smart-remote/app/src/main/res/mipmap-mdpi/ic_launcher_round.png deleted file mode 100644 index efc028a636dd690a51db5a525cf781a5a7daba68..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2555 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 diff --git a/pi3-smart-remote/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/pi3-smart-remote/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png deleted file mode 100644 index 3af2608a4492ef9ae63a77ec3305aedda89594cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6114 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 diff --git a/pi3-smart-remote/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/pi3-smart-remote/app/src/main/res/mipmap-xxhdpi/ic_launcher.png deleted file mode 100644 index 324e72cdd7480cb983fa1bcc7ce686e51ef87fe7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7718 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 diff --git a/pi3-smart-remote/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/pi3-smart-remote/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png deleted file mode 100644 index 9bec2e623103ac9713b00cad8502a057c1efda61..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10056 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 ek+^GN3bv-?^>(QkVinb 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 - - #3F51B5 - #303F9F - #FF4081 - diff --git a/pi3-smart-remote/app/src/main/res/values/strings.xml b/pi3-smart-remote/app/src/main/res/values/strings.xml deleted file mode 100644 index f9581a4..0000000 --- a/pi3-smart-remote/app/src/main/res/values/strings.xml +++ /dev/null @@ -1,3 +0,0 @@ - - Pi3SR - diff --git a/pi3-smart-remote/app/src/main/res/values/styles.xml b/pi3-smart-remote/app/src/main/res/values/styles.xml deleted file mode 100644 index 5885930..0000000 --- a/pi3-smart-remote/app/src/main/res/values/styles.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - diff --git a/pi3-smart-remote/build.gradle b/pi3-smart-remote/build.gradle deleted file mode 100644 index a47fa4b..0000000 --- a/pi3-smart-remote/build.gradle +++ /dev/null @@ -1,23 +0,0 @@ -// Top-level build file where you can add configuration options common to all sub-projects/modules. - -buildscript { - repositories { - jcenter() - } - dependencies { - classpath 'com.android.tools.build:gradle:3.0.1' - - // NOTE: Do not place your application dependencies here; they belong - // in the individual module build.gradle files - } -} - -allprojects { - repositories { - jcenter() - } -} - -task clean(type: Delete) { - delete rootProject.buildDir -} diff --git a/pi3-smart-remote/gradle.properties b/pi3-smart-remote/gradle.properties deleted file mode 100644 index aac7c9b..0000000 --- a/pi3-smart-remote/gradle.properties +++ /dev/null @@ -1,17 +0,0 @@ -# Project-wide Gradle settings. - -# IDE (e.g. Android Studio) users: -# Gradle settings configured through the IDE *will override* -# any settings specified in this file. - -# For more details on how to configure your build environment visit -# http://www.gradle.org/docs/current/userguide/build_environment.html - -# Specifies the JVM arguments used for the daemon process. -# The setting is particularly useful for tweaking memory settings. -org.gradle.jvmargs=-Xmx1536m - -# When configured, Gradle will run in incubating parallel mode. -# This option should only be used with decoupled projects. More details, visit -# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects -# org.gradle.parallel=true diff --git a/pi3-smart-remote/gradle/wrapper/gradle-wrapper.jar b/pi3-smart-remote/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index 13372aef5e24af05341d49695ee84e5f9b594659..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53636 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ⅅ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 H-+%o-(+5aQ diff --git a/pi3-smart-remote/gradle/wrapper/gradle-wrapper.properties b/pi3-smart-remote/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index 028c2ec..0000000 --- a/pi3-smart-remote/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,6 +0,0 @@ -#Sun Nov 26 10:49:10 CST 2017 -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip diff --git a/pi3-smart-remote/gradlew b/pi3-smart-remote/gradlew deleted file mode 100644 index 9d82f78..0000000 --- a/pi3-smart-remote/gradlew +++ /dev/null @@ -1,160 +0,0 @@ -#!/usr/bin/env bash - -############################################################################## -## -## Gradle start up script for UN*X -## -############################################################################## - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS="" - -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" - -warn ( ) { - echo "$*" -} - -die ( ) { - echo - echo "$*" - echo - exit 1 -} - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; -esac - -# Attempt to set APP_HOME -# Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi -done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null - -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" - else - JAVACMD="$JAVA_HOME/bin/java" - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD="java" - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." -fi - -# Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi -fi - -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi - -# For Cygwin, switch paths to Windows format before running java -if $cygwin ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi - # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" - fi - i=$((i+1)) - done - case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac -fi - -# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules -function splitJvmOpts() { - JVM_OPTS=("$@") -} -eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS -JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" - -exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/pi3-smart-remote/gradlew.bat b/pi3-smart-remote/gradlew.bat deleted file mode 100644 index 8a0b282..0000000 --- a/pi3-smart-remote/gradlew.bat +++ /dev/null @@ -1,90 +0,0 @@ -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto init - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:init -@rem Get command-line arguments, handling Windowz variants - -if not "%OS%" == "Windows_NT" goto win9xME_args -if "%@eval[2+2]" == "4" goto 4NT_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* -goto execute - -:4NT_args -@rem Get arguments from the 4NT Shell from JP Software -set CMD_LINE_ARGS=%$ - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/BUILD_NUMBER b/pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/BUILD_NUMBER deleted file mode 100644 index 57c2313..0000000 --- a/pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/BUILD_NUMBER +++ /dev/null @@ -1 +0,0 @@ -OIR1.170720.017 diff --git a/pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/FindAndroidThings.cmake b/pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/FindAndroidThings.cmake deleted file mode 100644 index 018c15d..0000000 --- a/pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/FindAndroidThings.cmake +++ /dev/null @@ -1,105 +0,0 @@ -# -# Copyright (C) 2017 The Android Open Source Project -# -# 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. -# - -# Overview -# -------- -# This CMake script is for use in Android Studio, to populate variables for -# linking to the Android Things shared library. After running, the following -# variables will be available: -# ANDROIDTHINGS_FOUND - TRUE if libandroidthings was found -# ANDROIDTHINGS_INCLUDE_DIRS - The libandroidthings include directories -# ANDROIDTHINGS_LIBRARIES - The libraries needed to use libandroidthings -# ANDROIDTHINGS_DEFINITIONS - Compiler switches for libandroidthings -# -# Usage -# ----- -# 1. Add this file's directory to CMAKE_MODULE_PATH and call find_package(). -# 2. Add ANDROIDTHINGS_INCLUDE_DIRS to your include_directories(). -# 3. Add ANDROIDTHINGS_LIBRARIES to your target_link_libraries(). -# 4. Disable unavailable ABIs (see "ABI Specification" below) -# -# Example: -# set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ) -# find_package(AndroidThings REQUIRED) -# include_directories(${ANDROIDTHINGS_INCLUDE_DIRS}) -# target_link_libraries( ${ANDROIDTHINGS_LIBRARIES}) -# -# Finding the Source -# ------------------ -# Normally the libandroidthings headers and .so are expected to live in the -# same directory as this file, but if the ANDROIDTHINGS_DIR variable is -# provided in the app's build.gradle file, that path will be searched for the -# headers and .so first. For example: -# -# android { -# defaultConfig { -# externalNativeBuild { -# cmake { -# arguments "-DANDROIDTHINGS_DIR=" -# } -# } -# } -# -# ABI Specification -# ----------------- -# libandroidthings is only available for the ABIs supported by Android Things -# devices. By default, Android Studio attempts to build for all ABIs, which may -# lead to errors like: -# -# Could NOT find AndroidThings (missing: ANDROIDTHINGS_LIBRARY -# ANDROIDTHINGS_INCLUDE_DIR) -# -# To work around this, you will need to modify your app's build.gradle to -# only build the ABIs you need: -# -# android { -# defaultConfig { -# externalNativeBuild { -# cmake { -# abiFilters "", "", ... -# } -# } -# } - - -# Find the libandroidthings header files. -find_path(ANDROIDTHINGS_INCLUDE_DIR - NAMES pio/peripheral_manager_client.h - HINTS "${ANDROIDTHINGS_DIR}" "${CMAKE_CURRENT_LIST_DIR}" - PATH_SUFFIXES "${ANDROID_ABI}/include" - NO_CMAKE_FIND_ROOT_PATH) - -# Find the libandroidthings.so library. -find_library(ANDROIDTHINGS_LIBRARY - NAMES libandroidthings.so - HINTS "${ANDROIDTHINGS_DIR}" "${CMAKE_CURRENT_LIST_DIR}" - PATH_SUFFIXES "${ANDROID_ABI}/lib" - NO_CMAKE_FIND_ROOT_PATH) - -# Register the package and set ANDROIDTHINGS_FOUND. -include(FindPackageHandleStandardArgs) -find_package_handle_standard_args(AndroidThings DEFAULT_MSG - ANDROIDTHINGS_LIBRARY - ANDROIDTHINGS_INCLUDE_DIR) - -# Hide these variables by default. -mark_as_advanced(ANDROIDTHINGS_INCLUDE_DIR ANDROIDTHINGS_LIBRARY) - -# Set the remaining variables we want to export. -set(ANDROIDTHINGS_LIBRARIES ${ANDROIDTHINGS_LIBRARY}) -set(ANDROIDTHINGS_INCLUDE_DIRS ${ANDROIDTHINGS_INCLUDE_DIR}) -set(ANDROIDTHINGS_DEFINITIONS "") - diff --git a/pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/LICENSE b/pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/LICENSE deleted file mode 100644 index 1af981f..0000000 --- a/pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/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 2014 The Android Open Source Project - - 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/pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/README.md b/pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/README.md deleted file mode 100644 index 29d34cb..0000000 --- a/pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/README.md +++ /dev/null @@ -1,47 +0,0 @@ -Android Things Native Library -============================= - -This repository contains the symbols and the headers for the Android Things -[Native PIO API](https://developer.android.com/things/sdk/pio/native.html) for the following architecture: -- `armeabi-v7a` -- `x86` - -Usage -===== - -- Unzip the latest [release](https://github.com/androidthings/native-libandroidthings/releases) in the native project directory (or in a shared location if you have many native projects). -- Add the following lines to the native project `CMakeLists.txt`: -``` -set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ) -find_package(AndroidThings REQUIRED) -include_directories(${ANDROIDTHINGS_INCLUDE_DIRS}) -target_link_libraries( ${ANDROIDTHINGS_LIBRARIES}) -``` -- Add the following arch to the native module `build.gradle`: -``` -defaultConfig { - ndk { - abiFilters 'armeabi-v7a', 'x86' - } -} -``` - -License -======= - -Copyright 2016 The Android Open Source Project, Inc. - -Licensed to the Apache Software Foundation (ASF) under one or more contributor -license agreements. See the NOTICE file distributed with this work for -additional information regarding copyright ownership. The ASF licenses this -file to you 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/pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/armeabi-v7a/include/pio/gpio.h b/pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/armeabi-v7a/include/pio/gpio.h deleted file mode 100644 index 653a4fe..0000000 --- a/pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/armeabi-v7a/include/pio/gpio.h +++ /dev/null @@ -1,107 +0,0 @@ -/* - * Copyright (C) 2016 The Android Open Source Project - * - * 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. - */ - -#ifndef SYSTEM_PERIPHERALMANAGER_GPIO_H_ -#define SYSTEM_PERIPHERALMANAGER_GPIO_H_ - -#include -#include - -__BEGIN_DECLS - -/// @defgroup Gpio Gpio Interface -/// @brief Functions to control GPIO pins. -/// -/// These functions can be used to control GPIO. -/// @{ - -/// Edge trigger types. -typedef enum AGpioEdge { - AGPIO_EDGE_NONE = 0, /**< None */ - AGPIO_EDGE_RISING = 1, /**< Rising edge */ - AGPIO_EDGE_FALLING = 2, /**< Falling edge */ - AGPIO_EDGE_BOTH = 3 /**< Both edges */ -} AGpioEdge; - -/// GPIO direction types. -typedef enum AGpioDirection { - AGPIO_DIRECTION_IN = 0, /**< Input mode */ - AGPIO_DIRECTION_OUT_INITIALLY_HIGH = 1, /**< Output mode, initially high */ - AGPIO_DIRECTION_OUT_INITIALLY_LOW = 2 /**< Output mode, initially low */ -} AGpioDirection; - -/// Possible active types. -typedef enum AGpioActiveType { - AGPIO_ACTIVE_LOW = 0, /**< Active Low */ - AGPIO_ACTIVE_HIGH = 1 /**< Active High */ -} AGpioActiveType; - -typedef struct AGpio AGpio; - -/// Sets the GPIO direction to output. -/// @param gpio Pointer to the AGpio struct -/// @param direction One of DIRECTION_IN, -/// DIRECTION_OUT_INITIALLY_HIGH, DIRECTION_OUT_INITIALLY_LOW. -/// @return 0 on success, errno on error. -int AGpio_setDirection(const AGpio* gpio, AGpioDirection direction); - -/// Sets the interrupt edge trigger type. -/// @param gpio Pointer to the AGpio struct -/// @param type One of NONE_EDGE, RISING_EDGE, FALLING_EDGE or BOTH_EDGE. -/// @return 0 on success, errno on error. -int AGpio_setEdgeTriggerType(const AGpio* gpio, AGpioEdge type); - -/// Sets the GPIO’s active low/high status. -/// @param gpio Pointer to the AGpio struct. -/// @param type One of ACTIVE_HIGH, ACTIVE_LOW. -/// @return 0 on success, errno on error. -int AGpio_setActiveType(const AGpio* gpio, AGpioActiveType type); - -/// Sets the GPIO value (for output GPIO only). -/// @param gpio Pointer to the AGpio struct. -/// @param value Value to set. -/// @return 0 on success, errno on error. -int AGpio_setValue(const AGpio* gpio, int value); - -/// Gets the GPIO value (for input GPIO only). -/// @param gpio Pointer to the AGpio struct. -/// @param value Output pointer to the value of the GPIO. -/// @return 0 on success, errno on error. -int AGpio_getValue(const AGpio* gpio, int* value); - -/// Returns a file descriptor that can be used to poll on new data. -/// Can be passed to select/epoll to wait for data to become available. -/// @param gpio Pointer to the AGpio struct. -/// @param fd Output pointer to the file descriptor number. -/// @return 0 on success, errno on error. -int AGpio_getPollingFd(const AGpio* gpio, int* fd); - -/// Acknowledges the interrupt and resets the file descriptor. -/// This must be called after each event triggers in order to be able to -/// poll/select for another event. -/// @param fd Polling file descriptor to reset. -/// @return 0 on success, errno on error. -int AGpio_ackInterruptEvent(int fd); - -/// Destroys a AGpio struct. -/// @param gpio Pointer to the AGpio struct. -void AGpio_delete(AGpio* gpio); - -/// @} - -__END_DECLS - -#endif // SYSTEM_PERIPHERALMANAGER_GPIO_H_ diff --git a/pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/armeabi-v7a/include/pio/i2c_device.h b/pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/armeabi-v7a/include/pio/i2c_device.h deleted file mode 100644 index 8a5d890..0000000 --- a/pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/armeabi-v7a/include/pio/i2c_device.h +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Copyright (C) 2016 The Android Open Source Project - * - * 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. - */ - -#ifndef SYSTEM_PERIPHERALMANAGER_I2C_DEVICE_H_ -#define SYSTEM_PERIPHERALMANAGER_I2C_DEVICE_H_ - -#include -#include - -__BEGIN_DECLS - -/// @defgroup I2c I2c device interface -/// @brief Functions to control an I2C device. -/// -/// These functions can be used to control an I2C device. -/// @{ - -typedef struct AI2cDevice AI2cDevice; - -/// Reads from the device. -/// @param device Pointer to the AI2cDevice struct. -/// @param data Output buffer to write the data to. -/// @param len Number of bytes to read. -/// @return 0 on success, errno on error -int AI2cDevice_read(const AI2cDevice* device, void* data, uint32_t len); - -/// Reads a byte from an I2C register. -/// @param device Pointer to the AI2cDevice struct. -/// @param reg Register to read from. -/// @param val Output pointer to value to read. -/// @return 0 on success, errno on error -int AI2cDevice_readRegByte(const AI2cDevice* device, uint8_t reg, uint8_t* val); - -/// Reads a word from an I2C register. -/// @param device Pointer to the AI2cDevice struct. -/// @param reg Register to read from. -/// @param val Output pointer to value to read. -/// @return 0 on success, errno on error -int AI2cDevice_readRegWord(const AI2cDevice* device, - uint8_t reg, - uint16_t* val); - -/// Reads from an I2C register. -/// @param device Pointer to the AI2cDevice struct. -/// @param reg Register to read from. -/// @param data Output buffer to write the data to. -/// @param len Number of bytes to read. -/// @return 0 on success, errno on error -int AI2cDevice_readRegBuffer(const AI2cDevice* device, - uint8_t reg, - void* data, - uint32_t len); - -/// Writes to the device. -/// @param device Pointer to the AI2cDevice struct. -/// @param data Buffer to write. -/// @param len Number of bytes to write. -/// @return 0 on success, errno on error -int AI2cDevice_write(const AI2cDevice* device, const void* data, uint32_t len); - -/// Writes a byte to an I2C register. -/// @param device Pointer to the AI2cDevice struct. -/// @param reg Register to write to. -/// @param val Value to write. -/// @return 0 on success, errno on error -int AI2cDevice_writeRegByte(const AI2cDevice* device, uint8_t reg, uint8_t val); - -/// Writes a word to an I2C register. -/// @param device Pointer to the AI2cDevice struct. -/// @param reg Register to write to. -/// @param val Value to write. -/// @return 0 on success, errno on error -int AI2cDevice_writeRegWord(const AI2cDevice* device, - uint8_t reg, - uint16_t val); - -/// Writes to an I2C register. -/// @param device Pointer to the AI2cDevice struct. -/// @param reg Register to write to. -/// @param data Data to write. -/// @param len Number of bytes to write. -/// @return 0 on success, errno on error -int AI2cDevice_writeRegBuffer(const AI2cDevice* device, - uint8_t reg, - const void* data, - uint32_t len); - -/// Destroys a AI2cDevice struct. -/// @param device Pointer to the AI2cDevice struct. -void AI2cDevice_delete(AI2cDevice* device); - -/// @} - -__END_DECLS - -#endif // SYSTEM_PERIPHERALMANAGER_I2C_DEVICE_H_ diff --git a/pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/armeabi-v7a/include/pio/i2s_device.h b/pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/armeabi-v7a/include/pio/i2s_device.h deleted file mode 100644 index 40f27ca..0000000 --- a/pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/armeabi-v7a/include/pio/i2s_device.h +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Copyright (C) 2017 The Android Open Source Project - * - * 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. - */ - -#ifndef SYSTEM_PERIPHERALMANAGER_I2S_H_ -#define SYSTEM_PERIPHERALMANAGER_I2S_H_ - -#include -#include - -__BEGIN_DECLS - -/// @defgroup I2s I2s Interface -/// @brief Functions to control I2S pins. -/// -/// These functions can be used to control I2S. -/// @{ - -/// Possible encodings -typedef enum AI2sEncoding { - AI2S_ENCODING_PCM_8_BIT, - AI2S_ENCODING_PCM_16_BIT, - AI2S_ENCODING_PCM_24_BIT, - AI2S_ENCODING_PCM_32_BIT -} AI2sEncoding; - -/// Flags to specify I2s bus direction. -typedef enum AI2sFlags { - AI2S_FLAG_DIRECTION_IN = 1 << 0, - AI2S_FLAG_DIRECTION_OUT = 1 << 1 -} AI2sFlags; - -typedef struct AI2sDevice AI2sDevice; - -/// Writes raw data to the I2S device. Multi-channel audio data is interleaved. -/// @param i2s Pointer to the AI2s struct. -/// @param data Data to write. -/// @param offset Offset to first byte in data. -/// @param size Number of bytes to write. -/// @param bytes_written Number of bytes written. -/// @return 0 on success, errno on error. -int AI2sDevice_write(const AI2sDevice* i2s, - const void* data, - int offset, - int size, - int* bytes_written); - -/// Reads raw data from the I2S device. Multi-channel audio data is interleaved. -/// @param i2s Pointer to the AI2s struct. -/// @param data Buffer to fill with data read. -/// @param offset Offset to first byte in data. -/// @param size Number of bytes to read. -/// @param bytes_read Number of bytes read. -/// @return 0 on success, errno on error. -int AI2sDevice_read( - const AI2sDevice* i2s, void* data, int offset, int size, int* bytes_read); - -/// Gets the timestamp when a specific sample entered the kernel. -/// @param i2s Pointer to the AI2s struct. -/// @param frame_position Output indicating number of frames read. -/// @param nano_time Output indicating time (ns) when the frame was read. -/// @param success Output indicating success (1) or failure (0). -/// @return 0 on success, errno on error. This will only be nonzero on a fatal -/// error such as the I2S device couldn't be found; in the normal case -/// that a timestamp isn't available the success param will be used. -int AI2sDevice_getInputTimestamp(const AI2sDevice* i2s, - int64_t* frame_position, - int64_t* nano_time, - int* success); - -/// Gets the timestamp when a specific sample exited the kernel. -/// @param i2s Pointer to the AI2s struct. -/// @param frame_position Output indicating number of frames written. -/// @param nano_time Output indicating time (ns) when the frame was written. -/// @param success Output indicating success (1) or failure (0). -/// @return 0 on success, errno on error. This will only be nonzero on a fatal -/// error such as the I2S device couldn't be found; in the normal case -/// that a timestamp isn't available the success param will be used. -int AI2sDevice_getOutputTimestamp(const AI2sDevice* i2s, - int64_t* frame_position, - int64_t* nano_time, - int* success); - -/// Destroys an AI2s struct. -/// @param i2s Pointer to the AI2s struct. -void AI2sDevice_delete(AI2sDevice* i2s); - -/// @} - -__END_DECLS - -#endif // SYSTEM_PERIPHERALMANAGER_I2S_H_ diff --git a/pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/armeabi-v7a/include/pio/peripheral_manager_client.h b/pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/armeabi-v7a/include/pio/peripheral_manager_client.h deleted file mode 100644 index 97202b0..0000000 --- a/pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/armeabi-v7a/include/pio/peripheral_manager_client.h +++ /dev/null @@ -1,169 +0,0 @@ -/* - * Copyright (C) 2015 The Android Open Source Project - * - * 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. - */ - -#ifndef SYSTEM_PERIPHERALMANAGER_PERIPHERAL_MANAGER_CLIENT_H_ -#define SYSTEM_PERIPHERALMANAGER_PERIPHERAL_MANAGER_CLIENT_H_ - -#include - -#include "gpio.h" -#include "i2c_device.h" -#include "i2s_device.h" -#include "pwm.h" -#include "spi_device.h" -#include "uart_device.h" - -__BEGIN_DECLS - -/// @defgroup PeripheralManagerClient Peripheral client functions -/// @brief Functions to access embedded peripherals -/// @{ - -typedef struct APeripheralManagerClient APeripheralManagerClient; - -/// Returns the list of GPIOs. -/// This does not take ownership into account. -/// The list must be freed by the caller. -/// @param client Pointer to the APeripheralManagerClient struct. -/// @param num_gpio Output pointer to the number of elements in the list. -/// @return The list of gpios. -char** APeripheralManagerClient_listGpio(const APeripheralManagerClient* client, - int* num_gpio); - -/// Opens a GPIO and takes ownership of it. -/// @param client Pointer to the APeripheralManagerClient struct. -/// @param name Name of the GPIO. -/// @param gpio Output pointer to the AGpio struct. Empty on error. -/// @return 0 on success, errno on error. -int APeripheralManagerClient_openGpio(const APeripheralManagerClient* client, - const char* name, - AGpio** gpio); - -/// Returns the list of PWMs. -/// This does not take ownership into account. -/// The list must be freed by the caller. -/// @param client Pointer to the APeripheralManagerClient struct. -/// @param num_gpio Output pointer to the number of elements in the list. -/// @return The list of pwms. -char** APeripheralManagerClient_listPwm(const APeripheralManagerClient* client, - int* num_pwm); - -/// Opens a PWM and takes ownership of it. -/// @param client Pointer to the APeripheralManagerClient struct. -/// @param name Name of the PWM. -/// @param gpio Output pointer to the AGpio struct. Empty on error. -/// @return 0 on success, errno on error. -int APeripheralManagerClient_openPwm(const APeripheralManagerClient* client, - const char* name, - APwm** pwm); - -/// Returns the list of SPI buses. -/// This does not take ownership into account. -/// The list must be freed by the caller. -/// @param client Pointer to the APeripheralManagerClient struct. -/// @param num_spi_buses Output pointer to the number of elements in the list. -/// @return The list of spi buses. -char** APeripheralManagerClient_listSpiBuses( - const APeripheralManagerClient* client, int* num_spi_buses); - -/// Opens a SPI device and takes ownership of it. -/// @oaram client Pointer to the APeripheralManagerClient struct. -/// @param name Name of the SPI device. -/// @param dev Output pointer to the ASpiDevice struct. Empty on error. -/// @return 0 on success, errno on error. -int APeripheralManagerClient_openSpiDevice( - const APeripheralManagerClient* client, const char* name, ASpiDevice** dev); - -/// Returns the list of I2C buses. -/// This does not take ownership into account. -/// The list must be freed by the caller. -/// @param client Pointer to the APeripheralManagerClient struct. -/// @param num_i2c_buses Output pointer to the number of elements in the list. -/// @return The list of i2c buses. -char** APeripheralManagerClient_listI2cBuses( - const APeripheralManagerClient* client, int* num_i2c_buses); - -/// Opens an I2C device and takes ownership of it. -/// @param client Pointer to the APeripheralManagerClient struct. -/// @param name Name of the I2C bus. -/// @param address Address of the I2C device. -/// @param dev Output pointer to the AI2cDevice struct. Empty on error. -/// @return 0 on success, errno on error -int APeripheralManagerClient_openI2cDevice( - const APeripheralManagerClient* client, - const char* name, - uint32_t address, - AI2cDevice** dev); - -/// Returns the list of UART buses. -/// This does not take ownership into account. -/// The list must be freed by the caller. -/// @param client Pointer to the APeripheralManagerClient struct. -/// @param num_uart_buses Output pointer to the number of elements in the list. -/// @return The list of uart buses. -char** APeripheralManagerClient_listUartDevices( - const APeripheralManagerClient* client, int* num_uart_buses); - -/// Opens an UART device and takes ownership of it. -/// @param client Pointer to the APeripheralManagerClient struct. -/// @param name Name of the UART device. -/// @param dev Output pointer to the AUartDevice struct. Empty on error. -/// @return 0 on success, errno on error -int APeripheralManagerClient_openUartDevice( - const APeripheralManagerClient* client, - const char* name, - AUartDevice** dev); - -/// Returns the list of I2S buses. -/// This does not take ownership into account. -/// The list must be freed by the caller. -/// @param client Pointer to the APeripheralManagerClient struct. -/// @param num_i2s_buses Output pointer to the number of elements in the list. -/// @return The list of I2S buses. -char** APeripheralManagerClient_listI2sDevices( - const APeripheralManagerClient* client, int* num_i2s_buses); - -/// Opens an I2S device and takes ownership of it. -/// @param client Pointer to the APeripheralManagerClient struct. -/// @param name Name of the I2S device. -/// @param encoding Device pcm encoding. -/// @param channels Number of channels. -/// @param rate Device rate in Hz. -/// @param flags Specify device supporting input, output or both. -/// @param dev Output pointer to the AI2sDevice struct. Empty on error. -/// @return 0 on success, errno on error -int APeripheralManagerClient_openI2sDevice( - const APeripheralManagerClient* client, - const char* name, - AI2sEncoding encoding, - int channels, - int rate, - int flags, - AI2sDevice** dev); - -/// Creates a new client. -/// @return A pointer to the created client. nullptr on errors. -APeripheralManagerClient* APeripheralManagerClient_new(); - -/// Destroys the peripheral manager client. -/// @param client Pointer to the APeripheralManagerClient struct. -void APeripheralManagerClient_delete(APeripheralManagerClient* client); - -/// @} - -__END_DECLS - -#endif // SYSTEM_PERIPHERALMANAGER_PERIPHERAL_MANAGER_CLIENT_H_ diff --git a/pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/armeabi-v7a/include/pio/pwm.h b/pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/armeabi-v7a/include/pio/pwm.h deleted file mode 100644 index 5dd3a51..0000000 --- a/pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/armeabi-v7a/include/pio/pwm.h +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright (C) 2016 The Android Open Source Project - * - * 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. - */ - -#ifndef SYSTEM_PERIPHERALMANAGER_PWM_H_ -#define SYSTEM_PERIPHERALMANAGER_PWM_H_ - -#include -#include - -__BEGIN_DECLS - -/// @defgroup Pwm Pwm Interface -/// @brief Functions to control PWM pins. -/// -/// These functions can be used to control PWM. -/// @{ - -typedef struct APwm APwm; - -/// Sets the PWM duty cycle. -/// @param gpio Pointer to the APwm struct. -/// @param duty_cycle Double between 0 and 100 inclusive. -/// @return 0 on success, errno on error. -int APwm_setDutyCycle(const APwm* pwm, double duty_cycle); - -/// Sets the PWM frequency. -/// @param gpio Pointer to the APwm struct. -/// @param freq Double denoting the frequency in Hz. -/// @return 0 on success, errno on error. -int APwm_setFrequencyHz(const APwm* pwm, double frequency); - -/// Enables the PWM. -/// @param gpio Pointer to the APwm struct. -/// @param enabled Non-zero to enable. -/// @return 0 on success, errno on error. -int APwm_setEnabled(const APwm* pwm, int enabled); - -/// Destroys a APwm struct. -/// @param pwm Pointer to the APwm struct. -void APwm_delete(APwm* pwm); - -/// @} - -__END_DECLS - -#endif // SYSTEM_PERIPHERALMANAGER_PWM_H_ diff --git a/pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/armeabi-v7a/include/pio/spi_device.h b/pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/armeabi-v7a/include/pio/spi_device.h deleted file mode 100644 index 51595d7..0000000 --- a/pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/armeabi-v7a/include/pio/spi_device.h +++ /dev/null @@ -1,119 +0,0 @@ -/* - * Copyright (C) 2016 The Android Open Source Project - * - * 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. - */ - -#ifndef SYSTEM_PERIPHERALMANAGER_SPI_DEVICE_H_ -#define SYSTEM_PERIPHERALMANAGER_SPI_DEVICE_H_ - -#include -#include - -__BEGIN_DECLS - -/// @defgroup Spi Spi device interface -/// @brief Functions to control an SPI device. -/// -/// These functions can be used to control an SPI device. -/// @{ - -/// Endianness. -typedef enum ASpiBitJustification { - ASPI_LSB_FIRST = 0, /**< Least significant bits first */ - ASPI_MSB_FIRST = 1 /**< Most significant bits first */ -} ASpiBitJustification; - -/// SPI modes (similar to the Linux kernel's modes). -typedef enum ASpiMode { - ASPI_MODE0 = 0, /**< CPHA=0, CPOL=0 */ - ASPI_MODE1 = 1, /**< CPHA=1, CPOL=0 */ - ASPI_MODE2 = 2, /**< CPHA=0, CPOL=1 */ - ASPI_MODE3 = 3 /**< CPHA=1, CPOL=1 */ -} ASpiMode; - -typedef struct ASpiDevice ASpiDevice; - -/// Writes a buffer to the device. -/// @param device Pointer to the ASpiDevice struct. -/// @param data Buffer to write. -/// @param len Length of the buffer. -/// @return 0 on success, errno on error. -int ASpiDevice_writeBuffer(const ASpiDevice* device, - const void* data, - size_t len); - -/// Reads a buffer from the device. -/// @param device Pointer to the ASpiDevice struct. -/// @param data Buffer to read into. -/// @param len Length of the buffer. -/// @return 0 on success, errno on error. -int ASpiDevice_readBuffer(const ASpiDevice* device, void* data, size_t len); - -/// Transfer data to the device. -/// @param device Pointer to the ASpiDevice struct. -/// @param tx_data Buffer to write. -/// @param rx_data Buffer to read data in. If NULL, no data will be read. -/// @param len Length of the buffers. -/// @return 0 on success, errno on error. -int ASpiDevice_transfer(const ASpiDevice* device, - const void* tx_data, - void* rx_data, - size_t len); - -/// Sets the frequency in Hertz. -/// @param device Pointer to the ASpiDevice struct. -/// @param freq_hz Frequency to set. -/// @return 0 on success, errno on error. -int ASpiDevice_setFrequency(const ASpiDevice* device, uint32_t freq_hz); - -/// Sets the SPI mode. -/// @param device Pointer to the ASpiDevice struct. -/// @param mode Mode to use. One of SPI_MODE0, SPI_MODE1, SPI_MODE2, SPI_MODE3. -/// @return 0 on success, errno on error. -int ASpiDevice_setMode(const ASpiDevice* device, ASpiMode mode); - -/// Sets the bit justification. -/// @param device Pointer to the ASpiDevice struct. -/// @param bit_justification One of SPI_LSB_FIRST OR SPI_MSB_FIRST. -/// @return 0 on success, errno on error. -int ASpiDevice_setBitJustification(const ASpiDevice* device, - ASpiBitJustification bit_justification); - -/// Sets the number of bits per words. -/// @param device Pointer to the ASpiDevice struct. -/// @param bits_per_word Number of bits per word. -/// @return 0 on success, errno on error. -int ASpiDevice_setBitsPerWord(const ASpiDevice* device, uint8_t bits_per_word); - -/// Sets the delay to wait after each transfer. -/// @param device Pointer to the ASpiDevice struct. -/// @param delay_usecs Delay in microseconds. -/// @return 0 on success, errno on error. -int ASpiDevice_setDelay(const ASpiDevice* device, uint16_t delay_usecs); - -/// Sets the chip select behavior after each transfer. -/// @param device Pointer to the ASpiDevice struct. -/// @param change If set, cs will be active between transfers. -/// @return 0 on success, errno on error. -int ASpiDevice_setCsChange(const ASpiDevice* device, int change); - -/// Destroys a ASpiDevice struct. -/// @param device Pointer to the ASpiDevice struct. -void ASpiDevice_delete(ASpiDevice* device); - -/// @} - -__END_DECLS - -#endif // SYSTEM_PERIPHERALMANAGER_SPI_DEVICE_H_ diff --git a/pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/armeabi-v7a/include/pio/uart_device.h b/pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/armeabi-v7a/include/pio/uart_device.h deleted file mode 100644 index 03ab6d7..0000000 --- a/pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/armeabi-v7a/include/pio/uart_device.h +++ /dev/null @@ -1,178 +0,0 @@ -/* - * Copyright (C) 2016 The Android Open Source Project - * - * 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. - */ - -#ifndef SYSTEM_PERIPHERALMANAGER_UART_DEVICE_H_ -#define SYSTEM_PERIPHERALMANAGER_UART_DEVICE_H_ - -#include -#include - -__BEGIN_DECLS - -/// @defgroup Uart Uart device interface -/// @brief Functions to control an UART device. -/// -/// These functions can be used to control an UART device. -/// @{ - -/// UART Parity -typedef enum AUartParity { - AUART_PARITY_NONE = 0, /**< No parity */ - AUART_PARITY_EVEN = 1, /**< Even parity */ - AUART_PARITY_ODD = 2, /**< Odd parity */ - AUART_PARITY_MARK = 3, /**< Mark parity, always 1 */ - AUART_PARITY_SPACE = 4 /**< Space parity, always 0 */ -} AUartParity; - -/// Modem control lines. -typedef enum AUartModemControlLine { - AUART_MODEM_CONTROL_LE = 1 << 0, /**< Data set ready/Line enable */ - AUART_MODEM_CONTROL_DTR = 1 << 1, /**< Data terminal ready */ - AUART_MODEM_CONTROL_RTS = 1 << 2, /**< Request to send */ - AUART_MODEM_CONTROL_ST = 1 << 3, /**< Secondary TXD */ - AUART_MODEM_CONTROL_SR = 1 << 4, /**< Secondary RXD */ - AUART_MODEM_CONTROL_CTS = 1 << 5, /**< Clear to send */ - AUART_MODEM_CONTROL_CD = 1 << 6, /**< Data carrier detect */ - AUART_MODEM_CONTROL_RI = 1 << 7, /**< Ring */ - AUART_MODEM_CONTROL_DSR = 1 << 8 /**< Data set ready */ -} AUartModemControlLine; - -// Hardware Flow Control -typedef enum AUartHardwareFlowControl { - AUART_HARDWARE_FLOW_CONTROL_NONE = 0, /**< No hardware flow control */ - AUART_HARDWARE_FLOW_CONTROL_AUTO_RTSCTS = 1 /**< Auto RTS/CTS */ -} AUartHardwareFlowControl; - -/// Flush queue selection -typedef enum AUartFlushDirection { - AUART_FLUSH_IN = 0, /**< Flushes data received but not read */ - AUART_FLUSH_OUT = 1, /**< Flushes data written but not transmitted */ - AUART_FLUSH_IN_OUT = 2 /**< Flushes both in and out */ -} AUartFlushDirection; - -typedef struct AUartDevice AUartDevice; - -/// Writes to a UART device. -/// @param device Pointer to the AUartDevice struct. -/// @param data Data to write. -/// @param len Size of the data to write. -/// @param bytes_written Output pointer to the number of bytes written. -/// @return 0 on success, errno on error. -int AUartDevice_write(const AUartDevice* device, - const void* data, - uint32_t len, - uint32_t* bytes_written); - -/// Reads from a UART device. -/// @param device Pointer to the AUartDevice struct. -/// @param data Buffer to read the data into. -/// @param len Number of bytes to read. -/// @param bytes_read Output pointer to the number of bytes read. -/// @return 0 on success, errno on error. -int AUartDevice_read(const AUartDevice* device, - void* data, - uint32_t len, - uint32_t* bytes_read); - -/// Sets the input and output speed of a UART device. -/// @param device Pointer to the AUartDevice struct. -/// @param baudrate Speed in baud. -/// @return 0 on success, errno on error. -int AUartDevice_setBaudrate(const AUartDevice* device, uint32_t baudrate); - -/// Sets number of stop bits for the UART device. -/// @param device Pointer to the AUartDevice struct. -/// @param stop_bits Number of stop bits. Typically 1 or 2. -/// @return 0 on success, errno on error. -int AUartDevice_setStopBits(const AUartDevice* device, uint32_t stop_bits); - -/// Sets the data size of a character for the UART device. -/// @param device Pointer to the AUartDevice struct. -/// @param data_size Number of bits per character. Typically between 5 and 8. -/// @return 0 on success, errno on error. -int AUartDevice_setDataSize(const AUartDevice* device, uint32_t data_size); - -/// Sets the parity mode for the UART device. -/// @param device Pointer to the AUartDevice struct. -/// @param mode Parity mode. -/// @return 0 on success, errno on error. -int AUartDevice_setParity(const AUartDevice* device, AUartParity mode); - -/// Sets the hardware flow control mode for the UART device. -/// @param device Pointer to the AUartDevice struct. -/// @param mode Flow control mode. -/// @return 0 on success, errno on error. -int AUartDevice_setHardwareFlowControl(const AUartDevice* device, - AUartHardwareFlowControl mode); - -/// Sets the modem control bits for the UART device. -/// @param device Pointer to the AUartDevice struct. -/// @param lines Lines to set. AUartModemControlLine values OR'ed together. -/// @return 0 on success, errno on error. -int AUartDevice_setModemControl(const AUartDevice* device, uint32_t lines); - -/// Clears the modem control bits for the UART device. -/// @param device Pointer to the AUartDevice struct. -/// @param lines Lines to clear. AUartModemControlLine values OR'ed together. -/// @return 0 on success, errno on error. -int AUartDevice_clearModemControl(const AUartDevice* device, uint32_t lines); - -/// Sends a break to the UART device. -/// @param device Pointer to the AUartDevice struct. -/// @param duration Duration of break transmission in milliseconds. If 0, -/// transmits zero-valued bits for at least 0.25 seconds, and not more -/// than 0.5 seconds. -/// @return 0 on success, errno on error. -int AUartDevice_sendBreak(const AUartDevice* device, uint32_t duration_msecs); - -/// Flushes specified queue for the UART device. -/// @param device Pointer to the AUartDevice struct. -/// @param direction Direction to flush. -/// @return 0 on success, errno on error. -int AUartDevice_flush(const AUartDevice* device, AUartFlushDirection direction); - -/// Gets a file descriptor to be notified when data can be read. -/// -/// You can use this file descriptor to poll on incoming data instead of -/// actively reading for new data. -/// -/// @param device Pointer to the AUartDevice struct. -/// @param fd Output pointer to the file descriptor. -/// @return 0 on success, errno on error. -int AUartDevice_getPollingFd(const AUartDevice* device, int* fd); - -/// Acknowledges an input event. -/// -/// This must be called after receiving an event notification on the polling -/// file descriptor. -/// If you don't acknowledge an event, peripheral manager will assume you are -/// still processing it and you will not receive any more events. -/// If you acknowledge an event before reading the data from the device, you -/// will receive an event immediately as there will still be data available. -/// -/// @param fd File descriptor to acknowledge the event on. -/// @return 0 on success, errno on error. -int AUartDevice_ackInputEvent(int fd); - -/// Destroys a AUartDevice struct. -/// @param device Pointer to the AUartDevice struct. -void AUartDevice_delete(AUartDevice* device); - -/// @} - -__END_DECLS - -#endif // SYSTEM_PERIPHERALMANAGER_UART_DEVICE_H_ diff --git a/pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/armeabi-v7a/lib/libandroidthings.so b/pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/armeabi-v7a/lib/libandroidthings.so deleted file mode 100644 index fd485cb4c63a9e13d364d0f8e0f8ac6a604ffdf4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 137764 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 Cr*nn? diff --git a/pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/x86/include/pio/gpio.h b/pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/x86/include/pio/gpio.h deleted file mode 100644 index 653a4fe..0000000 --- a/pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/x86/include/pio/gpio.h +++ /dev/null @@ -1,107 +0,0 @@ -/* - * Copyright (C) 2016 The Android Open Source Project - * - * 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. - */ - -#ifndef SYSTEM_PERIPHERALMANAGER_GPIO_H_ -#define SYSTEM_PERIPHERALMANAGER_GPIO_H_ - -#include -#include - -__BEGIN_DECLS - -/// @defgroup Gpio Gpio Interface -/// @brief Functions to control GPIO pins. -/// -/// These functions can be used to control GPIO. -/// @{ - -/// Edge trigger types. -typedef enum AGpioEdge { - AGPIO_EDGE_NONE = 0, /**< None */ - AGPIO_EDGE_RISING = 1, /**< Rising edge */ - AGPIO_EDGE_FALLING = 2, /**< Falling edge */ - AGPIO_EDGE_BOTH = 3 /**< Both edges */ -} AGpioEdge; - -/// GPIO direction types. -typedef enum AGpioDirection { - AGPIO_DIRECTION_IN = 0, /**< Input mode */ - AGPIO_DIRECTION_OUT_INITIALLY_HIGH = 1, /**< Output mode, initially high */ - AGPIO_DIRECTION_OUT_INITIALLY_LOW = 2 /**< Output mode, initially low */ -} AGpioDirection; - -/// Possible active types. -typedef enum AGpioActiveType { - AGPIO_ACTIVE_LOW = 0, /**< Active Low */ - AGPIO_ACTIVE_HIGH = 1 /**< Active High */ -} AGpioActiveType; - -typedef struct AGpio AGpio; - -/// Sets the GPIO direction to output. -/// @param gpio Pointer to the AGpio struct -/// @param direction One of DIRECTION_IN, -/// DIRECTION_OUT_INITIALLY_HIGH, DIRECTION_OUT_INITIALLY_LOW. -/// @return 0 on success, errno on error. -int AGpio_setDirection(const AGpio* gpio, AGpioDirection direction); - -/// Sets the interrupt edge trigger type. -/// @param gpio Pointer to the AGpio struct -/// @param type One of NONE_EDGE, RISING_EDGE, FALLING_EDGE or BOTH_EDGE. -/// @return 0 on success, errno on error. -int AGpio_setEdgeTriggerType(const AGpio* gpio, AGpioEdge type); - -/// Sets the GPIO’s active low/high status. -/// @param gpio Pointer to the AGpio struct. -/// @param type One of ACTIVE_HIGH, ACTIVE_LOW. -/// @return 0 on success, errno on error. -int AGpio_setActiveType(const AGpio* gpio, AGpioActiveType type); - -/// Sets the GPIO value (for output GPIO only). -/// @param gpio Pointer to the AGpio struct. -/// @param value Value to set. -/// @return 0 on success, errno on error. -int AGpio_setValue(const AGpio* gpio, int value); - -/// Gets the GPIO value (for input GPIO only). -/// @param gpio Pointer to the AGpio struct. -/// @param value Output pointer to the value of the GPIO. -/// @return 0 on success, errno on error. -int AGpio_getValue(const AGpio* gpio, int* value); - -/// Returns a file descriptor that can be used to poll on new data. -/// Can be passed to select/epoll to wait for data to become available. -/// @param gpio Pointer to the AGpio struct. -/// @param fd Output pointer to the file descriptor number. -/// @return 0 on success, errno on error. -int AGpio_getPollingFd(const AGpio* gpio, int* fd); - -/// Acknowledges the interrupt and resets the file descriptor. -/// This must be called after each event triggers in order to be able to -/// poll/select for another event. -/// @param fd Polling file descriptor to reset. -/// @return 0 on success, errno on error. -int AGpio_ackInterruptEvent(int fd); - -/// Destroys a AGpio struct. -/// @param gpio Pointer to the AGpio struct. -void AGpio_delete(AGpio* gpio); - -/// @} - -__END_DECLS - -#endif // SYSTEM_PERIPHERALMANAGER_GPIO_H_ diff --git a/pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/x86/include/pio/i2c_device.h b/pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/x86/include/pio/i2c_device.h deleted file mode 100644 index 8a5d890..0000000 --- a/pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/x86/include/pio/i2c_device.h +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Copyright (C) 2016 The Android Open Source Project - * - * 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. - */ - -#ifndef SYSTEM_PERIPHERALMANAGER_I2C_DEVICE_H_ -#define SYSTEM_PERIPHERALMANAGER_I2C_DEVICE_H_ - -#include -#include - -__BEGIN_DECLS - -/// @defgroup I2c I2c device interface -/// @brief Functions to control an I2C device. -/// -/// These functions can be used to control an I2C device. -/// @{ - -typedef struct AI2cDevice AI2cDevice; - -/// Reads from the device. -/// @param device Pointer to the AI2cDevice struct. -/// @param data Output buffer to write the data to. -/// @param len Number of bytes to read. -/// @return 0 on success, errno on error -int AI2cDevice_read(const AI2cDevice* device, void* data, uint32_t len); - -/// Reads a byte from an I2C register. -/// @param device Pointer to the AI2cDevice struct. -/// @param reg Register to read from. -/// @param val Output pointer to value to read. -/// @return 0 on success, errno on error -int AI2cDevice_readRegByte(const AI2cDevice* device, uint8_t reg, uint8_t* val); - -/// Reads a word from an I2C register. -/// @param device Pointer to the AI2cDevice struct. -/// @param reg Register to read from. -/// @param val Output pointer to value to read. -/// @return 0 on success, errno on error -int AI2cDevice_readRegWord(const AI2cDevice* device, - uint8_t reg, - uint16_t* val); - -/// Reads from an I2C register. -/// @param device Pointer to the AI2cDevice struct. -/// @param reg Register to read from. -/// @param data Output buffer to write the data to. -/// @param len Number of bytes to read. -/// @return 0 on success, errno on error -int AI2cDevice_readRegBuffer(const AI2cDevice* device, - uint8_t reg, - void* data, - uint32_t len); - -/// Writes to the device. -/// @param device Pointer to the AI2cDevice struct. -/// @param data Buffer to write. -/// @param len Number of bytes to write. -/// @return 0 on success, errno on error -int AI2cDevice_write(const AI2cDevice* device, const void* data, uint32_t len); - -/// Writes a byte to an I2C register. -/// @param device Pointer to the AI2cDevice struct. -/// @param reg Register to write to. -/// @param val Value to write. -/// @return 0 on success, errno on error -int AI2cDevice_writeRegByte(const AI2cDevice* device, uint8_t reg, uint8_t val); - -/// Writes a word to an I2C register. -/// @param device Pointer to the AI2cDevice struct. -/// @param reg Register to write to. -/// @param val Value to write. -/// @return 0 on success, errno on error -int AI2cDevice_writeRegWord(const AI2cDevice* device, - uint8_t reg, - uint16_t val); - -/// Writes to an I2C register. -/// @param device Pointer to the AI2cDevice struct. -/// @param reg Register to write to. -/// @param data Data to write. -/// @param len Number of bytes to write. -/// @return 0 on success, errno on error -int AI2cDevice_writeRegBuffer(const AI2cDevice* device, - uint8_t reg, - const void* data, - uint32_t len); - -/// Destroys a AI2cDevice struct. -/// @param device Pointer to the AI2cDevice struct. -void AI2cDevice_delete(AI2cDevice* device); - -/// @} - -__END_DECLS - -#endif // SYSTEM_PERIPHERALMANAGER_I2C_DEVICE_H_ diff --git a/pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/x86/include/pio/i2s_device.h b/pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/x86/include/pio/i2s_device.h deleted file mode 100644 index 40f27ca..0000000 --- a/pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/x86/include/pio/i2s_device.h +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Copyright (C) 2017 The Android Open Source Project - * - * 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. - */ - -#ifndef SYSTEM_PERIPHERALMANAGER_I2S_H_ -#define SYSTEM_PERIPHERALMANAGER_I2S_H_ - -#include -#include - -__BEGIN_DECLS - -/// @defgroup I2s I2s Interface -/// @brief Functions to control I2S pins. -/// -/// These functions can be used to control I2S. -/// @{ - -/// Possible encodings -typedef enum AI2sEncoding { - AI2S_ENCODING_PCM_8_BIT, - AI2S_ENCODING_PCM_16_BIT, - AI2S_ENCODING_PCM_24_BIT, - AI2S_ENCODING_PCM_32_BIT -} AI2sEncoding; - -/// Flags to specify I2s bus direction. -typedef enum AI2sFlags { - AI2S_FLAG_DIRECTION_IN = 1 << 0, - AI2S_FLAG_DIRECTION_OUT = 1 << 1 -} AI2sFlags; - -typedef struct AI2sDevice AI2sDevice; - -/// Writes raw data to the I2S device. Multi-channel audio data is interleaved. -/// @param i2s Pointer to the AI2s struct. -/// @param data Data to write. -/// @param offset Offset to first byte in data. -/// @param size Number of bytes to write. -/// @param bytes_written Number of bytes written. -/// @return 0 on success, errno on error. -int AI2sDevice_write(const AI2sDevice* i2s, - const void* data, - int offset, - int size, - int* bytes_written); - -/// Reads raw data from the I2S device. Multi-channel audio data is interleaved. -/// @param i2s Pointer to the AI2s struct. -/// @param data Buffer to fill with data read. -/// @param offset Offset to first byte in data. -/// @param size Number of bytes to read. -/// @param bytes_read Number of bytes read. -/// @return 0 on success, errno on error. -int AI2sDevice_read( - const AI2sDevice* i2s, void* data, int offset, int size, int* bytes_read); - -/// Gets the timestamp when a specific sample entered the kernel. -/// @param i2s Pointer to the AI2s struct. -/// @param frame_position Output indicating number of frames read. -/// @param nano_time Output indicating time (ns) when the frame was read. -/// @param success Output indicating success (1) or failure (0). -/// @return 0 on success, errno on error. This will only be nonzero on a fatal -/// error such as the I2S device couldn't be found; in the normal case -/// that a timestamp isn't available the success param will be used. -int AI2sDevice_getInputTimestamp(const AI2sDevice* i2s, - int64_t* frame_position, - int64_t* nano_time, - int* success); - -/// Gets the timestamp when a specific sample exited the kernel. -/// @param i2s Pointer to the AI2s struct. -/// @param frame_position Output indicating number of frames written. -/// @param nano_time Output indicating time (ns) when the frame was written. -/// @param success Output indicating success (1) or failure (0). -/// @return 0 on success, errno on error. This will only be nonzero on a fatal -/// error such as the I2S device couldn't be found; in the normal case -/// that a timestamp isn't available the success param will be used. -int AI2sDevice_getOutputTimestamp(const AI2sDevice* i2s, - int64_t* frame_position, - int64_t* nano_time, - int* success); - -/// Destroys an AI2s struct. -/// @param i2s Pointer to the AI2s struct. -void AI2sDevice_delete(AI2sDevice* i2s); - -/// @} - -__END_DECLS - -#endif // SYSTEM_PERIPHERALMANAGER_I2S_H_ diff --git a/pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/x86/include/pio/peripheral_manager_client.h b/pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/x86/include/pio/peripheral_manager_client.h deleted file mode 100644 index 97202b0..0000000 --- a/pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/x86/include/pio/peripheral_manager_client.h +++ /dev/null @@ -1,169 +0,0 @@ -/* - * Copyright (C) 2015 The Android Open Source Project - * - * 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. - */ - -#ifndef SYSTEM_PERIPHERALMANAGER_PERIPHERAL_MANAGER_CLIENT_H_ -#define SYSTEM_PERIPHERALMANAGER_PERIPHERAL_MANAGER_CLIENT_H_ - -#include - -#include "gpio.h" -#include "i2c_device.h" -#include "i2s_device.h" -#include "pwm.h" -#include "spi_device.h" -#include "uart_device.h" - -__BEGIN_DECLS - -/// @defgroup PeripheralManagerClient Peripheral client functions -/// @brief Functions to access embedded peripherals -/// @{ - -typedef struct APeripheralManagerClient APeripheralManagerClient; - -/// Returns the list of GPIOs. -/// This does not take ownership into account. -/// The list must be freed by the caller. -/// @param client Pointer to the APeripheralManagerClient struct. -/// @param num_gpio Output pointer to the number of elements in the list. -/// @return The list of gpios. -char** APeripheralManagerClient_listGpio(const APeripheralManagerClient* client, - int* num_gpio); - -/// Opens a GPIO and takes ownership of it. -/// @param client Pointer to the APeripheralManagerClient struct. -/// @param name Name of the GPIO. -/// @param gpio Output pointer to the AGpio struct. Empty on error. -/// @return 0 on success, errno on error. -int APeripheralManagerClient_openGpio(const APeripheralManagerClient* client, - const char* name, - AGpio** gpio); - -/// Returns the list of PWMs. -/// This does not take ownership into account. -/// The list must be freed by the caller. -/// @param client Pointer to the APeripheralManagerClient struct. -/// @param num_gpio Output pointer to the number of elements in the list. -/// @return The list of pwms. -char** APeripheralManagerClient_listPwm(const APeripheralManagerClient* client, - int* num_pwm); - -/// Opens a PWM and takes ownership of it. -/// @param client Pointer to the APeripheralManagerClient struct. -/// @param name Name of the PWM. -/// @param gpio Output pointer to the AGpio struct. Empty on error. -/// @return 0 on success, errno on error. -int APeripheralManagerClient_openPwm(const APeripheralManagerClient* client, - const char* name, - APwm** pwm); - -/// Returns the list of SPI buses. -/// This does not take ownership into account. -/// The list must be freed by the caller. -/// @param client Pointer to the APeripheralManagerClient struct. -/// @param num_spi_buses Output pointer to the number of elements in the list. -/// @return The list of spi buses. -char** APeripheralManagerClient_listSpiBuses( - const APeripheralManagerClient* client, int* num_spi_buses); - -/// Opens a SPI device and takes ownership of it. -/// @oaram client Pointer to the APeripheralManagerClient struct. -/// @param name Name of the SPI device. -/// @param dev Output pointer to the ASpiDevice struct. Empty on error. -/// @return 0 on success, errno on error. -int APeripheralManagerClient_openSpiDevice( - const APeripheralManagerClient* client, const char* name, ASpiDevice** dev); - -/// Returns the list of I2C buses. -/// This does not take ownership into account. -/// The list must be freed by the caller. -/// @param client Pointer to the APeripheralManagerClient struct. -/// @param num_i2c_buses Output pointer to the number of elements in the list. -/// @return The list of i2c buses. -char** APeripheralManagerClient_listI2cBuses( - const APeripheralManagerClient* client, int* num_i2c_buses); - -/// Opens an I2C device and takes ownership of it. -/// @param client Pointer to the APeripheralManagerClient struct. -/// @param name Name of the I2C bus. -/// @param address Address of the I2C device. -/// @param dev Output pointer to the AI2cDevice struct. Empty on error. -/// @return 0 on success, errno on error -int APeripheralManagerClient_openI2cDevice( - const APeripheralManagerClient* client, - const char* name, - uint32_t address, - AI2cDevice** dev); - -/// Returns the list of UART buses. -/// This does not take ownership into account. -/// The list must be freed by the caller. -/// @param client Pointer to the APeripheralManagerClient struct. -/// @param num_uart_buses Output pointer to the number of elements in the list. -/// @return The list of uart buses. -char** APeripheralManagerClient_listUartDevices( - const APeripheralManagerClient* client, int* num_uart_buses); - -/// Opens an UART device and takes ownership of it. -/// @param client Pointer to the APeripheralManagerClient struct. -/// @param name Name of the UART device. -/// @param dev Output pointer to the AUartDevice struct. Empty on error. -/// @return 0 on success, errno on error -int APeripheralManagerClient_openUartDevice( - const APeripheralManagerClient* client, - const char* name, - AUartDevice** dev); - -/// Returns the list of I2S buses. -/// This does not take ownership into account. -/// The list must be freed by the caller. -/// @param client Pointer to the APeripheralManagerClient struct. -/// @param num_i2s_buses Output pointer to the number of elements in the list. -/// @return The list of I2S buses. -char** APeripheralManagerClient_listI2sDevices( - const APeripheralManagerClient* client, int* num_i2s_buses); - -/// Opens an I2S device and takes ownership of it. -/// @param client Pointer to the APeripheralManagerClient struct. -/// @param name Name of the I2S device. -/// @param encoding Device pcm encoding. -/// @param channels Number of channels. -/// @param rate Device rate in Hz. -/// @param flags Specify device supporting input, output or both. -/// @param dev Output pointer to the AI2sDevice struct. Empty on error. -/// @return 0 on success, errno on error -int APeripheralManagerClient_openI2sDevice( - const APeripheralManagerClient* client, - const char* name, - AI2sEncoding encoding, - int channels, - int rate, - int flags, - AI2sDevice** dev); - -/// Creates a new client. -/// @return A pointer to the created client. nullptr on errors. -APeripheralManagerClient* APeripheralManagerClient_new(); - -/// Destroys the peripheral manager client. -/// @param client Pointer to the APeripheralManagerClient struct. -void APeripheralManagerClient_delete(APeripheralManagerClient* client); - -/// @} - -__END_DECLS - -#endif // SYSTEM_PERIPHERALMANAGER_PERIPHERAL_MANAGER_CLIENT_H_ diff --git a/pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/x86/include/pio/pwm.h b/pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/x86/include/pio/pwm.h deleted file mode 100644 index 5dd3a51..0000000 --- a/pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/x86/include/pio/pwm.h +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright (C) 2016 The Android Open Source Project - * - * 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. - */ - -#ifndef SYSTEM_PERIPHERALMANAGER_PWM_H_ -#define SYSTEM_PERIPHERALMANAGER_PWM_H_ - -#include -#include - -__BEGIN_DECLS - -/// @defgroup Pwm Pwm Interface -/// @brief Functions to control PWM pins. -/// -/// These functions can be used to control PWM. -/// @{ - -typedef struct APwm APwm; - -/// Sets the PWM duty cycle. -/// @param gpio Pointer to the APwm struct. -/// @param duty_cycle Double between 0 and 100 inclusive. -/// @return 0 on success, errno on error. -int APwm_setDutyCycle(const APwm* pwm, double duty_cycle); - -/// Sets the PWM frequency. -/// @param gpio Pointer to the APwm struct. -/// @param freq Double denoting the frequency in Hz. -/// @return 0 on success, errno on error. -int APwm_setFrequencyHz(const APwm* pwm, double frequency); - -/// Enables the PWM. -/// @param gpio Pointer to the APwm struct. -/// @param enabled Non-zero to enable. -/// @return 0 on success, errno on error. -int APwm_setEnabled(const APwm* pwm, int enabled); - -/// Destroys a APwm struct. -/// @param pwm Pointer to the APwm struct. -void APwm_delete(APwm* pwm); - -/// @} - -__END_DECLS - -#endif // SYSTEM_PERIPHERALMANAGER_PWM_H_ diff --git a/pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/x86/include/pio/spi_device.h b/pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/x86/include/pio/spi_device.h deleted file mode 100644 index 51595d7..0000000 --- a/pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/x86/include/pio/spi_device.h +++ /dev/null @@ -1,119 +0,0 @@ -/* - * Copyright (C) 2016 The Android Open Source Project - * - * 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. - */ - -#ifndef SYSTEM_PERIPHERALMANAGER_SPI_DEVICE_H_ -#define SYSTEM_PERIPHERALMANAGER_SPI_DEVICE_H_ - -#include -#include - -__BEGIN_DECLS - -/// @defgroup Spi Spi device interface -/// @brief Functions to control an SPI device. -/// -/// These functions can be used to control an SPI device. -/// @{ - -/// Endianness. -typedef enum ASpiBitJustification { - ASPI_LSB_FIRST = 0, /**< Least significant bits first */ - ASPI_MSB_FIRST = 1 /**< Most significant bits first */ -} ASpiBitJustification; - -/// SPI modes (similar to the Linux kernel's modes). -typedef enum ASpiMode { - ASPI_MODE0 = 0, /**< CPHA=0, CPOL=0 */ - ASPI_MODE1 = 1, /**< CPHA=1, CPOL=0 */ - ASPI_MODE2 = 2, /**< CPHA=0, CPOL=1 */ - ASPI_MODE3 = 3 /**< CPHA=1, CPOL=1 */ -} ASpiMode; - -typedef struct ASpiDevice ASpiDevice; - -/// Writes a buffer to the device. -/// @param device Pointer to the ASpiDevice struct. -/// @param data Buffer to write. -/// @param len Length of the buffer. -/// @return 0 on success, errno on error. -int ASpiDevice_writeBuffer(const ASpiDevice* device, - const void* data, - size_t len); - -/// Reads a buffer from the device. -/// @param device Pointer to the ASpiDevice struct. -/// @param data Buffer to read into. -/// @param len Length of the buffer. -/// @return 0 on success, errno on error. -int ASpiDevice_readBuffer(const ASpiDevice* device, void* data, size_t len); - -/// Transfer data to the device. -/// @param device Pointer to the ASpiDevice struct. -/// @param tx_data Buffer to write. -/// @param rx_data Buffer to read data in. If NULL, no data will be read. -/// @param len Length of the buffers. -/// @return 0 on success, errno on error. -int ASpiDevice_transfer(const ASpiDevice* device, - const void* tx_data, - void* rx_data, - size_t len); - -/// Sets the frequency in Hertz. -/// @param device Pointer to the ASpiDevice struct. -/// @param freq_hz Frequency to set. -/// @return 0 on success, errno on error. -int ASpiDevice_setFrequency(const ASpiDevice* device, uint32_t freq_hz); - -/// Sets the SPI mode. -/// @param device Pointer to the ASpiDevice struct. -/// @param mode Mode to use. One of SPI_MODE0, SPI_MODE1, SPI_MODE2, SPI_MODE3. -/// @return 0 on success, errno on error. -int ASpiDevice_setMode(const ASpiDevice* device, ASpiMode mode); - -/// Sets the bit justification. -/// @param device Pointer to the ASpiDevice struct. -/// @param bit_justification One of SPI_LSB_FIRST OR SPI_MSB_FIRST. -/// @return 0 on success, errno on error. -int ASpiDevice_setBitJustification(const ASpiDevice* device, - ASpiBitJustification bit_justification); - -/// Sets the number of bits per words. -/// @param device Pointer to the ASpiDevice struct. -/// @param bits_per_word Number of bits per word. -/// @return 0 on success, errno on error. -int ASpiDevice_setBitsPerWord(const ASpiDevice* device, uint8_t bits_per_word); - -/// Sets the delay to wait after each transfer. -/// @param device Pointer to the ASpiDevice struct. -/// @param delay_usecs Delay in microseconds. -/// @return 0 on success, errno on error. -int ASpiDevice_setDelay(const ASpiDevice* device, uint16_t delay_usecs); - -/// Sets the chip select behavior after each transfer. -/// @param device Pointer to the ASpiDevice struct. -/// @param change If set, cs will be active between transfers. -/// @return 0 on success, errno on error. -int ASpiDevice_setCsChange(const ASpiDevice* device, int change); - -/// Destroys a ASpiDevice struct. -/// @param device Pointer to the ASpiDevice struct. -void ASpiDevice_delete(ASpiDevice* device); - -/// @} - -__END_DECLS - -#endif // SYSTEM_PERIPHERALMANAGER_SPI_DEVICE_H_ diff --git a/pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/x86/include/pio/uart_device.h b/pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/x86/include/pio/uart_device.h deleted file mode 100644 index 03ab6d7..0000000 --- a/pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/x86/include/pio/uart_device.h +++ /dev/null @@ -1,178 +0,0 @@ -/* - * Copyright (C) 2016 The Android Open Source Project - * - * 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. - */ - -#ifndef SYSTEM_PERIPHERALMANAGER_UART_DEVICE_H_ -#define SYSTEM_PERIPHERALMANAGER_UART_DEVICE_H_ - -#include -#include - -__BEGIN_DECLS - -/// @defgroup Uart Uart device interface -/// @brief Functions to control an UART device. -/// -/// These functions can be used to control an UART device. -/// @{ - -/// UART Parity -typedef enum AUartParity { - AUART_PARITY_NONE = 0, /**< No parity */ - AUART_PARITY_EVEN = 1, /**< Even parity */ - AUART_PARITY_ODD = 2, /**< Odd parity */ - AUART_PARITY_MARK = 3, /**< Mark parity, always 1 */ - AUART_PARITY_SPACE = 4 /**< Space parity, always 0 */ -} AUartParity; - -/// Modem control lines. -typedef enum AUartModemControlLine { - AUART_MODEM_CONTROL_LE = 1 << 0, /**< Data set ready/Line enable */ - AUART_MODEM_CONTROL_DTR = 1 << 1, /**< Data terminal ready */ - AUART_MODEM_CONTROL_RTS = 1 << 2, /**< Request to send */ - AUART_MODEM_CONTROL_ST = 1 << 3, /**< Secondary TXD */ - AUART_MODEM_CONTROL_SR = 1 << 4, /**< Secondary RXD */ - AUART_MODEM_CONTROL_CTS = 1 << 5, /**< Clear to send */ - AUART_MODEM_CONTROL_CD = 1 << 6, /**< Data carrier detect */ - AUART_MODEM_CONTROL_RI = 1 << 7, /**< Ring */ - AUART_MODEM_CONTROL_DSR = 1 << 8 /**< Data set ready */ -} AUartModemControlLine; - -// Hardware Flow Control -typedef enum AUartHardwareFlowControl { - AUART_HARDWARE_FLOW_CONTROL_NONE = 0, /**< No hardware flow control */ - AUART_HARDWARE_FLOW_CONTROL_AUTO_RTSCTS = 1 /**< Auto RTS/CTS */ -} AUartHardwareFlowControl; - -/// Flush queue selection -typedef enum AUartFlushDirection { - AUART_FLUSH_IN = 0, /**< Flushes data received but not read */ - AUART_FLUSH_OUT = 1, /**< Flushes data written but not transmitted */ - AUART_FLUSH_IN_OUT = 2 /**< Flushes both in and out */ -} AUartFlushDirection; - -typedef struct AUartDevice AUartDevice; - -/// Writes to a UART device. -/// @param device Pointer to the AUartDevice struct. -/// @param data Data to write. -/// @param len Size of the data to write. -/// @param bytes_written Output pointer to the number of bytes written. -/// @return 0 on success, errno on error. -int AUartDevice_write(const AUartDevice* device, - const void* data, - uint32_t len, - uint32_t* bytes_written); - -/// Reads from a UART device. -/// @param device Pointer to the AUartDevice struct. -/// @param data Buffer to read the data into. -/// @param len Number of bytes to read. -/// @param bytes_read Output pointer to the number of bytes read. -/// @return 0 on success, errno on error. -int AUartDevice_read(const AUartDevice* device, - void* data, - uint32_t len, - uint32_t* bytes_read); - -/// Sets the input and output speed of a UART device. -/// @param device Pointer to the AUartDevice struct. -/// @param baudrate Speed in baud. -/// @return 0 on success, errno on error. -int AUartDevice_setBaudrate(const AUartDevice* device, uint32_t baudrate); - -/// Sets number of stop bits for the UART device. -/// @param device Pointer to the AUartDevice struct. -/// @param stop_bits Number of stop bits. Typically 1 or 2. -/// @return 0 on success, errno on error. -int AUartDevice_setStopBits(const AUartDevice* device, uint32_t stop_bits); - -/// Sets the data size of a character for the UART device. -/// @param device Pointer to the AUartDevice struct. -/// @param data_size Number of bits per character. Typically between 5 and 8. -/// @return 0 on success, errno on error. -int AUartDevice_setDataSize(const AUartDevice* device, uint32_t data_size); - -/// Sets the parity mode for the UART device. -/// @param device Pointer to the AUartDevice struct. -/// @param mode Parity mode. -/// @return 0 on success, errno on error. -int AUartDevice_setParity(const AUartDevice* device, AUartParity mode); - -/// Sets the hardware flow control mode for the UART device. -/// @param device Pointer to the AUartDevice struct. -/// @param mode Flow control mode. -/// @return 0 on success, errno on error. -int AUartDevice_setHardwareFlowControl(const AUartDevice* device, - AUartHardwareFlowControl mode); - -/// Sets the modem control bits for the UART device. -/// @param device Pointer to the AUartDevice struct. -/// @param lines Lines to set. AUartModemControlLine values OR'ed together. -/// @return 0 on success, errno on error. -int AUartDevice_setModemControl(const AUartDevice* device, uint32_t lines); - -/// Clears the modem control bits for the UART device. -/// @param device Pointer to the AUartDevice struct. -/// @param lines Lines to clear. AUartModemControlLine values OR'ed together. -/// @return 0 on success, errno on error. -int AUartDevice_clearModemControl(const AUartDevice* device, uint32_t lines); - -/// Sends a break to the UART device. -/// @param device Pointer to the AUartDevice struct. -/// @param duration Duration of break transmission in milliseconds. If 0, -/// transmits zero-valued bits for at least 0.25 seconds, and not more -/// than 0.5 seconds. -/// @return 0 on success, errno on error. -int AUartDevice_sendBreak(const AUartDevice* device, uint32_t duration_msecs); - -/// Flushes specified queue for the UART device. -/// @param device Pointer to the AUartDevice struct. -/// @param direction Direction to flush. -/// @return 0 on success, errno on error. -int AUartDevice_flush(const AUartDevice* device, AUartFlushDirection direction); - -/// Gets a file descriptor to be notified when data can be read. -/// -/// You can use this file descriptor to poll on incoming data instead of -/// actively reading for new data. -/// -/// @param device Pointer to the AUartDevice struct. -/// @param fd Output pointer to the file descriptor. -/// @return 0 on success, errno on error. -int AUartDevice_getPollingFd(const AUartDevice* device, int* fd); - -/// Acknowledges an input event. -/// -/// This must be called after receiving an event notification on the polling -/// file descriptor. -/// If you don't acknowledge an event, peripheral manager will assume you are -/// still processing it and you will not receive any more events. -/// If you acknowledge an event before reading the data from the device, you -/// will receive an event immediately as there will still be data available. -/// -/// @param fd File descriptor to acknowledge the event on. -/// @return 0 on success, errno on error. -int AUartDevice_ackInputEvent(int fd); - -/// Destroys a AUartDevice struct. -/// @param device Pointer to the AUartDevice struct. -void AUartDevice_delete(AUartDevice* device); - -/// @} - -__END_DECLS - -#endif // SYSTEM_PERIPHERALMANAGER_UART_DEVICE_H_ diff --git a/pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/x86/lib/libandroidthings.so b/pi3-smart-remote/native-libandroidthings-0.5.1-devpreview/x86/lib/libandroidthings.so deleted file mode 100644 index 1ff0285545790922e29eb84adfdbead9ee8c70b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 190916 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 z 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 - - 3 - - Debug - - STM8 - - 1 - - C-SPY - 1 - - 1 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - SIMULATOR_STM8 - 1 - - 0 - 1 - 1 - - - - - STICE_STM8 - 3 - - 2 - 1 - 1 - - - - - - - - - - - - - STLINK_STM8 - 3 - - 2 - 1 - 1 - - - - - - - - - - - - - $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin - 0 - - - $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin - 1 - - - $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin - 0 - - - $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin - 0 - - - - - Release - - STM8 - - 0 - - C-SPY - 1 - - 1 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - SIMULATOR_STM8 - 1 - - 0 - 1 - 0 - - - - - STICE_STM8 - 3 - - 2 - 1 - 0 - - - - - - - - - - - - - STLINK_STM8 - 3 - - 2 - 1 - 0 - - - - - - - - - - - - - $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin - 0 - - - $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin - 1 - - - $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin - 0 - - - $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin - 0 - - - - diff --git a/stm8-driver/STM8_Driver.ewp b/stm8-driver/STM8_Driver.ewp deleted file mode 100644 index 5e36d29..0000000 --- a/stm8-driver/STM8_Driver.ewp +++ /dev/null @@ -1,1609 +0,0 @@ - - - 3 - - Debug - - STM8 - - 1 - - General - 4 - - 2 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - ICCSTM8 - 3 - - 9 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ASTM8 - 3 - - 2 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - OBJCOPY - 0 - - 0 - 1 - 1 - - - - - - - - - CUSTOM - 3 - - - - 0 - - - - BICOMP - 0 - - - - BUILDACTION - 1 - - - - - - - ILINK - 4 - - 3 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IARCHIVE - 3 - - 0 - 1 - 1 - - - - - - - BILINK - 0 - - - - - Release - - STM8 - - 0 - - General - 4 - - 2 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - ICCSTM8 - 3 - - 9 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ASTM8 - 3 - - 2 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - OBJCOPY - 0 - - 0 - 1 - 0 - - - - - - - - - CUSTOM - 3 - - - - 0 - - - - BICOMP - 0 - - - - BUILDACTION - 1 - - - - - - - ILINK - 4 - - 3 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IARCHIVE - 3 - - 0 - 1 - 0 - - - - - - - BILINK - 0 - - - - - $PROJ_DIR$\src\main.c - - diff --git a/stm8-driver/STM8_Driver.ewt b/stm8-driver/STM8_Driver.ewt deleted file mode 100644 index 7082106..0000000 --- a/stm8-driver/STM8_Driver.ewt +++ /dev/null @@ -1,2103 +0,0 @@ - - - 3 - - Debug - - STM8 - - 1 - - C-STAT - 260 - - 260 - - 0 - - 1 - 600 - 0 - 2 - 0 - 1 - 100 - - - 1.4.5 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Release - - STM8 - - 0 - - C-STAT - 260 - - 260 - - 0 - - 1 - 600 - 0 - 2 - 0 - 1 - 100 - - - 1.4.5 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - $PROJ_DIR$\src\main.c - - diff --git a/stm8-driver/STM8_Driver.eww b/stm8-driver/STM8_Driver.eww deleted file mode 100644 index 31b5a81..0000000 --- a/stm8-driver/STM8_Driver.eww +++ /dev/null @@ -1,10 +0,0 @@ - - - - - $WS_DIR$\STM8_Driver.ewp - - - - - diff --git a/stm8-driver/settings/STM8_Driver.Debug.cspy.bat b/stm8-driver/settings/STM8_Driver.Debug.cspy.bat deleted file mode 100644 index 14dfeae..0000000 --- a/stm8-driver/settings/STM8_Driver.Debug.cspy.bat +++ /dev/null @@ -1,40 +0,0 @@ -@REM This batch file has been generated by the IAR Embedded Workbench -@REM C-SPY Debugger, as an aid to preparing a command line for running -@REM the cspybat command line utility using the appropriate settings. -@REM -@REM Note that this file is generated every time a new debug session -@REM is initialized, so you may want to move or rename the file before -@REM making changes. -@REM -@REM You can launch cspybat by typing the name of this batch file followed -@REM by the name of the debug file (usually an ELF/DWARF or UBROF file). -@REM -@REM Read about available command line parameters in the C-SPY Debugging -@REM Guide. Hints about additional command line parameters that may be -@REM useful in specific cases: -@REM --download_only Downloads a code image without starting a debug -@REM session afterwards. -@REM --silent Omits the sign-on message. -@REM --timeout Limits the maximum allowed execution time. -@REM - - -@echo off - -if not "%~1" == "" goto debugFile - -@echo on - -"C:\Program Files (x86)\IAR Systems\Embedded Workbench 8.0\common\bin\cspybat" -f "D:\Project\Iot_Work\irext\examples\stm8-driver\settings\STM8_Driver.Debug.general.xcl" --backend -f "D:\Project\Iot_Work\irext\examples\stm8-driver\settings\STM8_Driver.Debug.driver.xcl" - -@echo off -goto end - -:debugFile - -@echo on - -"C:\Program Files (x86)\IAR Systems\Embedded Workbench 8.0\common\bin\cspybat" -f "D:\Project\Iot_Work\irext\examples\stm8-driver\settings\STM8_Driver.Debug.general.xcl" "--debug_file=%~1" --backend -f "D:\Project\Iot_Work\irext\examples\stm8-driver\settings\STM8_Driver.Debug.driver.xcl" - -@echo off -:end \ No newline at end of file diff --git a/stm8-driver/settings/STM8_Driver.Debug.cspy.ps1 b/stm8-driver/settings/STM8_Driver.Debug.cspy.ps1 deleted file mode 100644 index c3f3f71..0000000 --- a/stm8-driver/settings/STM8_Driver.Debug.cspy.ps1 +++ /dev/null @@ -1,31 +0,0 @@ -param([String]$debugfile = ""); - -# This powershell file has been generated by the IAR Embedded Workbench -# C - SPY Debugger, as an aid to preparing a command line for running -# the cspybat command line utility using the appropriate settings. -# -# Note that this file is generated every time a new debug session -# is initialized, so you may want to move or rename the file before -# making changes. -# -# You can launch cspybat by typing Powershell.exe -File followed by the name of this batch file, followed -# by the name of the debug file (usually an ELF / DWARF or UBROF file). -# -# Read about available command line parameters in the C - SPY Debugging -# Guide. Hints about additional command line parameters that may be -# useful in specific cases : -# --download_only Downloads a code image without starting a debug -# session afterwards. -# --silent Omits the sign - on message. -# --timeout Limits the maximum allowed execution time. -# - - -if ($debugfile -eq "") -{ -& "C:\Program Files (x86)\IAR Systems\Embedded Workbench 8.0\common\bin\cspybat" -f "D:\Project\Iot_Work\irext\examples\stm8-driver\settings\STM8_Driver.Debug.general.xcl" --backend -f "D:\Project\Iot_Work\irext\examples\stm8-driver\settings\STM8_Driver.Debug.driver.xcl" -} -else -{ -& "C:\Program Files (x86)\IAR Systems\Embedded Workbench 8.0\common\bin\cspybat" -f "D:\Project\Iot_Work\irext\examples\stm8-driver\settings\STM8_Driver.Debug.general.xcl" --debug_file=$debugfile --backend -f "D:\Project\Iot_Work\irext\examples\stm8-driver\settings\STM8_Driver.Debug.driver.xcl" -} diff --git a/stm8-driver/settings/STM8_Driver.Debug.driver.xcl b/stm8-driver/settings/STM8_Driver.Debug.driver.xcl deleted file mode 100644 index f9cd43d..0000000 --- a/stm8-driver/settings/STM8_Driver.Debug.driver.xcl +++ /dev/null @@ -1,11 +0,0 @@ -"-p" - -"C:\Program Files (x86)\IAR Systems\Embedded Workbench 8.0\stm8\config\ddf\iostm8s207k8.ddf" - -"--mcuname" - -"STM8S207K8" - - - - diff --git a/stm8-driver/settings/STM8_Driver.Debug.general.xcl b/stm8-driver/settings/STM8_Driver.Debug.general.xcl deleted file mode 100644 index f2ddf6b..0000000 --- a/stm8-driver/settings/STM8_Driver.Debug.general.xcl +++ /dev/null @@ -1,11 +0,0 @@ -"C:\Program Files (x86)\IAR Systems\Embedded Workbench 8.0\stm8\bin\stm8proc.dll" - -"C:\Program Files (x86)\IAR Systems\Embedded Workbench 8.0\stm8\bin\stm8stlink.dll" - -"D:\Project\Iot_Work\irext\examples\stm8-driver\Debug\Exe\templproj.out" - ---plugin "C:\Program Files (x86)\IAR Systems\Embedded Workbench 8.0\stm8\bin\stm8bat.dll" - - - - diff --git a/stm8-driver/settings/STM8_Driver.Release.driverxcl b/stm8-driver/settings/STM8_Driver.Release.driverxcl deleted file mode 100644 index f2ddf6b..0000000 --- a/stm8-driver/settings/STM8_Driver.Release.driverxcl +++ /dev/null @@ -1,11 +0,0 @@ -"C:\Program Files (x86)\IAR Systems\Embedded Workbench 8.0\stm8\bin\stm8proc.dll" - -"C:\Program Files (x86)\IAR Systems\Embedded Workbench 8.0\stm8\bin\stm8stlink.dll" - -"D:\Project\Iot_Work\irext\examples\stm8-driver\Debug\Exe\templproj.out" - ---plugin "C:\Program Files (x86)\IAR Systems\Embedded Workbench 8.0\stm8\bin\stm8bat.dll" - - - - diff --git a/stm8-driver/settings/STM8_Driver.bat b/stm8-driver/settings/STM8_Driver.bat deleted file mode 100644 index 14dfeae..0000000 --- a/stm8-driver/settings/STM8_Driver.bat +++ /dev/null @@ -1,40 +0,0 @@ -@REM This batch file has been generated by the IAR Embedded Workbench -@REM C-SPY Debugger, as an aid to preparing a command line for running -@REM the cspybat command line utility using the appropriate settings. -@REM -@REM Note that this file is generated every time a new debug session -@REM is initialized, so you may want to move or rename the file before -@REM making changes. -@REM -@REM You can launch cspybat by typing the name of this batch file followed -@REM by the name of the debug file (usually an ELF/DWARF or UBROF file). -@REM -@REM Read about available command line parameters in the C-SPY Debugging -@REM Guide. Hints about additional command line parameters that may be -@REM useful in specific cases: -@REM --download_only Downloads a code image without starting a debug -@REM session afterwards. -@REM --silent Omits the sign-on message. -@REM --timeout Limits the maximum allowed execution time. -@REM - - -@echo off - -if not "%~1" == "" goto debugFile - -@echo on - -"C:\Program Files (x86)\IAR Systems\Embedded Workbench 8.0\common\bin\cspybat" -f "D:\Project\Iot_Work\irext\examples\stm8-driver\settings\STM8_Driver.Debug.general.xcl" --backend -f "D:\Project\Iot_Work\irext\examples\stm8-driver\settings\STM8_Driver.Debug.driver.xcl" - -@echo off -goto end - -:debugFile - -@echo on - -"C:\Program Files (x86)\IAR Systems\Embedded Workbench 8.0\common\bin\cspybat" -f "D:\Project\Iot_Work\irext\examples\stm8-driver\settings\STM8_Driver.Debug.general.xcl" "--debug_file=%~1" --backend -f "D:\Project\Iot_Work\irext\examples\stm8-driver\settings\STM8_Driver.Debug.driver.xcl" - -@echo off -:end \ No newline at end of file diff --git a/stm8-driver/settings/STM8_Driver.dbgdt b/stm8-driver/settings/STM8_Driver.dbgdt deleted file mode 100644 index b9848fa..0000000 --- a/stm8-driver/settings/STM8_Driver.dbgdt +++ /dev/null @@ -1,1056 +0,0 @@ - - - - - - 20 - 1541 - - - 20 - 1155 - 308 - 77 - - - - 124 - 27 - 27 - 27 - - - - - Disassembly - _I0 - - - 500 - 20 - - - 1 - 1 - - - - - - - TabID-4934-5138 - Debug Log - Debug-Log - - - - TabID-4411-5147 - Build - Build - - - - 0 - - - - - TabID-15682-5141 - Workspace - Workspace - - - STM8_Driver - - - - - 0 - - - - - TabID-26431-5144 - Disassembly - Disassembly - - - - 0 - - - - - - TextEditor - $WS_DIR$\main.c - 0 - 0 - 0 - 0 - 0 - 32 - 2129 - 2129 - - 0 - - TextEditor - $WS_DIR$\..\..\..\..\..\..\..\Program Files\IAR Systems\Embedded Workbench 7.0\stm8\inc\iostm8s207k8.h - 0 - 0 - 0 - 0 - 0 - 4627 - 158786 - 158786 - - - 0 - - - 1000000 - 1000000 - - - 1 - - - - - - - iaridepm.enu1 - - - - - - - debuggergui.enu1 - - - - - - - - - - - - - -2 - -2 - 558 - 198 - -2 - -2 - 200 - 200 - 125000 - 242718 - 125000 - 679612 - - - - - - - - - - - -2 - -2 - 558 - 198 - -2 - -2 - 200 - 200 - 125000 - 242718 - 125000 - 679612 - - - - - - - - - - - -2 - -2 - 198 - 1602 - -2 - -2 - 1604 - 200 - 1002500 - 242718 - 125000 - 242718 - - - - - - - - - - - - - 34048 - 34049 - 34050 - 34051 - 34052 - 34053 - 34054 - 34055 - 34056 - 34057 - 34058 - 34059 - 34060 - 34061 - 34062 - 34063 - 34064 - 34065 - 34066 - 34067 - 34068 - 34069 - 34070 - 34071 - 34072 - 34073 - 34074 - 34075 - 34076 - 34077 - 34078 - 34079 - 34080 - 34081 - 34082 - 34083 - 34084 - 34085 - 34086 - 34087 - 34088 - 34089 - 34090 - 34091 - 34092 - 34093 - 34094 - 34095 - - - - - 34390 - 34323 - 34398 - 34400 - 34397 - 34320 - 34321 - 34324 - 0 - - - - - 57600 - 57601 - 57603 - 33024 - 0 - 57607 - 0 - 57635 - 57634 - 57637 - 0 - 57643 - 57644 - 0 - 33090 - 33057 - 57636 - 57640 - 57641 - 33026 - 33065 - 33063 - 33064 - 33053 - 33054 - 0 - 33035 - 33036 - 34399 - 0 - 33055 - 33056 - 33094 - 0 - - - - 14 - 12 - - - 1 - 1 - 0 - 0 - 1 - 1 - 1 - 080300001D001386000004000000108600006001000029E1000006000000239200000100000020810000120000000F810000010000000C810000020000000D80000001000000EA8000000100000001DE0000010000001781000001000000568600000700000014810000010000002BE100000100000000810000030000005E8600000B0000000E810000010000001F8100006F00000003E1000001000000E98000000100000003DE00000200000041E1000001000000118600003A000000468100004E000000608600007B00000005E10000010000005D860000060000000A84000001000000E880000001000000 - - - 20000D8400000F84000008840000FFFFFFFF54840000328100001C810000098400001C8F00001E8F00001F8F0000208F0000218F00002AE10000118F000074860000A4860000A386000054860000598600007784000007840000808C000044D500008386000058860000009200000192000002920000069200000392000004920000 - 2B00138600002500000004840000720000005786000017000000768600002F00000010860000230000008486000030000000318400007900000023920000000000000F8100004900000020810000510000000C81000046000000008D00001A0000000684000074000000568600002900000003840000710000009A86000015000000008400006E00000030840000780000000E840000760000005E8600002B0000000E810000480000001F810000500000001A8600002800000022E10000620000000B810000450000008E8600003100000014860000260000000584000073000000698600002E0000001186000024000000028400007000000055860000060000004681000058000000328400007A00000010840000770000000E86000016000000608600002D0000005D8600002A0000000D810000470000000A84000075000000A186000032000000C386000003000000C08600000A000000 - - - 0 - 0A0000000A0000006E0000006E000000 - 00000000CA03000044050000DD030000 - 4096 - 0 - 0 - 32767 - 0 - - - 1 - - - 34050 - 00000000170000000601000078010000 - 00000000000000000601000061010000 - 16384 - 0 - 0 - 32767 - 0 - - - 0 - - - - 4294967295 - E201000063000000E80200000E030000 - 000000003200000006010000DD020000 - 4096 - 0 - 0 - 32767 - 0 - - - 1 - - - 34051 - 000000001700000022010000C8000000 - 04000000F902000040050000B0030000 - 32768 - 0 - 0 - 32767 - 0 - - - 1 - - - 34052 - 000000001700000022010000C8000000 - 04000000F902000040050000B0030000 - 4096 - 0 - 0 - 32767 - 0 - - - 0 - - - 34061 - 000000001700000022010000C8000000 - 04000000F902000040050000B0030000 - 4096 - 0 - 0 - 32767 - 0 - - - 1 - - - 34063 - 000000001700000022010000C8000000 - 04000000F902000040050000B0030000 - 4096 - 0 - 0 - 32767 - 0 - - - 0 - - - 34064 - 000000001700000022010000C8000000 - 04000000F902000040050000B0030000 - 4096 - 0 - 0 - 32767 - 0 - - - 0 - - - 34065 - 000000001700000022010000C8000000 - 04000000F902000040050000B0030000 - 4096 - 0 - 0 - 32767 - 0 - - - 0 - - - 34080 - 000000001700000022010000C8000000 - 04000000F902000040050000B0030000 - 4096 - 0 - 0 - 32767 - 0 - - - 0 - - - 34089 - 000000001700000022010000C8000000 - 04000000F902000040050000B0030000 - 4096 - 0 - 0 - 32767 - 0 - - - 0 - - - 34053 - 000000001700000080020000A8000000 - 00000000000000008002000091000000 - 32768 - 0 - 0 - 32767 - 0 - - - 0 - - - 34054 - 00000000170000000601000078010000 - 00000000000000000601000061010000 - 4096 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34055 - 000000001700000022010000C8000000 - 000000000000000022010000B1000000 - 8192 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34056 - 000000001700000022010000C8000000 - 000000000000000022010000B1000000 - 32768 - 0 - 0 - 32767 - 0 - - - 0 - - - 34057 - 000000001700000022010000C8000000 - 000000000000000022010000B1000000 - 32768 - 0 - 0 - 32767 - 0 - - - 0 - - - 34058 - 000000001700000022010000C8000000 - 000000000000000022010000B1000000 - 32768 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34059 - 000000001700000022010000C8000000 - 000000000000000022010000B1000000 - 32768 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34060 - 00000000170000000601000078010000 - 00000000000000000601000061010000 - 16384 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34062 - 00000000170000000601000078010000 - F00300003200000044050000DD020000 - 16384 - 0 - 0 - 32767 - 0 - - - 1 - - - - Disassembly - _I0 - - - 500 - 20 - - - 1 - 1 - - - 34066 - 000000001700000022010000C8000000 - 000000000000000022010000B1000000 - 8192 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34067 - 00000000170000000601000078010000 - 00000000000000000601000061010000 - 16384 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34068 - 00000000170000000601000078010000 - 00000000000000000601000061010000 - 16384 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34069 - 00000000170000000601000078010000 - 00000000000000000601000061010000 - 16384 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34070 - 000000001700000022010000D8000000 - 040000005901000052050000E8010000 - 32768 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34071 - 000000001700000022010000D8000000 - 040000005901000052050000E8010000 - 4096 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34072 - 000000001700000022010000D8000000 - 040000005901000052050000E8010000 - 4096 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34073 - 000000001700000022010000D8000000 - 040000005901000052050000E8010000 - 4096 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34074 - 00000000170000000601000078010000 - 00000000000000000601000061010000 - 16384 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34075 - 00000000170000000601000078010000 - 00000000000000000601000061010000 - 16384 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34076 - 00000000170000000601000078010000 - 00000000000000000601000061010000 - 16384 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34077 - 00000000170000000601000078010000 - 00000000000000000601000061010000 - 16384 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34078 - 00000000170000000601000078010000 - 00000000000000000601000061010000 - 16384 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34079 - 00000000170000000601000078010000 - 00000000000000000601000061010000 - 16384 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34081 - 00000000170000000601000078010000 - 040000004A00000002010000C3020000 - 4096 - 0 - 0 - 32767 - 0 - - - 0 - - - 34095 - 00000000170000000601000078010000 - 000000004600000006010000DD020000 - 4096 - 0 - 0 - 32767 - 0 - - - 1 - - - 34082 - 00000000170000000601000078010000 - 00000000000000000601000061010000 - 4096 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34083 - 00000000170000000601000078010000 - 00000000000000000601000061010000 - 4096 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34084 - 00000000170000000601000078010000 - 00000000000000000601000061010000 - 16384 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34085 - 00000000170000000601000078010000 - 00000000000000000601000061010000 - 16384 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34086 - 000000001700000022010000C8000000 - 000000000000000022010000B1000000 - 8192 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34087 - 00000000170000000601000078010000 - 00000000000000000601000061010000 - 16384 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34088 - 0000000017000000AE010000D8000000 - 0000000000000000AE010000C1000000 - 16384 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34090 - 0000000017000000AE010000D8000000 - 0000000000000000AE010000C1000000 - 32768 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34091 - 00000000170000000601000078010000 - 3404000032000000BD05000003030000 - 16384 - 0 - 0 - 32767 - 0 - - - 0 - - - - source_code - - - - Expression - Location - Type - Value - - - 125 - 150 - 100 - 205 - - - - 34092 - 00000000170000000601000078010000 - 00000000000000000601000061010000 - 16384 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34093 - 00000000170000000601000078010000 - 00000000000000000601000061010000 - 16384 - 0 - 0 - 32767 - 0 - - - 0 - - - - 34094 - 00000000170000000601000078010000 - 00000000000000000601000061010000 - 16384 - 0 - 0 - 32767 - 0 - - - 0 - - - - 0000000046000000000000000040000000000000FFFFFFFFFFFFFFFF000000000000000004000000040000000000000002000000040000000100000000000000000000002E85000000000000000000000000000000000000010000002E850000010000002E850000000000000040000000000000FFFFFFFFFFFFFFFF000000000000000004000000040000000000000002000000040000000100000000000000000000002D85000000000000000000000000000000000000010000002D850000010000002D850000000000000040000000000000FFFFFFFFFFFFFFFF000000000000000004000000040000000000000002000000040000000100000000000000000000002C85000000000000000000000000000000000000010000002C850000010000002C850000000000000040000000000000FFFFFFFFFFFFFFFF30040000320000003404000003030000000000000200000004000000010000005CFCFFFFB50000002B85000000000000000000000000000000000000010000002B850000010000002B850000000000000080000000000000FFFFFFFFFFFFFFFF000000000000000004000000040000000000000001000000040000000100000000000000000000002A85000000000000000000000000000000000000010000002A850000010000002A850000000000000040000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000200000004000000010000000000000000000000288500000000000000000000000000000000000001000000288500000100000028850000000000000040000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000200000004000000010000000000000000000000278500000000000000000000000000000000000001000000278500000100000027850000000000000020000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000100000004000000010000000000000000000000268500000000000000000000000000000000000001000000268500000100000026850000000000000040000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000200000004000000010000000000000000000000258500000000000000000000000000000000000001000000258500000100000025850000000000000040000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000200000004000000010000000000000000000000248500000000000000000000000000000000000001000000248500000100000024850000000000000010000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000200000004000000010000000000000000000000238500000000000000000000000000000000000001000000238500000100000023850000000000000010000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000200000004000000010000000000000000000000228500000000000000000000000000000000000001000000228500000100000022850000000000000010000001000000FFFFFFFFFFFFFFFF06010000320000000A010000DD020000010000000200001004000000010000000000000000000000FFFFFFFF02000000218500002F850000FFFF02000B004354616262656450616E650010000001000000E201000063000000E80200000E030000000000003200000006010000DD020000000000004010005602000000FFFEFF0E53006F0075007200630065002000420072006F007700730065007200000000002185000001000000FFFFFFFFFFFFFFFFFFFEFF0957006F0072006B0073007000610063006500010000002F85000001000000FFFFFFFFFFFFFFFF01000000000000000000000000000000000000000000000001000000FFFFFFFF2185000001000000FFFFFFFF21850000000000000040000000000000FFFFFFFFFFFFFFFF000000000000000004000000040000000000000002000000040000000100000000000000000000001F85000000000000000000000000000000000000010000001F850000010000001F850000000000000040000000000000FFFFFFFFFFFFFFFF000000000000000004000000040000000000000002000000040000000100000000000000000000001E85000000000000000000000000000000000000010000001E850000010000001E850000000000000040000000000000FFFFFFFFFFFFFFFF000000000000000004000000040000000000000002000000040000000100000000000000000000001D85000000000000000000000000000000000000010000001D850000010000001D850000000000000040000000000000FFFFFFFFFFFFFFFF000000000000000004000000040000000000000002000000040000000100000000000000000000001C85000000000000000000000000000000000000010000001C850000010000001C850000000000000040000000000000FFFFFFFFFFFFFFFF000000000000000004000000040000000000000002000000040000000100000000000000000000001B85000000000000000000000000000000000000010000001B850000010000001B850000000000000040000000000000FFFFFFFFFFFFFFFF000000000000000004000000040000000000000002000000040000000100000000000000000000001A85000000000000000000000000000000000000010000001A850000010000001A850000000000000080000000000000FFFFFFFFFFFFFFFF000000003D0100005605000041010000000000000100000004000000010000000000000000000000FFFFFFFF040000001685000017850000188500001985000001800080000000000000E201000072010000380700003302000000000000410100005605000002020000000000004080004604000000FFFEFF084D0065006D006F007200790020003100000000001685000001000000FFFFFFFFFFFFFFFFFFFEFF084D0065006D006F007200790020003200000000001785000001000000FFFFFFFFFFFFFFFFFFFEFF084D0065006D006F007200790020003300000000001885000001000000FFFFFFFFFFFFFFFFFFFEFF084D0065006D006F007200790020003400000000001985000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFF1685000001000000FFFFFFFF16850000000000000040000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000200000004000000010000000000000000000000158500000000000000000000000000000000000001000000158500000100000015850000000000000040000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000200000004000000010000000000000000000000148500000000000000000000000000000000000001000000148500000100000014850000000000000040000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000200000004000000010000000000000000000000138500000000000000000000000000000000000001000000138500000100000013850000000000000020000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000100000004000000010000000000000000000000128500000000000000000000000000000000000001000000128500000100000012850000000000000040000001000000FFFFFFFFFFFFFFFFEC03000032000000F0030000DD0200000100000002000010040000000100000052FBFFFF6E0100000E85000000000000000000000000000000000000010000000E850000010000000E850000000000000040000000000000FFFFFFFFFFFFFFFF000000000000000004000000040000000000000002000000040000000100000000000000000000000C85000000000000000000000000000000000000010000000C850000010000000C850000000000000080000000000000FFFFFFFFFFFFFFFF000000000000000004000000040000000000000001000000040000000100000000000000000000000B85000000000000000000000000000000000000010000000B850000010000000B850000000000000080000000000000FFFFFFFFFFFFFFFF000000000000000004000000040000000000000001000000040000000100000000000000000000000A85000000000000000000000000000000000000010000000A850000010000000A850000000000000080000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000100000004000000010000000000000000000000098500000000000000000000000000000000000001000000098500000100000009850000000000000080000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000100000004000000010000000000000000000000088500000000000000000000000000000000000001000000088500000100000008850000000000000020000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000100000004000000010000000000000000000000078500000000000000000000000000000000000001000000078500000100000007850000000000000010000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000200000004000000010000000000000000000000068500000000000000000000000000000000000001000000068500000100000006850000000000000080000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000100000004000000010000000000000000000000058500000000000000000000000000000000000001000000058500000100000005850000000000000080000001000000FFFFFFFFFFFFFFFF00000000DD02000044050000E102000001000000010000100400000001000000F0FCFFFF63000000FFFFFFFF0800000003850000048500000D8500000F8500001085000011850000208500002985000001800080000001000000E20100001203000026070000FB03000000000000E102000044050000CA030000000000004080005608000000FFFEFF0B42007200650061006B0070006F0069006E0074007300010000000385000001000000FFFFFFFFFFFFFFFFFFFEFF054200750069006C006400000000000485000001000000FFFFFFFFFFFFFFFFFFFEFF094400650062007500670020004C006F006700010000000D85000001000000FFFFFFFFFFFFFFFFFFFEFF0C4400650063006C00610072006100740069006F006E007300000000000F85000001000000FFFFFFFFFFFFFFFFFFFEFF0A5200650066006500720065006E00630065007300000000001085000001000000FFFFFFFFFFFFFFFFFFFEFF0D460069006E006400200069006E002000460069006C0065007300000000001185000001000000FFFFFFFFFFFFFFFFFFFEFF1541006D0062006900670075006F0075007300200044006500660069006E006900740069006F006E007300000000002085000001000000FFFFFFFFFFFFFFFFFFFEFF0B54006F006F006C0020004F0075007400700075007400000000002985000001000000FFFFFFFFFFFFFFFF02000000000000000000000000000000000000000000000001000000FFFFFFFF0385000001000000FFFFFFFF03850000000000000040000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000200000004000000010000000000000000000000028500000000000000000000000000000000000001000000028500000100000002850000000000000000000000000000 - - - Debug - 00200000010000000800FFFF01001100434D4643546F6F6C426172427574746F6E568600000000040029000000FFFEFF0000000000000000000000000001000000010000000180138600000000040025000000FFFEFF00000000000000000000000000010000000100000001805E860000000004002B000000FFFEFF000000000000000000000000000100000001000000018060860000000004002D000000FFFEFF00000000000000000000000000010000000100000001805D860000000004002A000000FFFEFF0000000000000000000000000001000000010000000180108600000000040023000000FFFEFF0000000000000000000000000001000000010000000180118600000000000024000000FFFEFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E148600000000040026000000FFFEFF205200650073006500740020007400680065002000640065006200750067006700650064002000700072006F006700720061006D000A00520065007300650074000000000000000000000000000100000001000000000000000000000001000000020009800000000000000400FFFFFFFFFFFEFF000000000000000000000000000100000001000000000000000000000001000000000009801986000000000000FFFFFFFFFFFEFF000100000000000000000000000100000001000000000000000000000001000000000000000000FFFEFF0544006500620075006700C6000000 - - - 34048 - 0A0000000A0000006E0000006E000000 - 1503000018000000F103000032000000 - 8192 - 1 - 0 - 198 - 0 - - - 1 - - - Main - 00200000010000002100FFFF01001100434D4643546F6F6C426172427574746F6E00E10000000000005B000000FFFEFF000000000000000000000000000100000001000000018001E10000000000005C000000FFFEFF000000000000000000000000000100000001000000018003E10000000000005E000000FFFEFF000000000000000000000000000100000001000000018000810000000000003F000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000018007E100000000000061000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000018023E100000000040063000000FFFEFF000000000000000000000000000100000001000000018022E100000000040062000000FFFEFF000000000000000000000000000100000001000000018025E100000000040065000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001802BE100000000040068000000FFFEFF00000000000000000000000000010000000100000001802CE100000000040069000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6E4281000000000000FFFFFFFFFFFEFF0001000000000000000100000000000000010000007800000002002050FFFFFFFFFFFEFF0096000000000000000300FFFEFF036E006F007000FFFEFF14490052006500780074005F00700072006F00630065007300730055006100720074004D0073006700FFFEFF0750007200650070006100720065000000000000000000000000000180218100000000040052000000FFFEFF000000000000000000000000000100000001000000018024E100000000000064000000FFFEFF000000000000000000000000000100000001000000018028E100000000040066000000FFFEFF000000000000000000000000000100000001000000018029E100000000000067000000FFFEFF0000000000000000000000000001000000010000000180028100000000000041000000FFFEFF0000000000000000000000000001000000010000000180298100000000000056000000FFFEFF0000000000000000000000000001000000010000000180278100000000000054000000FFFEFF0000000000000000000000000001000000010000000180288100000000000055000000FFFEFF00000000000000000000000000010000000100000001801D810000000000004E000000FFFEFF00000000000000000000000000010000000100000001801E810000000004004F000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001800B8100000000000045000000FFFEFF00000000000000000000000000010000000100000001800C8100000000000046000000FFFEFF00000000000000000000000000010000000100000001805F860000000000005A000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001801F8100000000000050000000FFFEFF0000000000000000000000000001000000010000000180208100000000000051000000FFFEFF0000000000000000000000000001000000010000000180468100000000020058000000FFFEFF00000000000000000000000000010000000100000000000000FFFEFF044D00610069006E00FF020000 - - - 34049 - 0A0000000A0000006E0000006E000000 - 00000000180000001503000032000000 - 8192 - 1 - 0 - 767 - 0 - - - 1 - - - - diff --git a/stm8-driver/settings/STM8_Driver.dni b/stm8-driver/settings/STM8_Driver.dni deleted file mode 100644 index e4fd8fd..0000000 --- a/stm8-driver/settings/STM8_Driver.dni +++ /dev/null @@ -1,64 +0,0 @@ -[Stack] -FillEnabled=0 -OverflowWarningsEnabled=1 -WarningThreshold=90 -SpWarningsEnabled=1 -WarnLogOnly=1 -UseTrigger=1 -TriggerName=main -LimitSize=0 -ByteLimit=50 -[InterruptLog] -LogEnabled=0 -SumEnabled=0 -GraphEnabled=0 -ShowTimeLog=1 -ShowTimeSum=1 -SumSortOrder=0 -[DataLog] -LogEnabled=0 -SumEnabled=0 -GraphEnabled=0 -ShowTimeLog=1 -ShowTimeSum=1 -[Breakpoints2] -Count=0 -[Interrupts] -Enabled=1 -[MemoryMap] -Enabled=0 -Base=0 -UseAuto=0 -TypeViolation=1 -UnspecRange=1 -ActionState=1 -[Trace1] -Enabled=0 -ShowSource=1 -[Simulator] -Freq=16000000 -[DebugChecksum] -Checksum=-551179649 -[CallStack] -ShowArgs=0 -[Disassembly] -MixedMode=1 -[DataSample] -LogEnabled=0 -GraphEnabled=0 -ShowTimeLog=1 -ShowTimeSum=1 -[Log file] -LoggingEnabled=_ 0 -LogFile=_ "" -Category=_ 0 -[TermIOLog] -LoggingEnabled=_ 0 -LogFile=_ "" -[Breakpoints] -Count=0 -[Aliases] -Count=0 -SuppressDialog=0 -[DebuggerSettings] -DisableInterruptsWhenStepping=0 diff --git a/stm8-driver/settings/STM8_Driver.dnx b/stm8-driver/settings/STM8_Driver.dnx deleted file mode 100644 index 333d0e3..0000000 --- a/stm8-driver/settings/STM8_Driver.dnx +++ /dev/null @@ -1,89 +0,0 @@ - - - - 0 - 1 - 90 - 1 - 1 - 1 - main - 0 - 50 - - - 0 - 0 - 0 - 1 - 1 - 0 - - - 0 - 0 - 0 - 1 - 1 - - - 0 - - - 1 - - - 0 - 0 - 0 - 1 - 1 - 1 - - - 0 - 1 - - - 16000000 - - - 3110544503 - - - 0 - - - 1 - - - _ 0 - _ "" - _ 0 - - - 0 - 0 - 1 - - - _ 0 - _ "" - _ 0 - - - _ 0 - _ "" - - - 0 - - - 0 - 0 - - - 0 - 0 - - diff --git a/stm8-driver/settings/STM8_Driver.ps1 b/stm8-driver/settings/STM8_Driver.ps1 deleted file mode 100644 index c3f3f71..0000000 --- a/stm8-driver/settings/STM8_Driver.ps1 +++ /dev/null @@ -1,31 +0,0 @@ -param([String]$debugfile = ""); - -# This powershell file has been generated by the IAR Embedded Workbench -# C - SPY Debugger, as an aid to preparing a command line for running -# the cspybat command line utility using the appropriate settings. -# -# Note that this file is generated every time a new debug session -# is initialized, so you may want to move or rename the file before -# making changes. -# -# You can launch cspybat by typing Powershell.exe -File followed by the name of this batch file, followed -# by the name of the debug file (usually an ELF / DWARF or UBROF file). -# -# Read about available command line parameters in the C - SPY Debugging -# Guide. Hints about additional command line parameters that may be -# useful in specific cases : -# --download_only Downloads a code image without starting a debug -# session afterwards. -# --silent Omits the sign - on message. -# --timeout Limits the maximum allowed execution time. -# - - -if ($debugfile -eq "") -{ -& "C:\Program Files (x86)\IAR Systems\Embedded Workbench 8.0\common\bin\cspybat" -f "D:\Project\Iot_Work\irext\examples\stm8-driver\settings\STM8_Driver.Debug.general.xcl" --backend -f "D:\Project\Iot_Work\irext\examples\stm8-driver\settings\STM8_Driver.Debug.driver.xcl" -} -else -{ -& "C:\Program Files (x86)\IAR Systems\Embedded Workbench 8.0\common\bin\cspybat" -f "D:\Project\Iot_Work\irext\examples\stm8-driver\settings\STM8_Driver.Debug.general.xcl" --debug_file=$debugfile --backend -f "D:\Project\Iot_Work\irext\examples\stm8-driver\settings\STM8_Driver.Debug.driver.xcl" -} diff --git a/stm8-driver/settings/STM8_Driver.wspos b/stm8-driver/settings/STM8_Driver.wspos deleted file mode 100644 index a7c2a73..0000000 --- a/stm8-driver/settings/STM8_Driver.wspos +++ /dev/null @@ -1,2 +0,0 @@ -[MainWindow] -WindowPlacement=_ 226 183 1035 600 3 diff --git a/stm8-driver/src/main.c b/stm8-driver/src/main.c deleted file mode 100644 index cc98ecd..0000000 --- a/stm8-driver/src/main.c +++ /dev/null @@ -1,439 +0,0 @@ -/************************************************************************************** -Filename: main.c -Revised: Date: 2018-01-23 -Revision: Revision: 1.0 - -Description: This file provides driver for IR decode - -Revision log: -* 2018-01-23: created by strawmanbobi -**************************************************************************************/ - -#include -#define UARTPORT(flag) UART3_##flag - -#include -#include - -// -// Define where we will be working in the EEPROM. -// -#define EEPROM_BASE_ADDRESS 0x4000 -#define EEPROM_INITIAL_OFFSET 0x0040 -#define EEPROM_PULSE_DATA ((unsigned char *) (EEPROM_BASE_ADDRESS + EEPROM_INITIAL_OFFSET)) -#define EEPROM_CARRIER_FREQUENCY - -// -// Data ready for the pulse timer ISR's to use. -// -int _numberOfPulses = 0; -int _currentPulse = 0; -char *_pulseDataAddress = NULL; - -// -// Prescalar for the timer. -// -int _prescalar = 1; - -// -// Some control variables to indicate if we are running or not. -// -#define STATE_WAITING_FOR_USER 0 -#define STATE_RUNNING 1 -int _currentState = STATE_WAITING_FOR_USER; - -// -// Working variables for the UART. -// -unsigned char *_currentTxByte; -unsigned short _currentTxCount; -unsigned short _txBufferLength; -#define UART_TX_BUFFER_SIZE 258 -unsigned char _txBuffer[UART_TX_BUFFER_SIZE]; -// -unsigned char *_currentRxByte; -unsigned short _currentRxCount; -unsigned short _rxBufferLength; -#define UART_RX_BUFFER_SIZE 20 -unsigned char _rxBuffer[UART_RX_BUFFER_SIZE]; -// -unsigned char *_textMessage = "OpenIR\r\n"; -// -#define UART_MODE_WAITING_FOR_DATA 0 -#define UART_MODE_RECEIVING_DATA 1 -unsigned char _uartMode = UART_MODE_WAITING_FOR_DATA; - -// -// Commands which this remote control can understand. -// -#define COMMAND_GET_ID 1 -#define COMMAND_SET_ID 2 -#define COMMAND_GET_CARRIER_FREQUENCY 3 -#define COMMAND_SET_CARRIER_FREQUENCY 4 -#define COMMAND_GET_PULSE_DATA 5 -#define COMMAND_SET_PULSE_DATA 6 -#define COMMAND_TRANSMIT_PULSE_DATA 7 -#define COMMAND_TRANSMIT_THIS_DATA 8 -#define COMMAND_TIME_LAPSE 9 -#define COMMAND_RESET 10 -#define COMMAND_POWER_LED_ENABLED 11 - -// -// Error codes whch can be sent back to the calling application. -// -#define EC_OK 0 -#define EC_UNKNOWN_COMMAND 1 -#define EC_RX_BUFFER_OVERFLOW 2 - -// -// Generic method for sending a response. -// -void SendResponse(unsigned char *buffer, unsigned char length) -{ - _txBufferLength = length; - _currentTxByte = buffer; - _currentTxCount = 0; - UARTPORT(DR = _txBufferLength + 1); - UARTPORT(CR2_TIEN = 1); -} - -// -// Send a negative acknowledgement to the requester along with an error code. -// -void SendNAK(unsigned char errorCode) -{ - _txBuffer[0] = errorCode; - SendResponse(_txBuffer, 1); -} - -// -// Send an acknowledgement to the requester. -// -void SendACK() -{ - _txBuffer[0] = EC_OK; - SendResponse(_txBuffer, 1); -} - -//-------------------------------------------------------------------------------- -// -// Write the a block of data into EEPROM. -// -void WriteDataToEEPROM(unsigned char *data, int length, unsigned char *destination) -{ - // - // Check if the EEPROM is write-protected. If it is then unlock the EEPROM. - // - if (FLASH_IAPSR_DUL == 0) - { - FLASH_DUKR = 0xae; - FLASH_DUKR = 0x56; - } - // - // Write the data to the EEPROM. - // - for (int index = 0; index < length; index++) - { - *destination++ = *data++; - } - // - // Now write protect the EEPROM. - // - FLASH_IAPSR_DUL = 0; -} - - -// -// Setup the Rx buffers/counters ready to receive data. -// -void SetupRxBuffer() -{ - _currentRxByte = _rxBuffer; - _currentRxCount = 0; - _rxBufferLength = UART_RX_BUFFER_SIZE; - _uartMode = UART_MODE_WAITING_FOR_DATA; -} - -// -// Transmit the IR pulse data. -// -void TransmitPulseData() -{ - _currentState = STATE_RUNNING; - _currentPulse = 0; - _pulseDataAddress = (char *) (EEPROM_PULSE_DATA + 1); - TIM2_ARRH = *_pulseDataAddress++; - TIM2_ARRL = *_pulseDataAddress++; - PD_ODR_ODR3 = *_pulseDataAddress++; - // - // Now we have everything ready we need to force the Timer 2 counters to - // reload and enable Timers 1 & 2. - // - TIM2_CR1_URS = 1; - TIM2_EGR_UG = 1; - TIM1_CR1_CEN = 1; - TIM2_CR1_CEN = 1; -} - -// -// Process the data in the Rx buffer. -// -void ProcessUARTData() -{ - switch (_rxBuffer[1]) - { - case COMMAND_GET_ID: - break; - case COMMAND_SET_ID: - break; - case COMMAND_GET_CARRIER_FREQUENCY: - break; - case COMMAND_SET_CARRIER_FREQUENCY: - break; - case COMMAND_GET_PULSE_DATA: - SendResponse(EEPROM_PULSE_DATA, ((*EEPROM_PULSE_DATA) * 3) + 1); - break; - case COMMAND_SET_PULSE_DATA: - break; - case COMMAND_TRANSMIT_PULSE_DATA: - TransmitPulseData(); - SendACK(); - break; - default: - SendNAK(EC_UNKNOWN_COMMAND); - break; - } - _uartMode = UART_MODE_WAITING_FOR_DATA; -} - -//-------------------------------------------------------------------------------- -// -// Process the interrupt generated by the pressing of the button. -// -// This ISR makes the assumption that we only have on incoming interrupt on Port D. -// -#pragma vector = 8 -__interrupt void EXTI_PORTD_IRQHandler(void) -{ - if (_currentState != STATE_RUNNING) - { - TransmitPulseData(); - } -} - -//-------------------------------------------------------------------------------- -// -// Timer 2 Overflow handler. -// -#pragma vector = TIM2_OVR_UIF_vector -__interrupt void TIM2_UPD_OVF_IRQHandler(void) -{ - _currentPulse++; - if (_currentPulse == _numberOfPulses) - { - // - // We have processed the pulse data so stop now. - // - PD_ODR_ODR3 = 0; - TIM2_CR1_CEN = 0; - TIM1_CR1_CEN = 0; // Stop Timer 1. - _currentState = STATE_WAITING_FOR_USER; - } - else - { - TIM2_ARRH = *_pulseDataAddress++; - TIM2_ARRL = *_pulseDataAddress++; - PD_ODR_ODR3 = *_pulseDataAddress++; - TIM2_CR1_URS = 1; - TIM2_EGR_UG = 1; - } - // - // Reset the interrupt otherwise it will fire again straight away. - // - TIM2_SR1_UIF = 0; -} - -//-------------------------------------------------------------------------------- -// -// UART Transmit Buffer Empty handler. -// -#pragma vector = UARTPORT(T_TXE_vector) -__interrupt void UART_T_TXE_IRQHandler(void) -{ - if (_currentTxCount < _txBufferLength) - { - UARTPORT(DR = *_currentTxByte++); - _currentTxCount++; - } - else - { - UARTPORT(CR2_TIEN = 0); - } -} - -//-------------------------------------------------------------------------------- -// -// UART Receive Buffer Not Empty handler. -// -#pragma vector = UARTPORT(R_RXNE_vector) -__interrupt void UART_R_RXNE_IRQHandler(void) -{ - unsigned char dataByte = UARTPORT(DR); - if ((_uartMode == UART_MODE_WAITING_FOR_DATA) && (dataByte == 0xaa)) - { - SetupRxBuffer(); - _uartMode = UART_MODE_RECEIVING_DATA; - } - else - { - if (_uartMode == UART_MODE_RECEIVING_DATA) - { - if (_currentRxCount < (UART_RX_BUFFER_SIZE - 1)) - { - *_currentRxByte++ = dataByte; - _currentRxCount++; - if (_currentRxCount > 1) - { - if ((_rxBuffer[0] - 1) == _currentRxCount) - { - ProcessUARTData(); - } - } - } - else - { - // - // If we get here we have filled the UART Rx buffer. - // Not a lot we can do really so reset the system to - // wait for a new command. - // - SendNAK(EC_RX_BUFFER_OVERFLOW); - _uartMode = UART_MODE_WAITING_FOR_DATA; - } - } - } -} - -//-------------------------------------------------------------------------------- -// -// Setup Timer 2 ready to process the pulse data. -// -void SetupTimer2() -{ - TIM2_PSCR = _prescalar; - TIM2_IER_UIE = 1; // Enable the update interrupts. -} - -//-------------------------------------------------------------------------------- -// -// Now set up the ports. -// -// PD3 - IR Pulse signal. -// PD4 - Input pin indicating that the user wishes to trigger the camera. -// -void SetupPorts() -{ - PD_ODR = 0; // All pins are turned off. - // - // PD3 is the output for the IR control. - // - PD_DDR_DDR3 = 1; - PD_CR1_C13 = 1; - PD_CR2_C23 = 1; - // - // Now configure the input pin. - // - PD_DDR_DDR4 = 0; // PD4 is input. - PD_CR1_C14 = 1; // PD4 is floating input. - PD_CR2_C24 = 1; - // - // Set up the interrupt. - // - EXTI_CR1_PDIS = 1; // Interrupt on rising edge. - EXTI_CR2_TLIS = 1; // Rising edge only. -} - -//-------------------------------------------------------------------------------- -// -// Set up Timer 1, channel 4 to output a PWM signal (the carrier signal). -// -void SetupTimer1() -{ - TIM1_ARRH = 0x00; // Reload counter = 51 - TIM1_ARRL = 0x33; - TIM1_PSCRH = 0; // Prescalar = 0 (i.e. 1) - TIM1_PSCRL = 0; - // - // Now configure Timer 1, channel 4. - // - TIM1_CCMR4_OC4M = 7; // Set up to use PWM mode 2. - TIM1_CCER2_CC4E = 1; // Output is enabled. - TIM1_CCER2_CC4P = 0; // Active is defined as high. - TIM1_CCR4H = 0x00; // 26 = 50% duty cycle (based on TIM1_ARR). - TIM1_CCR4L = 0x1a; - TIM1_BKR_MOE = 1; // Enable the main output. -} - -//-------------------------------------------------------------------------------- -// -// Setup the UART to run at 57600 baud, no parity, one stop bit, 8 data bits. -// -// Important: This relies upon the system clock being set to run at 2 MHz. -// -void SetupUART() -{ - unsigned char tmp = UARTPORT(SR); - tmp = UARTPORT(DR); - // - // Reset the UART registers to the reset values. - // - UARTPORT(CR1 = 0); - UARTPORT(CR2 = 0); - UARTPORT(CR4 = 0); - UARTPORT(CR3 = 0); -#if defined USE_UART1 - UARTPORT(GTR = 0); - UARTPORT(PSCR = 0); -#endif - // - // Now setup the port to 57600,n,8,1. - // - UARTPORT(CR1_M = 0); // 8 Data bits. - UARTPORT(CR1_PCEN = 0); // Disable parity. - UARTPORT(CR3_STOP = 0); // 1 stop bit. - UARTPORT(BRR2 = 0x03); // Set the baud rate registers to 57600 baud - UARTPORT(BRR1 = 0x02); // based upon a 2 MHz system clock. - // - // Disable the transmitter and receiver. - // - UARTPORT(CR2_TEN = 0); // Disable transmit. - UARTPORT(CR2_REN = 0); // Disable receive. - SetupRxBuffer(); - // - // Turn on the UART transmit, receive and the UART clock. - // - UARTPORT(CR2_TEN = 1); - UARTPORT(CR2_RIEN = 1); - UARTPORT(CR2_REN = 1); -} - -//-------------------------------------------------------------------------------- -// -// Main program loop. -// -void main() -{ - __disable_interrupt(); - _pulseDataAddress = (char *) EEPROM_PULSE_DATA; - _numberOfPulses = *_pulseDataAddress++; - SetupPorts(); - SetupUART(); - SetupTimer2(); - SetupTimer1(); - __enable_interrupt(); - while (1) - { - __wait_for_interrupt(); - } -} - diff --git a/stm8-example/STM8_Demo.dep b/stm8-example/STM8_Demo.dep index e0871c0..8ca57d8 100644 --- a/stm8-example/STM8_Demo.dep +++ b/stm8-example/STM8_Demo.dep @@ -5,230 +5,145 @@ Debug - $PROJ_DIR$\src\irext\src\ir_tv_control.c - $PROJ_DIR$\src\irext\src\ir_utils.c - $PROJ_DIR$\src\main.c - $PROJ_DIR$\src\lib\src\stm8s_clk.c - $PROJ_DIR$\src\lib\src\stm8s_gpio.c $PROJ_DIR$\src\stm8s_it.c - $PROJ_DIR$\src\irext\src\ir_ac_parse_parameter.c - $PROJ_DIR$\src\irext\src\ir_decode.c - $PROJ_DIR$\src\irext\src\ir_ac_build_frame.c - $PROJ_DIR$\src\irext\src\ir_ac_binary_parse.c - $PROJ_DIR$\src\irext\src\ir_ac_control.c - $PROJ_DIR$\src\irext\src\ir_ac_parse_forbidden_info.c - $PROJ_DIR$\src\irext\src\ir_ac_parse_frame_info.c - $PROJ_DIR$\src\irext\src\ir_ac_apply.c + $PROJ_DIR$\src\lib\src\stm8s_gpio.c + $PROJ_DIR$\src\lib\src\stm8s_tim4.c + $PROJ_DIR$\src\lib\src\stm8s_uart3.c + $PROJ_DIR$\src\lib\src\stm8s_clk.c + $PROJ_DIR$\Debug\Obj\ir_ac_control.__cstat.et + $PROJ_DIR$\src\main.h + $TOOLKIT_DIR$\config\lnkstm8s207k8.icf + $PROJ_DIR$\Debug\Obj\stm8s_clk.pbi + $PROJ_DIR$\src\lib\inc\stm8s_uart1.h + $PROJ_DIR$\Debug\Obj\ir_ac_parse_frame_info.o + $PROJ_DIR$\Debug\Obj\ir_ac_build_frame.o + $PROJ_DIR$\Debug\Obj\ir_ac_binary_parse.o + $PROJ_DIR$\Debug\Obj\stm8s_it.__cstat.et + $PROJ_DIR$\src\lib\inc\stm8s_spi.h + $PROJ_DIR$\Debug\Obj\stm8s_uart3.o + $PROJ_DIR$\src\irext\include\ir_ac_control.h + $PROJ_DIR$\src\irext\include\ir_utils.h + $TOOLKIT_DIR$\inc\c\DLib_Product.h + $PROJ_DIR$\src\irext\include\ir_ac_parse_parameter.h + $PROJ_DIR$\src\irext\include\ir_ac_build_frame.h + $PROJ_DIR$\src\lib\inc\stm8s_adc2.h + $PROJ_DIR$\Debug\Obj\main.o + $PROJ_DIR$\Debug\Obj\ir_ac_parse_forbidden_info.__cstat.et + $TOOLKIT_DIR$\lib\dlstm8sln.a + $PROJ_DIR$\Debug\Obj\stm8s_clk.__cstat.et + $PROJ_DIR$\src\irext\include\ir_decode.h + $PROJ_DIR$\Debug\Obj\ir_ac_apply.__cstat.et + $PROJ_DIR$\Debug\Obj\ir_decode.__cstat.et + $PROJ_DIR$\Debug\Obj\ir_ac_parse_parameter.o + $PROJ_DIR$\Debug\Obj\stm8s_gpio.__cstat.et + $PROJ_DIR$\Debug\Obj\ir_ac_build_frame.__cstat.et + $PROJ_DIR$\Debug\Obj\ir_ac_parse_forbidden_info.o + $PROJ_DIR$\Debug\Obj\ir_tv_control.__cstat.et + $TOOLKIT_DIR$\lib\dlstm8sln.h + $TOOLKIT_DIR$\inc\c\ysizet.h + $PROJ_DIR$\src\lib\inc\stm8s_flash.h + $PROJ_DIR$\src\lib\inc\stm8s_uart3.h + $TOOLKIT_DIR$\inc\c\intrinsics.h + $PROJ_DIR$\src\lib\inc\stm8s_beep.h + $PROJ_DIR$\src\lib\inc\stm8s_awu.h + $PROJ_DIR$\Debug\Obj\stm8s_tim4.pbi + $PROJ_DIR$\Debug\Obj\stm8s_uart3.__cstat.et + $PROJ_DIR$\Debug\Obj\main.__cstat.et + $PROJ_DIR$\Debug\Obj\ir_ac_control.o + $PROJ_DIR$\Debug\Obj\ir_ac_control.pbi + $TOOLKIT_DIR$\inc\c\yvals.h + $PROJ_DIR$\src\lib\inc\stm8s_tim1.h + $TOOLKIT_DIR$\inc\c\ystdio.h + $PROJ_DIR$\Debug\Obj\main.pbi + $PROJ_DIR$\src\lib\inc\stm8s_gpio.h + $PROJ_DIR$\src\lib\inc\stm8s_tim3.h + $PROJ_DIR$\Debug\Obj\ir_ac_parse_frame_info.__cstat.et + $TOOLKIT_DIR$\lib\dbgstm8sln.a + $PROJ_DIR$\src\irext\include\ir_ac_parse_forbidden_info.h + $PROJ_DIR$\Debug\Exe\templproj.out + $PROJ_DIR$\Debug\Obj\ir_ac_binary_parse.__cstat.et + $PROJ_DIR$\Debug\Obj\stm8s_tim4.__cstat.et + $PROJ_DIR$\Debug\Obj\stm8s_clk.o + $TOOLKIT_DIR$\inc\c\DLib_Defaults.h + $TOOLKIT_DIR$\config\math_small.xcl + $PROJ_DIR$\Debug\Obj\ir_ac_parse_parameter.__cstat.et + $PROJ_DIR$\src\lib\inc\stm8s.h + $PROJ_DIR$\Debug\Obj\ir_utils.__cstat.et $PROJ_DIR$\src\lib\inc\stm8s_rst.h $PROJ_DIR$\Debug\Obj\stm8s_it.o $PROJ_DIR$\Debug\Obj\stm8s_tim4.o - $PROJ_DIR$\Debug\Obj\ir_ac_control.o - $PROJ_DIR$\src\irext\include\ir_ac_parse_forbidden_info.h - $PROJ_DIR$\Debug\Exe\templproj.out $PROJ_DIR$\Debug\Obj\stm8s_gpio.pbi - $TOOLKIT_DIR$\inc\c\intrinsics.h - $PROJ_DIR$\src\lib\inc\stm8s.h - $PROJ_DIR$\Debug\Obj\ir_ac_binary_parse.__cstat.et - $PROJ_DIR$\Debug\Obj\ir_ac_parse_parameter.__cstat.et - $PROJ_DIR$\Debug\Obj\main.__cstat.et - $PROJ_DIR$\Debug\Obj\stm8s_tim4.__cstat.et - $PROJ_DIR$\Debug\Obj\stm8s_clk.o - $PROJ_DIR$\Debug\Obj\main.pbi - $TOOLKIT_DIR$\inc\c\DLib_Defaults.h - $PROJ_DIR$\src\lib\inc\stm8s_uart3.h - $TOOLKIT_DIR$\lib\dbgstm8sln.a - $TOOLKIT_DIR$\config\math_small.xcl - $PROJ_DIR$\Debug\Obj\ir_utils.__cstat.et - $TOOLKIT_DIR$\inc\c\ystdio.h - $PROJ_DIR$\src\lib\inc\stm8s_awu.h - $TOOLKIT_DIR$\inc\c\yvals.h - $PROJ_DIR$\src\lib\inc\stm8s_beep.h - $PROJ_DIR$\Debug\Obj\stm8s_tim4.pbi - $PROJ_DIR$\src\lib\inc\stm8s_gpio.h - $PROJ_DIR$\Debug\Obj\ir_ac_parse_frame_info.__cstat.et - $PROJ_DIR$\Debug\Obj\stm8s_uart3.__cstat.et - $PROJ_DIR$\Debug\Obj\ir_ac_control.pbi - $PROJ_DIR$\src\lib\inc\stm8s_tim1.h - $PROJ_DIR$\src\lib\inc\stm8s_tim3.h - $PROJ_DIR$\src\irext\include\ir_ac_build_frame.h - $PROJ_DIR$\Debug\Obj\ir_ac_parse_forbidden_info.__cstat.et - $PROJ_DIR$\Debug\Obj\ir_ac_apply.__cstat.et - $PROJ_DIR$\Debug\Obj\ir_decode.__cstat.et - $PROJ_DIR$\Debug\Obj\stm8s_it.__cstat.et - $PROJ_DIR$\Debug\Obj\ir_ac_build_frame.__cstat.et - $PROJ_DIR$\Debug\Obj\ir_ac_control.__cstat.et - $PROJ_DIR$\Debug\Obj\stm8s_clk.__cstat.et - $PROJ_DIR$\Debug\Obj\ir_tv_control.__cstat.et - $PROJ_DIR$\Debug\Obj\stm8s_gpio.__cstat.et - $PROJ_DIR$\src\lib\inc\stm8s_flash.h - $PROJ_DIR$\src\main.h - $PROJ_DIR$\src\irext\include\ir_decode.h - $PROJ_DIR$\Debug\Obj\ir_ac_binary_parse.o - $TOOLKIT_DIR$\lib\dlstm8sln.h - $PROJ_DIR$\src\lib\inc\stm8s_spi.h - $PROJ_DIR$\Debug\Obj\stm8s_uart3.o - $PROJ_DIR$\Debug\Obj\ir_ac_parse_forbidden_info.o - $PROJ_DIR$\Debug\Obj\ir_ac_parse_parameter.o - $TOOLKIT_DIR$\inc\c\ysizet.h - $TOOLKIT_DIR$\config\lnkstm8s207k8.icf - $PROJ_DIR$\Debug\Obj\stm8s_clk.pbi - $PROJ_DIR$\src\lib\inc\stm8s_adc2.h - $PROJ_DIR$\src\lib\inc\stm8s_uart1.h - $PROJ_DIR$\src\irext\include\ir_ac_control.h - $PROJ_DIR$\Debug\Obj\ir_ac_parse_frame_info.o - $PROJ_DIR$\Debug\Obj\ir_ac_build_frame.o - $PROJ_DIR$\src\irext\include\ir_utils.h - $PROJ_DIR$\Debug\Obj\main.o - $TOOLKIT_DIR$\inc\c\DLib_Product.h - $PROJ_DIR$\src\irext\include\ir_ac_parse_parameter.h - $TOOLKIT_DIR$\lib\dlstm8sln.a - $PROJ_DIR$\Debug\Obj\ir_ac_parse_parameter.pbi - $PROJ_DIR$\src\lib\inc\stm8s_itc.h - $PROJ_DIR$\src\irext\include\ir_ac_parse_frame_info.h - $PROJ_DIR$\Debug\Obj\ir_utils.pbi - $TOOLKIT_DIR$\inc\c\stdio.h - $PROJ_DIR$\src\stm8s_conf.h - $TOOLKIT_DIR$\inc\c\ycheck.h - $PROJ_DIR$\Debug\Exe\STM8_Demo.hex - $TOOLKIT_DIR$\inc\c\string.h + $PROJ_DIR$\src\irext\src\ir_utils.c + $PROJ_DIR$\src\irext\src\ir_decode.c + $PROJ_DIR$\src\main.c + $PROJ_DIR$\src\irext\src\ir_ac_parse_parameter.c + $PROJ_DIR$\src\irext\src\ir_tv_control.c + $PROJ_DIR$\src\irext\src\ir_ac_apply.c + $PROJ_DIR$\src\irext\src\ir_ac_binary_parse.c + $PROJ_DIR$\src\irext\src\ir_ac_build_frame.c + $PROJ_DIR$\src\irext\src\ir_ac_parse_forbidden_info.c + $PROJ_DIR$\src\irext\src\ir_ac_parse_frame_info.c + $PROJ_DIR$\src\irext\src\ir_ac_control.c + $PROJ_DIR$\Debug\Obj\ir_ac_parse_frame_info.pbi + $PROJ_DIR$\Debug\Obj\ir_utils.o + $PROJ_DIR$\src\lib\inc\stm8s_clk.h + $TOOLKIT_DIR$\inc\c\DLib_Threads.h + $PROJ_DIR$\Debug\Obj\ir_ac_build_frame.pbi + $PROJ_DIR$\src\lib\inc\stm8s_tim4.h + $PROJ_DIR$\Debug\Obj\ir_decode.pbi + $PROJ_DIR$\src\lib\inc\stm8s_i2c.h $PROJ_DIR$\src\irext\include\ir_ac_apply.h + $PROJ_DIR$\Debug\Obj\ir_decode.o + $PROJ_DIR$\Debug\Obj\ir_ac_apply.pbi + $PROJ_DIR$\Debug\Obj\ir_ac_parse_parameter.pbi + $TOOLKIT_DIR$\inc\c\string.h + $PROJ_DIR$\src\irext\include\ir_tv_control.h + $PROJ_DIR$\Debug\Obj\ir_utils.pbi + $PROJ_DIR$\Debug\Obj\STM8_Demo.pbd + $PROJ_DIR$\Debug\Obj\ir_ac_binary_parse.pbi + $PROJ_DIR$\src\irext\include\ir_ac_parse_frame_info.h + $PROJ_DIR$\Debug\Obj\stm8s_uart3.pbi $PROJ_DIR$\Debug\Obj\ir_tv_control.o $PROJ_DIR$\src\irext\include\ir_defs.h - $PROJ_DIR$\src\lib\inc\stm8s_iwdg.h - $PROJ_DIR$\Debug\Obj\ir_ac_binary_parse.pbi - $PROJ_DIR$\Debug\Obj\ir_decode.o - $PROJ_DIR$\Debug\Obj\ir_tv_control.pbi - $TOOLKIT_DIR$\inc\c\xencoding_limits.h - $PROJ_DIR$\Debug\Obj\STM8_Demo.pbd - $PROJ_DIR$\Debug\Obj\stm8s_gpio.o - $PROJ_DIR$\src\lib\inc\stm8s_tim2.h $PROJ_DIR$\Debug\Obj\ir_ac_apply.o - $PROJ_DIR$\src\lib\inc\stm8s_exti.h - $PROJ_DIR$\Debug\Obj\stm8s_uart3.pbi - $PROJ_DIR$\Debug\Obj\stm8s_it.pbi - $PROJ_DIR$\src\lib\src\stm8s_tim4.c + $PROJ_DIR$\src\lib\inc\stm8s_itc.h + $PROJ_DIR$\src\stm8s_conf.h $TOOLKIT_DIR$\inc\c\stdlib.h $PROJ_DIR$\src\stm8s_it.h $PROJ_DIR$\src\irext\include\ir_ac_binary_parse.h + $PROJ_DIR$\src\lib\inc\stm8s_tim2.h $PROJ_DIR$\Debug\Obj\ir_ac_parse_forbidden_info.pbi - $PROJ_DIR$\src\irext\include\ir_tv_control.h - $PROJ_DIR$\Debug\Obj\ir_ac_apply.pbi + $PROJ_DIR$\Debug\Exe\STM8_Demo.hex + $PROJ_DIR$\Debug\Obj\ir_tv_control.pbi + $PROJ_DIR$\src\lib\inc\stm8s_exti.h $PROJ_DIR$\src\lib\inc\stm8s_wwdg.h - $PROJ_DIR$\src\lib\inc\stm8s_clk.h - $PROJ_DIR$\src\lib\inc\stm8s_tim4.h - $PROJ_DIR$\Debug\Obj\ir_utils.o - $PROJ_DIR$\src\lib\src\stm8s_uart3.c - $PROJ_DIR$\Debug\Obj\ir_ac_parse_frame_info.pbi - $PROJ_DIR$\src\lib\inc\stm8s_i2c.h - $PROJ_DIR$\Debug\Obj\ir_ac_build_frame.pbi - $PROJ_DIR$\Debug\Obj\ir_decode.pbi - $TOOLKIT_DIR$\inc\c\DLib_Threads.h + $TOOLKIT_DIR$\inc\c\stdio.h + $TOOLKIT_DIR$\inc\c\xencoding_limits.h + $TOOLKIT_DIR$\inc\c\ycheck.h + $PROJ_DIR$\Debug\Obj\stm8s_gpio.o + $PROJ_DIR$\src\lib\inc\stm8s_iwdg.h + $PROJ_DIR$\Debug\Obj\stm8s_it.pbi - $PROJ_DIR$\src\irext\src\ir_tv_control.c + $PROJ_DIR$\src\stm8s_it.c ICCSTM8 - 87 + 65 __cstat - 53 + 13 BICOMP - 92 + 117 ICCSTM8 - 85 83 36 29 59 74 93 117 64 88 57 81 34 69 106 - - - BICOMP - 69 57 83 59 88 106 64 93 74 81 85 36 29 117 34 - - - - - $PROJ_DIR$\src\irext\src\ir_utils.c - - - ICCSTM8 - 111 - - - __cstat - 33 - - - BICOMP - 80 - - - - - ICCSTM8 - 72 88 57 81 83 36 29 59 74 93 117 64 34 69 106 - - - BICOMP - 83 69 34 93 74 88 57 81 36 59 106 64 29 117 72 - - - - - $PROJ_DIR$\src\main.c - - - ICCSTM8 - 73 - - - __cstat - 25 - - - BICOMP - 28 - - - - - ICCSTM8 - 85 83 36 29 59 74 93 117 64 22 82 67 35 37 109 98 55 39 114 78 89 14 60 43 96 44 110 68 30 108 21 102 81 34 56 57 88 69 106 - - - BICOMP - 59 22 83 36 44 56 114 102 64 93 74 109 60 81 29 117 82 35 55 89 96 108 69 88 85 21 67 37 98 39 78 14 43 110 68 30 34 57 106 - - - - - $PROJ_DIR$\src\lib\src\stm8s_clk.c - - - ICCSTM8 - 27 - - - __cstat - 52 - - - BICOMP - 66 - - - - - ICCSTM8 - 109 22 82 67 35 37 98 55 39 114 78 89 14 60 43 96 44 110 68 30 108 21 - - - BICOMP - 89 22 35 82 55 96 108 109 114 60 44 21 67 37 98 39 78 14 43 110 68 30 + 104 62 102 21 40 39 81 110 36 50 86 101 116 64 14 47 106 51 84 9 37 111 38 6 26 112 114 46 59 34 18 113 82 35 48 99 16 92 @@ -237,30 +152,49 @@ ICCSTM8 - 95 + 115 __cstat - 54 + 30 BICOMP - 20 + 67 ICCSTM8 - 39 22 82 67 35 37 109 98 55 114 78 89 14 60 43 96 44 110 68 30 108 21 - - - BICOMP - 39 21 22 37 14 68 67 98 78 43 110 30 82 35 109 55 114 89 60 96 44 108 + 50 62 102 21 40 39 81 110 36 86 101 116 64 14 47 106 51 84 9 37 111 38 - $PROJ_DIR$\src\stm8s_it.c + $PROJ_DIR$\src\lib\src\stm8s_tim4.c + + + ICCSTM8 + 66 + + + __cstat + 57 + + + BICOMP + 41 + + + + + ICCSTM8 + 84 62 102 21 40 39 81 110 36 50 86 101 116 64 14 47 106 51 9 37 111 38 + + + + + $PROJ_DIR$\src\lib\src\stm8s_uart3.c ICCSTM8 @@ -268,57 +202,82 @@ __cstat - 49 + 42 BICOMP - 100 + 97 ICCSTM8 - 103 22 82 67 35 37 109 98 55 39 114 78 89 14 60 43 96 44 110 68 30 108 21 56 57 81 83 36 29 59 74 93 117 64 34 88 69 106 - - - BICOMP - 22 88 89 35 36 82 55 96 108 83 29 56 109 114 60 44 106 64 117 103 21 67 37 98 39 78 14 43 110 68 30 57 81 69 34 93 59 74 + 37 62 102 21 40 39 81 110 36 50 86 101 116 64 14 47 106 51 84 9 111 38 - [ROOT_NODE] - - - ILINK - 19 - - - - - $PROJ_DIR$\src\irext\src\ir_ac_parse_parameter.c + $PROJ_DIR$\src\lib\src\stm8s_clk.c ICCSTM8 - 63 + 58 __cstat - 24 + 25 BICOMP - 77 + 8 ICCSTM8 - 102 83 36 29 59 74 93 117 64 81 34 85 72 88 57 69 106 75 + 81 62 102 21 40 39 110 36 50 86 101 116 64 14 47 106 51 84 9 37 111 38 + + + + + $PROJ_DIR$\Debug\Exe\templproj.out + + + OBJCOPY + 108 + + + + + ILINK + 60 7 100 12 11 44 32 10 29 88 98 80 22 58 115 65 66 15 24 53 + + + + + $PROJ_DIR$\src\irext\src\ir_utils.c + + + ICCSTM8 + 80 + + + __cstat + 63 BICOMP - 81 64 83 59 75 85 93 74 36 57 69 88 72 29 117 34 106 102 + 93 + + + + + ICCSTM8 + 17 99 26 112 114 46 59 34 18 113 82 35 48 16 92 + + + BICOMP + 114 16 48 113 18 99 26 112 46 34 92 35 59 82 17 @@ -327,65 +286,61 @@ ICCSTM8 - 91 + 88 __cstat - 48 + 28 BICOMP - 116 + 85 ICCSTM8 - 81 83 36 29 59 74 93 117 64 34 102 85 57 88 69 106 72 45 86 + 112 114 46 59 34 18 113 82 35 48 103 91 26 99 16 92 17 20 87 BICOMP - 64 83 72 57 85 86 117 36 81 102 45 34 29 69 88 93 59 74 106 + 35 114 17 26 91 87 82 46 112 103 20 48 59 16 99 113 34 18 92 - $PROJ_DIR$\src\irext\src\ir_ac_build_frame.c + $PROJ_DIR$\src\main.c ICCSTM8 - 71 + 22 __cstat - 50 + 43 BICOMP - 115 + 49 ICCSTM8 - 45 88 57 81 83 36 29 59 74 93 117 64 34 69 106 - - - BICOMP - 69 83 29 36 81 64 57 88 106 34 93 117 45 59 74 + 91 114 46 59 34 18 113 82 35 62 102 21 40 39 81 110 36 50 86 101 116 64 14 47 106 51 84 9 37 111 38 103 112 48 6 26 99 16 92 - $PROJ_DIR$\src\irext\src\ir_ac_binary_parse.c + $PROJ_DIR$\src\irext\src\ir_ac_parse_parameter.c ICCSTM8 - 58 + 29 __cstat - 23 + 61 BICOMP @@ -395,92 +350,38 @@ ICCSTM8 - 104 88 57 81 83 36 29 59 74 93 117 64 34 69 106 + 103 114 46 59 34 18 113 82 35 112 48 91 17 99 26 16 92 19 BICOMP - 88 69 36 59 81 34 83 93 74 57 106 64 29 117 104 + 112 35 114 34 19 91 113 18 46 26 16 99 17 59 82 48 92 103 - $PROJ_DIR$\src\irext\src\ir_ac_control.c + $PROJ_DIR$\src\irext\src\ir_tv_control.c ICCSTM8 - 17 + 98 __cstat - 51 + 33 BICOMP - 42 + 109 ICCSTM8 - 102 83 36 29 59 74 93 117 64 81 34 85 69 88 104 57 106 75 18 79 72 + 91 114 46 59 34 18 113 82 35 99 26 112 48 16 92 BICOMP - 64 79 81 104 59 83 85 75 93 74 36 69 57 18 72 29 117 34 88 102 106 - - - - - $PROJ_DIR$\src\irext\src\ir_ac_parse_forbidden_info.c - - - ICCSTM8 - 62 - - - __cstat - 46 - - - BICOMP - 105 - - - - - ICCSTM8 - 81 83 36 29 59 74 93 117 64 34 102 85 57 88 69 106 18 - - - BICOMP - 34 18 64 83 85 36 117 81 102 57 29 69 88 93 59 74 106 - - - - - $PROJ_DIR$\src\irext\src\ir_ac_parse_frame_info.c - - - ICCSTM8 - 70 - - - __cstat - 40 - - - BICOMP - 113 - - - - - ICCSTM8 - 102 83 36 29 59 74 93 117 64 81 34 85 72 88 57 69 106 79 - - - BICOMP - 93 79 88 85 117 36 34 83 106 81 72 29 64 102 59 74 57 69 + 16 26 114 34 99 92 35 113 18 112 91 46 59 82 48 @@ -489,11 +390,92 @@ ICCSTM8 - 97 + 100 __cstat - 47 + 27 + + + BICOMP + 89 + + + + + ICCSTM8 + 17 99 26 112 114 46 59 34 18 113 82 35 48 16 92 87 + + + BICOMP + 34 46 99 92 112 48 114 113 18 87 26 16 35 59 82 17 + + + + + $PROJ_DIR$\src\irext\src\ir_ac_binary_parse.c + + + ICCSTM8 + 12 + + + __cstat + 56 + + + BICOMP + 95 + + + + + ICCSTM8 + 105 99 26 112 114 46 59 34 18 113 82 35 48 16 92 + + + BICOMP + 99 16 46 34 112 48 114 113 18 26 92 35 59 82 105 + + + + + $PROJ_DIR$\src\irext\src\ir_ac_build_frame.c + + + ICCSTM8 + 11 + + + __cstat + 31 + + + BICOMP + 83 + + + + + ICCSTM8 + 20 99 26 112 114 46 59 34 18 113 82 35 48 16 92 + + + BICOMP + 16 114 59 46 112 35 26 99 92 48 113 82 20 34 18 + + + + + $PROJ_DIR$\src\irext\src\ir_ac_parse_forbidden_info.c + + + ICCSTM8 + 32 + + + __cstat + 23 BICOMP @@ -503,82 +485,76 @@ ICCSTM8 - 72 88 57 81 83 36 29 59 74 93 117 64 34 69 106 86 + 112 114 46 59 34 18 113 82 35 48 103 91 26 99 16 92 54 BICOMP - 59 36 88 106 81 34 83 93 74 86 57 69 64 29 117 72 + 48 54 35 114 91 46 82 112 103 26 59 16 99 113 34 18 92 - $PROJ_DIR$\Debug\Exe\templproj.out + $PROJ_DIR$\src\irext\src\ir_ac_parse_frame_info.c - OBJCOPY - 84 + ICCSTM8 + 10 + + + __cstat + 52 + + + BICOMP + 79 + + ICCSTM8 + 103 114 46 59 34 18 113 82 35 112 48 91 17 99 26 16 92 96 + + + BICOMP + 113 96 99 91 82 46 48 114 92 112 17 59 35 103 34 18 26 16 + + + + + $PROJ_DIR$\src\irext\src\ir_ac_control.c + + + ICCSTM8 + 44 + + + __cstat + 5 + + + BICOMP + 45 + + + + + ICCSTM8 + 103 114 46 59 34 18 113 82 35 112 48 91 16 99 105 26 92 19 54 96 17 + + + BICOMP + 35 96 112 105 34 114 91 19 113 18 46 16 26 54 17 59 82 48 99 103 92 + + + + + [ROOT_NODE] + ILINK - 32 65 97 58 71 17 62 70 63 91 87 111 73 27 95 15 16 61 76 31 - - - - - $PROJ_DIR$\src\lib\src\stm8s_tim4.c - - - ICCSTM8 - 16 - - - __cstat - 26 - - - BICOMP - 38 + 55 - - - ICCSTM8 - 110 22 82 67 35 37 109 98 55 39 114 78 89 14 60 43 96 44 68 30 108 21 - - - BICOMP - 35 22 89 82 55 96 108 109 114 60 44 21 67 37 98 39 78 14 43 110 68 30 - - - - - $PROJ_DIR$\src\lib\src\stm8s_uart3.c - - - ICCSTM8 - 61 - - - __cstat - 41 - - - BICOMP - 99 - - - - - ICCSTM8 - 30 22 82 67 35 37 109 98 55 39 114 78 89 14 60 43 96 44 110 68 108 21 - - - BICOMP - 22 39 21 37 14 68 67 98 78 43 110 30 82 35 109 55 114 89 60 96 44 108 - - diff --git a/stm8-example/settings/STM8_Demo.wsdt b/stm8-example/settings/STM8_Demo.wsdt index 5594d7f..506453e 100644 --- a/stm8-example/settings/STM8_Demo.wsdt +++ b/stm8-example/settings/STM8_Demo.wsdt @@ -181,7 +181,7 @@ 21 - 1849 + 1866 2 0 @@ -200,7 +200,7 @@ 14 - 12 + 15 1 @@ -210,11 +210,11 @@ 1 1 1 - AF00000025001386000001000000108600000100000024D5000001000000239200000100000029E10000060000000F810000050000002081000001000000EA800000010000000D800000010000000C8100000300000001DE0000020000005686000006000000178100000A000000808C0000010000002BE100000100000014810000010000000E8400000100000023D5000002000000008100000300000003E10000040000001F810000010000000E8100007F0000005E8600000B0000005D84000001000000E98000000200000003DE000002000000058400000100000041E100000E00000005810000010000001186000002000000468100000100000005E100000100000060860000030000000A840000010000005D860000030000000784000001000000E880000001000000 + B000000027001386000001000000108600000100000029E1000006000000239200000100000024D500000100000020810000010000000F810000050000000C810000030000000D80000001000000EA8000000100000001DE000002000000178100000B000000568600000600000014810000010000002BE1000001000000808C000001000000008100000300000023D50000020000000E840000010000005E8600000B0000000E8100007F0000001F8100000100000003E100000400000003DE000002000000E9800000020000005D8400000100000041E100000E0000000584000001000000118600000200000005810000010000004681000001000000608600000300000005E10000010000005D860000030000000A84000001000000EB8000000100000002E1000001000000E8800000010000000784000001000000 - 5D00FFFFFFFF0D8400000F8400000884000054840000328100001C810000098400005384000020F1000010F0000000F0000020F0000030F0000060F000001C8F00001D8F00001F8F0000208F0000218F00002AE10000118F00003C8400003D840000408400004C8400003E8400004B8400004D8400003F8400003A8400003B8400005A8400005B840000818400007D840000828400008384000084840000488100001E8F0000E88000000C84000033840000788400001184000003DE000002DE000001DE00002B9200002A9200002692000000DE0000048400000684000032840000778400000784000002840000038400001084000005840000318400000A840000808C000044D500007C8400007E84000023D5000024D50000008800000188000002880000038800000488000005880000558400005684000059840000498100004A810000008200001C820000018200002F8200001682000018820000198200006786000039810000178200000E84000030840000 - 2A001B8F0000030000002CE10000370000000184000008000000188F0000060000000481000010000000158100001D0000004581000007000000239200000000000007E10000330000005F86000028000000208100001F0000000F8100001700000004E100003100000023E10000310000000C8100001400000001E100002E0000000D8000000F0000001A8F000009000000178100001F0000002BE1000036000000008400000A000000148100001C0000004481000004000000008100001100000025E10000330000001F8100001E0000000E8100001600000003E10000300000005D8400000000000022E100003000000000E100002D0000000B8100001300000041E100003D000000198F0000010000000581000011000000168100001E000000518400004E000000438100000500000005E100003200000002E100002F0000000D810000150000005C84000002000000 + 5900FFFFFFFF0D8400000F8400000884000054840000328100001C810000098400005384000020F1000010F0000000F0000020F0000030F0000060F000001C8F00001D8F00001F8F0000208F0000218F00002AE10000118F00003C8400003D840000408400004C8400003E8400004B8400004D8400003F8400003A8400003B8400005A8400005B840000818400007D840000828400008384000084840000488100001E8F0000E88000000C84000033840000788400001184000003DE000002DE000001DE00002B9200002A9200002692000000DE000032840000778400000784000002840000038400001084000005840000318400000A840000808C000044D500007C8400007E84000023D5000024D50000008800000188000002880000038800000488000005880000558400005684000059840000498100004A810000008200001C820000018200002F820000168200001882000019820000678600003981000017820000 + 2E0004840000440000001B8F000003000000158100001D0000000481000010000000188F00000600000001840000080000002CE100003700000007E10000330000002392000000000000458100000700000004E10000310000000F81000017000000208100001F0000005F860000280000000D8000000F00000001E100002E0000000C8100001400000023E10000310000000684000046000000178100001F0000001A8F000009000000148100001C000000008400000A0000002BE1000036000000308400004A0000000E840000480000000081000011000000448100000400000003E10000300000000E810000160000001F8100001E00000025E10000330000000B8100001700000000E100002D00000022E10000300000005D8400000000000041E100003D000000168100001E0000000581000011000000198F00000100000005E10000320000004381000005000000518400004E0000000D8100001900000002E100002F0000005C84000002000000 0 @@ -467,11 +467,11 @@ 1 - 000000000A000000000000000010000001000000FFFFFFFFFFFFFFFF06010000320000000A01000005030000010000000200001004000000010000000000000000000000FFFFFFFF020000000B8500000D850000FFFF02000B004354616262656450616E6500100000010000000000000049000000060100001C03000000000000320000000601000005030000000000004010005602000000FFFEFF0E53006F0075007200630065002000420072006F007700730065007200000000000B85000001000000FFFFFFFFFFFFFFFFFFFEFF0957006F0072006B0073007000610063006500010000000D85000001000000FFFFFFFFFFFFFFFF01000000000000000000000000000000000000000000000001000000FFFFFFFF0B85000001000000FFFFFFFF0B850000000000000080000000000000FFFFFFFFFFFFFFFF00000000820200008007000086020000000000000100000004000000010000000000000000000000058500000000000000000000000000000000000001000000058500000100000005850000000000000080000000000000FFFFFFFFFFFFFFFF00000000F001000080070000F401000000000000010000000400000001000000B5FDFFFF6F000000048500000000000000000000000000000000000001000000048500000100000004850000000000000080000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000100000004000000010000000000000000000000038500000000000000000000000000000000000001000000038500000100000003850000000000000080000001000000FFFFFFFFFFFFFFFF000000000503000080070000090300000100000001000010040000000100000032FDFFFFA5000000FFFFFFFF080000000185000002850000068500000785000008850000098500000A8500000C8500000180008000000100000000000000200300008007000007040000000000000903000080070000F0030000000000004080005608000000FFFEFF0B42007200650061006B0070006F0069006E0074007300000000000185000001000000FFFFFFFFFFFFFFFFFFFEFF054200750069006C006400010000000285000001000000FFFFFFFFFFFFFFFFFFFEFF094400650062007500670020004C006F006700010000000685000001000000FFFFFFFFFFFFFFFFFFFEFF0C4400650063006C00610072006100740069006F006E007300000000000785000001000000FFFFFFFFFFFFFFFFFFFEFF0A5200650066006500720065006E00630065007300000000000885000001000000FFFFFFFFFFFFFFFFFFFEFF0D460069006E006400200069006E002000460069006C0065007300000000000985000001000000FFFFFFFFFFFFFFFFFFFEFF1541006D0062006900670075006F0075007300200044006500660069006E006900740069006F006E007300000000000A85000001000000FFFFFFFFFFFFFFFFFFFEFF0B54006F006F006C0020004F0075007400700075007400000000000C85000001000000FFFFFFFFFFFFFFFF02000000000000000000000000000000000000000000000001000000FFFFFFFF0185000001000000FFFFFFFF01850000000000000000000000000000 + 000000000A000000000000000010000001000000FFFFFFFFFFFFFFFF06010000320000000A01000005030000010000000200001004000000010000000000000000000000FFFFFFFF020000000B8500000D850000FFFF02000B004354616262656450616E6500100000010000000000000049000000060100001C03000000000000320000000601000005030000000000004010005602000000FFFEFF0E53006F0075007200630065002000420072006F007700730065007200000000000B85000001000000FFFFFFFFFFFFFFFFFFFEFF0957006F0072006B0073007000610063006500010000000D85000001000000FFFFFFFFFFFFFFFF01000000000000000000000000000000000000000000000001000000FFFFFFFF0B85000001000000FFFFFFFF0B850000000000000080000000000000FFFFFFFFFFFFFFFF00000000820200008007000086020000000000000100000004000000010000000000000000000000058500000000000000000000000000000000000001000000058500000100000005850000000000000080000000000000FFFFFFFFFFFFFFFF00000000F001000080070000F401000000000000010000000400000001000000B5FDFFFF6F000000048500000000000000000000000000000000000001000000048500000100000004850000000000000080000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000100000004000000010000000000000000000000038500000000000000000000000000000000000001000000038500000100000003850000000000000080000001000000FFFFFFFFFFFFFFFF000000000503000080070000090300000100000001000010040000000100000032FDFFFFA5000000FFFFFFFF080000000185000002850000068500000785000008850000098500000A8500000C8500000180008000000100000000000000200300008007000007040000000000000903000080070000F0030000000000004080005608000000FFFEFF0B42007200650061006B0070006F0069006E0074007300000000000185000001000000FFFFFFFFFFFFFFFFFFFEFF054200750069006C006400010000000285000001000000FFFFFFFFFFFFFFFFFFFEFF094400650062007500670020004C006F006700010000000685000001000000FFFFFFFFFFFFFFFFFFFEFF0C4400650063006C00610072006100740069006F006E007300000000000785000001000000FFFFFFFFFFFFFFFFFFFEFF0A5200650066006500720065006E00630065007300000000000885000001000000FFFFFFFFFFFFFFFFFFFEFF0D460069006E006400200069006E002000460069006C0065007300000000000985000001000000FFFFFFFFFFFFFFFFFFFEFF1541006D0062006900670075006F0075007300200044006500660069006E006900740069006F006E007300000000000A85000001000000FFFFFFFFFFFFFFFFFFFEFF0B54006F006F006C0020004F0075007400700075007400000000000C85000001000000FFFFFFFFFFFFFFFF01000000000000000000000000000000000000000000000001000000FFFFFFFF0185000001000000FFFFFFFF01850000000000000000000000000000 Main - 00200000010000002000FFFF01001100434D4643546F6F6C426172427574746F6E00E10000000000002D000000FFFEFF000000000000000000000000000100000001000000018001E10000000000002E000000FFFEFF000000000000000000000000000100000001000000018003E100000000040030000000FFFEFF0000000000000000000000000001000000010000000180008100000000000011000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000018007E100000000040033000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000018023E100000000040035000000FFFEFF000000000000000000000000000100000001000000018022E100000000040034000000FFFEFF000000000000000000000000000100000001000000018025E100000000040037000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001802BE10000000004003A000000FFFEFF00000000000000000000000000010000000100000001802CE10000000004003B000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6E4281000000000400FFFFFFFFFFFEFF0000000000000000000100000000000000010000007800000002002050FFFFFFFFFFFEFF0096000000000000000300FFFEFF14490052006500780074005F00700072006F00630065007300730055006100720074004D0073006700FFFEFF0C50006100720073006500530075006D006D00610072007900FFFEFF0A5F0048004500410050005F00530049005A0045000000000000000000000000000180218100000000040024000000FFFEFF000000000000000000000000000100000001000000018024E100000000040036000000FFFEFF000000000000000000000000000100000001000000018028E100000000040038000000FFFEFF000000000000000000000000000100000001000000018029E100000000040039000000FFFEFF0000000000000000000000000001000000010000000180028100000000040013000000FFFEFF0000000000000000000000000001000000010000000180298100000000040028000000FFFEFF0000000000000000000000000001000000010000000180278100000000040026000000FFFEFF0000000000000000000000000001000000010000000180288100000000040027000000FFFEFF00000000000000000000000000010000000100000001801D8100000000040020000000FFFEFF00000000000000000000000000010000000100000001801E8100000000040021000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001800B8100000000040017000000FFFEFF00000000000000000000000000010000000100000001800C8100000000000018000000FFFEFF00000000000000000000000000010000000100000001805F860000000000002C000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001800E810000000000001A000000FFFEFF00000000000000000000000000010000000100000001800F810000000000001B000000FFFEFF00000000000000000000000000010000000100000000000000FFFEFF044D00610069006E00E8020000 + 00200000010000002000FFFF01001100434D4643546F6F6C426172427574746F6E00E10000000000002D000000FFFEFF000000000000000000000000000100000001000000018001E10000000000002E000000FFFEFF000000000000000000000000000100000001000000018003E100000000040030000000FFFEFF0000000000000000000000000001000000010000000180008100000000000011000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000018007E100000000040033000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000018023E100000000040035000000FFFEFF000000000000000000000000000100000001000000018022E100000000040034000000FFFEFF000000000000000000000000000100000001000000018025E100000000040037000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001802BE10000000004003A000000FFFEFF00000000000000000000000000010000000100000001802CE10000000004003B000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6E4281000000000400FFFFFFFFFFFEFF0001000000000000000100000000000000010000007800000002002050FFFFFFFFFFFEFF0096000000000000000300FFFEFF14490052006500780074005F00700072006F00630065007300730055006100720074004D0073006700FFFEFF0C50006100720073006500530075006D006D00610072007900FFFEFF0A5F0048004500410050005F00530049005A0045000000000000000000000000000180218100000000040024000000FFFEFF000000000000000000000000000100000001000000018024E100000000040036000000FFFEFF000000000000000000000000000100000001000000018028E100000000040038000000FFFEFF000000000000000000000000000100000001000000018029E100000000040039000000FFFEFF0000000000000000000000000001000000010000000180028100000000040013000000FFFEFF0000000000000000000000000001000000010000000180298100000000040028000000FFFEFF0000000000000000000000000001000000010000000180278100000000040026000000FFFEFF0000000000000000000000000001000000010000000180288100000000040027000000FFFEFF00000000000000000000000000010000000100000001801D8100000000040020000000FFFEFF00000000000000000000000000010000000100000001801E8100000000040021000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001800B8100000000000017000000FFFEFF00000000000000000000000000010000000100000001800C8100000000000018000000FFFEFF00000000000000000000000000010000000100000001805F860000000000002C000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001800E810000000000001A000000FFFEFF00000000000000000000000000010000000100000001800F810000000000001B000000FFFEFF00000000000000000000000000010000000100000000000000FFFEFF044D00610069006E00E8020000 34048 diff --git a/things-example/.gitignore b/things-example/.gitignore deleted file mode 100644 index 727916d..0000000 --- a/things-example/.gitignore +++ /dev/null @@ -1,63 +0,0 @@ -# Built application files -*.apk -*.ap_ - -# Files for the ART/Dalvik VM -*.dex - -# Java class files -*.class - -# Generated files -bin/ -gen/ -out/ - -# Gradle files -.gradle/ -build/ - -# Local configuration file (sdk path, etc) -local.properties - -# Proguard folder generated by Eclipse -proguard/ - -# Log Files -*.log - -# Android Studio Navigation editor temp files -.navigation/ - -# Android Studio captures folder -captures/ - -# IntelliJ -*.iml -.idea/workspace.xml -.idea/tasks.xml -.idea/gradle.xml -.idea/dictionaries -.idea/libraries - -# Keystore files -# Uncomment the following line if you do not want to check your keystore files in. -#*.jks - -# External native build folder generated in Android Studio 2.2 and later -.externalNativeBuild - -# Google Services (e.g. APIs or Firebase) -google-services.json - -# Freeline -freeline.py -freeline/ -freeline_project_description.json - -# fastlane -fastlane/report.xml -fastlane/Preview.html -fastlane/screenshots -fastlane/test_output -fastlane/readme.md \ No newline at end of file diff --git a/things-example/.idea/misc.xml b/things-example/.idea/misc.xml deleted file mode 100644 index ba7052b..0000000 --- a/things-example/.idea/misc.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/things-example/.idea/modules.xml b/things-example/.idea/modules.xml deleted file mode 100644 index e9e0c55..0000000 --- a/things-example/.idea/modules.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/things-example/.idea/runConfigurations.xml b/things-example/.idea/runConfigurations.xml deleted file mode 100644 index 7f68460..0000000 --- a/things-example/.idea/runConfigurations.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/things-example/.idea/vcs.xml b/things-example/.idea/vcs.xml deleted file mode 100644 index 6c0b863..0000000 --- a/things-example/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/things-example/app/.gitignore b/things-example/app/.gitignore deleted file mode 100644 index 796b96d..0000000 --- a/things-example/app/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/build diff --git a/things-example/app/build.gradle b/things-example/app/build.gradle deleted file mode 100644 index da8f59a..0000000 --- a/things-example/app/build.gradle +++ /dev/null @@ -1,28 +0,0 @@ -apply plugin: 'com.android.application' - -android { - compileSdkVersion 26 - defaultConfig { - applicationId "net.irext.irext_things" - minSdkVersion 27 - targetSdkVersion 26 - versionCode 1 - versionName "1.0" - testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" - } - buildTypes { - release { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' - } - } -} - -dependencies { - implementation fileTree(dir: 'libs', include: ['*.jar']) - implementation 'com.android.support.constraint:constraint-layout:1.0.2' - testImplementation 'junit:junit:4.12' - androidTestImplementation 'com.android.support.test:runner:1.0.1' - androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1' - compileOnly 'com.google.android.things:androidthings:+' -} diff --git a/things-example/app/proguard-rules.pro b/things-example/app/proguard-rules.pro deleted file mode 100644 index f1b4245..0000000 --- a/things-example/app/proguard-rules.pro +++ /dev/null @@ -1,21 +0,0 @@ -# Add project specific ProGuard rules here. -# You can control the set of applied configuration files using the -# proguardFiles setting in build.gradle. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# 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/things-example/app/src/androidTest/java/net/irext/irext_things/ExampleInstrumentedTest.java b/things-example/app/src/androidTest/java/net/irext/irext_things/ExampleInstrumentedTest.java deleted file mode 100644 index 3c90705..0000000 --- a/things-example/app/src/androidTest/java/net/irext/irext_things/ExampleInstrumentedTest.java +++ /dev/null @@ -1,26 +0,0 @@ -package net.irext.irext_things; - -import android.content.Context; -import android.support.test.InstrumentationRegistry; -import android.support.test.runner.AndroidJUnit4; - -import org.junit.Test; -import org.junit.runner.RunWith; - -import static org.junit.Assert.*; - -/** - * Instrumented test, which will execute on an Android device. - * - * @see Testing documentation - */ -@RunWith(AndroidJUnit4.class) -public class ExampleInstrumentedTest { - @Test - public void useAppContext() throws Exception { - // Context of the app under test. - Context appContext = InstrumentationRegistry.getTargetContext(); - - assertEquals("net.irext.irext_things", appContext.getPackageName()); - } -} diff --git a/things-example/app/src/main/AndroidManifest.xml b/things-example/app/src/main/AndroidManifest.xml deleted file mode 100644 index bc0cb68..0000000 --- a/things-example/app/src/main/AndroidManifest.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/things-example/app/src/main/java/net/irext/irext_things/MainActivity.java b/things-example/app/src/main/java/net/irext/irext_things/MainActivity.java deleted file mode 100644 index 8c1f0b1..0000000 --- a/things-example/app/src/main/java/net/irext/irext_things/MainActivity.java +++ /dev/null @@ -1,32 +0,0 @@ -package net.irext.irext_things; - -import android.app.Activity; -import android.os.Bundle; - -/** - * Skeleton of an Android Things activity. - *

- * Android Things peripheral APIs are accessible through the class - * PeripheralManagerService. For example, the snippet below will open a GPIO pin and - * set it to HIGH: - *

- *

{@code
- * PeripheralManagerService service = new PeripheralManagerService();
- * mLedGpio = service.openGpio("BCM6");
- * mLedGpio.setDirection(Gpio.DIRECTION_OUT_INITIALLY_LOW);
- * mLedGpio.setValue(true);
- * }
- *

- * For more complex peripherals, look for an existing user-space driver, or implement one if none - * is available. - * - * @see https://github.com/androidthings/contrib-drivers#readme - */ -public class MainActivity extends Activity { - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_main); - } -} diff --git a/things-example/app/src/main/res/layout/activity_main.xml b/things-example/app/src/main/res/layout/activity_main.xml deleted file mode 100644 index d9d1ebc..0000000 --- a/things-example/app/src/main/res/layout/activity_main.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - diff --git a/things-example/app/src/main/res/values/colors.xml b/things-example/app/src/main/res/values/colors.xml deleted file mode 100644 index 3ab3e9c..0000000 --- a/things-example/app/src/main/res/values/colors.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - #3F51B5 - #303F9F - #FF4081 - diff --git a/things-example/app/src/main/res/values/strings.xml b/things-example/app/src/main/res/values/strings.xml deleted file mode 100644 index 7f47bdc..0000000 --- a/things-example/app/src/main/res/values/strings.xml +++ /dev/null @@ -1,3 +0,0 @@ - - IREXT-Things - diff --git a/things-example/app/src/main/res/values/styles.xml b/things-example/app/src/main/res/values/styles.xml deleted file mode 100644 index b6b9204..0000000 --- a/things-example/app/src/main/res/values/styles.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - -