├── app ├── .gitignore ├── src │ └── main │ │ ├── ic_launcher-web.png │ │ ├── res │ │ ├── mipmap-xxxhdpi │ │ │ ├── g4272.png │ │ │ └── ic_launcher.png │ │ ├── mipmap-hdpi │ │ │ └── ic_launcher.png │ │ ├── mipmap-mdpi │ │ │ └── ic_launcher.png │ │ ├── mipmap-xhdpi │ │ │ └── ic_launcher.png │ │ ├── mipmap-xxhdpi │ │ │ └── ic_launcher.png │ │ ├── values │ │ │ ├── colors.xml │ │ │ ├── dimens.xml │ │ │ ├── strings.xml │ │ │ └── styles.xml │ │ ├── values-v21 │ │ │ └── styles.xml │ │ ├── values-w820dp │ │ │ └── dimens.xml │ │ ├── menu │ │ │ └── menu_start.xml │ │ └── layout │ │ │ ├── content_start.xml │ │ │ ├── fragment_start.xml │ │ │ ├── activity_start.xml │ │ │ ├── fragment_setup.xml │ │ │ └── fragment_main.xml │ │ ├── aidl │ │ └── org │ │ │ └── monkey │ │ │ └── d │ │ │ └── ruffy │ │ │ └── ruffy │ │ │ └── driver │ │ │ ├── display │ │ │ └── Menu.aidl │ │ │ ├── IRTHandler.aidl │ │ │ └── IRuffyService.aidl │ │ ├── java │ │ └── org │ │ │ └── monkey │ │ │ └── d │ │ │ └── ruffy │ │ │ └── ruffy │ │ │ ├── driver │ │ │ ├── LogHandler.java │ │ │ ├── CompleteDisplayHandler.java │ │ │ ├── DisplayUpdater.java │ │ │ ├── display │ │ │ │ ├── DisplayParserHandler.java │ │ │ │ ├── menu │ │ │ │ │ ├── MenuBlink.java │ │ │ │ │ ├── BolusType.java │ │ │ │ │ ├── Title.java │ │ │ │ │ ├── MenuDate.java │ │ │ │ │ ├── MenuTime.java │ │ │ │ │ └── TitleResolver.java │ │ │ │ ├── parser │ │ │ │ │ ├── NumberPattern.java │ │ │ │ │ ├── CharacterPattern.java │ │ │ │ │ ├── SymbolPattern.java │ │ │ │ │ └── Pattern.java │ │ │ │ ├── MenuType.java │ │ │ │ ├── Token.java │ │ │ │ ├── Symbol.java │ │ │ │ ├── MenuAttribute.java │ │ │ │ ├── Menu.java │ │ │ │ └── DisplayParser.java │ │ │ ├── BTHandler.java │ │ │ ├── PacketHandler.java │ │ │ ├── AppHandler.java │ │ │ ├── ListenThread.java │ │ │ ├── ConnectReceiver.java │ │ │ ├── Display.java │ │ │ ├── PairingRequest.java │ │ │ ├── Protocol.java │ │ │ ├── Frame.java │ │ │ ├── PumpData.java │ │ │ ├── Packet.java │ │ │ ├── Twofish_Properties.java │ │ │ ├── Utils.java │ │ │ ├── BTConnection.java │ │ │ ├── Application.java │ │ │ └── Ruffy.java │ │ │ ├── Start.java │ │ │ ├── view │ │ │ └── PumpDisplayView.java │ │ │ ├── SetupFragment.java │ │ │ └── MainFragment.java │ │ └── AndroidManifest.xml ├── proguard-rules.pro └── build.gradle ├── settings.gradle ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── .gitignore ├── gradle.properties ├── Ruffy.iml ├── gradlew.bat ├── README.md ├── gradlew └── ruffy-logo.svg /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | -------------------------------------------------------------------------------- /app/src/main/ic_launcher-web.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MilosKozak/ruffy/HEAD/app/src/main/ic_launcher-web.png -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MilosKozak/ruffy/HEAD/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/g4272.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MilosKozak/ruffy/HEAD/app/src/main/res/mipmap-xxxhdpi/g4272.png -------------------------------------------------------------------------------- /app/src/main/aidl/org/monkey/d/ruffy/ruffy/driver/display/Menu.aidl: -------------------------------------------------------------------------------- 1 | package org.monkey.d.ruffy.ruffy.driver.display; 2 | 3 | parcelable Menu; -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MilosKozak/ruffy/HEAD/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MilosKozak/ruffy/HEAD/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MilosKozak/ruffy/HEAD/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MilosKozak/ruffy/HEAD/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MilosKozak/ruffy/HEAD/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #3F51B5 4 | #303F9F 5 | #FF4081 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/java/org/monkey/d/ruffy/ruffy/driver/LogHandler.java: -------------------------------------------------------------------------------- 1 | package org.monkey.d.ruffy.ruffy.driver; 2 | 3 | /** 4 | * Created by fishermen21 on 20.05.17. 5 | */ 6 | 7 | public interface LogHandler { 8 | void log(String s); 9 | 10 | void fail(String s); 11 | } 12 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Sun Oct 27 21:17:49 CET 2019 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https://services.gradle.org/distributions/gradle-6.8.2-all.zip 7 | -------------------------------------------------------------------------------- /app/src/main/java/org/monkey/d/ruffy/ruffy/driver/CompleteDisplayHandler.java: -------------------------------------------------------------------------------- 1 | package org.monkey.d.ruffy.ruffy.driver; 2 | 3 | /** 4 | * Created by fishermen21 on 20.05.17. 5 | */ 6 | 7 | public interface CompleteDisplayHandler { 8 | void handleCompleteFrame(byte[][] pixels); 9 | } 10 | -------------------------------------------------------------------------------- /app/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 16dp 4 | 16dp 5 | 16dp 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/java/org/monkey/d/ruffy/ruffy/driver/DisplayUpdater.java: -------------------------------------------------------------------------------- 1 | package org.monkey.d.ruffy.ruffy.driver; 2 | 3 | /** 4 | * Created by fishermen21 on 19.05.17. 5 | */ 6 | 7 | public interface DisplayUpdater { 8 | void clear(); 9 | 10 | void update(byte[] quarter, int which); 11 | } 12 | -------------------------------------------------------------------------------- /app/src/main/java/org/monkey/d/ruffy/ruffy/driver/display/DisplayParserHandler.java: -------------------------------------------------------------------------------- 1 | package org.monkey.d.ruffy.ruffy.driver.display; 2 | 3 | /** 4 | * Created by fishermen21 on 22.05.17. 5 | */ 6 | 7 | public interface DisplayParserHandler { 8 | void menuFound(Menu menu); 9 | 10 | void noMenuFound(); 11 | } 12 | -------------------------------------------------------------------------------- /app/src/main/java/org/monkey/d/ruffy/ruffy/driver/display/menu/MenuBlink.java: -------------------------------------------------------------------------------- 1 | package org.monkey.d.ruffy.ruffy.driver.display.menu; 2 | 3 | /** 4 | * Created by fishermen21 on 22.05.17. 5 | */ 6 | 7 | public class MenuBlink { 8 | @Override 9 | public String toString() { 10 | return "BLINK"; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /app/src/main/java/org/monkey/d/ruffy/ruffy/driver/display/menu/BolusType.java: -------------------------------------------------------------------------------- 1 | package org.monkey.d.ruffy.ruffy.driver.display.menu; 2 | 3 | /** 4 | * Created by fishermen21 on 22.05.17. 5 | */ 6 | 7 | public enum BolusType{ 8 | NORMAL, 9 | EXTENDED, 10 | MULTIWAVE, 11 | MULTIWAVE_BOLUS, 12 | MULTIWAVE_EXTENDED, 13 | } 14 | -------------------------------------------------------------------------------- /app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Ruffy 3 | Settings 4 | Ruffy Pump Service holds the connection to the pump and implements the IRuffyService interface 5 | Ruffy Pump Service 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/values-v21/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/values-w820dp/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 64dp 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/java/org/monkey/d/ruffy/ruffy/driver/display/menu/Title.java: -------------------------------------------------------------------------------- 1 | package org.monkey.d.ruffy.ruffy.driver.display.menu; 2 | 3 | /** 4 | * Created by fishermen21 on 22.05.17. 5 | */ 6 | 7 | enum Title { 8 | BOLUS_AMOUNT, 9 | IMMEDIATE_BOLUS, 10 | BOLUS_DURATION, 11 | QUICK_INFO, 12 | BOLUS_DATA, 13 | ERROR_DATA, 14 | DAILY_TOTALS, 15 | TBR_DATA, 16 | TBR_SET, 17 | TBR_DURATION, 18 | } 19 | -------------------------------------------------------------------------------- /app/src/main/res/menu/menu_start.xml: -------------------------------------------------------------------------------- 1 | 5 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/java/org/monkey/d/ruffy/ruffy/driver/BTHandler.java: -------------------------------------------------------------------------------- 1 | package org.monkey.d.ruffy.ruffy.driver; 2 | 3 | import android.bluetooth.BluetoothDevice; 4 | 5 | /** 6 | * Created by fishermen21 on 15.05.17. 7 | */ 8 | 9 | public interface BTHandler { 10 | void deviceConnected(); 11 | 12 | void log(String s); 13 | 14 | void fail(String s); 15 | 16 | void deviceFound(BluetoothDevice bd); 17 | 18 | void handleRawData(byte[] buffer, int bytes); 19 | 20 | void requestBlueTooth(); 21 | } 22 | -------------------------------------------------------------------------------- /app/src/main/java/org/monkey/d/ruffy/ruffy/driver/PacketHandler.java: -------------------------------------------------------------------------------- 1 | package org.monkey.d.ruffy.ruffy.driver; 2 | 3 | /** 4 | * Created by fishermen21 on 19.05.17. 5 | */ 6 | 7 | public interface PacketHandler { 8 | void sendImidiateAcknowledge(byte sequenceNUmber); 9 | 10 | void log(String s); 11 | 12 | void handleResponse(Packet.Response response, boolean reliableFlagged, byte[] payload); 13 | 14 | void handleErrorResponse(byte errorCode, String errDecoded, boolean reliableFlagged, byte[] payload); 15 | 16 | Object getToDeviceKey(); 17 | } 18 | -------------------------------------------------------------------------------- /app/src/main/aidl/org/monkey/d/ruffy/ruffy/driver/IRTHandler.aidl: -------------------------------------------------------------------------------- 1 | // IRTHandler.aidl 2 | package org.monkey.d.ruffy.ruffy.driver; 3 | 4 | // Declare any non-default types here with import statements 5 | 6 | import org.monkey.d.ruffy.ruffy.driver.display.Menu; 7 | 8 | interface IRTHandler { 9 | void log(String message); 10 | void fail(String message); 11 | 12 | void requestBluetooth(); 13 | void rtStopped(); 14 | void rtStarted(); 15 | 16 | void rtClearDisplay(); 17 | void rtUpdateDisplay(in byte[] quarter, int which); 18 | 19 | void rtDisplayHandleMenu(in Menu menu); 20 | void rtDisplayHandleNoMenu(); 21 | } 22 | -------------------------------------------------------------------------------- /app/src/main/java/org/monkey/d/ruffy/ruffy/driver/display/parser/NumberPattern.java: -------------------------------------------------------------------------------- 1 | package org.monkey.d.ruffy.ruffy.driver.display.parser; 2 | 3 | /** 4 | * Created by fishermen21 on 21.05.17. 5 | */ 6 | 7 | public class NumberPattern extends Pattern { 8 | private final int number; 9 | 10 | public NumberPattern(int number, String[] patternString, int blockSize) { 11 | super(patternString,blockSize); 12 | this.number = number; 13 | } 14 | 15 | @Override 16 | public String toString() { 17 | return "Numbervalue("+number+")"; 18 | } 19 | 20 | public int getNumber() { 21 | return number; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /app/src/main/java/org/monkey/d/ruffy/ruffy/driver/AppHandler.java: -------------------------------------------------------------------------------- 1 | package org.monkey.d.ruffy.ruffy.driver; 2 | 3 | import java.nio.ByteBuffer; 4 | 5 | /** 6 | * Callbacks for the Application-Layer 7 | */ 8 | public interface AppHandler { 9 | void log(String s); 10 | 11 | void connected(); 12 | 13 | void rtModeActivated(); 14 | 15 | void cmdModeActivated(); 16 | 17 | void rtModeDeactivated(); 18 | 19 | void cmdModeDeactivated(); 20 | 21 | void modeDeactivated(); 22 | 23 | void addDisplayFrame(ByteBuffer b); 24 | 25 | void modeError(); 26 | 27 | void sequenceError(); 28 | 29 | void error(short error, String desc); 30 | } 31 | -------------------------------------------------------------------------------- /app/src/main/java/org/monkey/d/ruffy/ruffy/driver/display/parser/CharacterPattern.java: -------------------------------------------------------------------------------- 1 | package org.monkey.d.ruffy.ruffy.driver.display.parser; 2 | 3 | /** 4 | * Created by fishermen21 on 21.05.17. 5 | */ 6 | 7 | public class CharacterPattern extends Pattern { 8 | private final char character; 9 | 10 | public CharacterPattern(char c, String[] patternString, int blocksize) { 11 | super(patternString,blocksize); 12 | this.character = c; 13 | } 14 | 15 | @Override 16 | public String toString() { 17 | return "Character("+character+")"; 18 | } 19 | 20 | public char getCharacter() { 21 | return character; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /app/src/main/aidl/org/monkey/d/ruffy/ruffy/driver/IRuffyService.aidl: -------------------------------------------------------------------------------- 1 | // IRuffyService.aidl 2 | package org.monkey.d.ruffy.ruffy.driver; 3 | 4 | // Declare any non-default types here with import statements 5 | import org.monkey.d.ruffy.ruffy.driver.IRTHandler; 6 | 7 | interface IRuffyService { 8 | 9 | void setHandler(IRTHandler handler); 10 | 11 | /** Connect to the pump 12 | * 13 | * @return 0 if successful, -1 otherwise 14 | */ 15 | int doRTConnect(); 16 | 17 | /** Disconnect from the pump */ 18 | void doRTDisconnect(); 19 | 20 | void rtSendKey(byte keyCode, boolean changed); 21 | void resetPairing(); 22 | boolean isConnected(); 23 | String getMacAddress(); 24 | } 25 | -------------------------------------------------------------------------------- /app/src/main/java/org/monkey/d/ruffy/ruffy/driver/display/parser/SymbolPattern.java: -------------------------------------------------------------------------------- 1 | package org.monkey.d.ruffy.ruffy.driver.display.parser; 2 | 3 | import org.monkey.d.ruffy.ruffy.driver.display.Symbol; 4 | 5 | /** 6 | * Created by fishermen21 on 21.05.17. 7 | */ 8 | 9 | public class SymbolPattern extends Pattern { 10 | 11 | private final Symbol symbol; 12 | public SymbolPattern(Symbol s, String[] patternString, int blocksize) { 13 | super(patternString, blocksize); 14 | this.symbol = s; 15 | 16 | } 17 | 18 | @Override 19 | public String toString() { 20 | return "Symbol("+symbol+")"; 21 | } 22 | 23 | public Symbol getSymbol() { 24 | return symbol; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # no keychains 2 | *.jks 3 | 4 | # from https://stackoverflow.com/questions/16736856/what-should-be-in-my-gitignore-for-an-android-studio-project 5 | #built application files 6 | *.apk 7 | *.ap_ 8 | 9 | # files for the dex VM 10 | *.dex 11 | 12 | # Java class files 13 | *.class 14 | 15 | # generated files 16 | bin/ 17 | gen/ 18 | 19 | # Local configuration file (sdk path, etc) 20 | local.properties 21 | 22 | # Windows thumbnail db 23 | Thumbs.db 24 | 25 | # OSX files 26 | .DS_Store 27 | 28 | # Eclipse project files 29 | .classpath 30 | .project 31 | 32 | # Android Studio 33 | *.iml 34 | .idea 35 | #.idea/workspace.xml - remove # and delete .idea if it better suit your needs. 36 | .gradle 37 | build/ 38 | 39 | #NDK 40 | obj/ 41 | -------------------------------------------------------------------------------- /app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in /Users/fishermen21/Library/Android/sdk/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | 12 | # If your project uses WebView with JS, uncomment the following 13 | # and specify the fully qualified class name to the JavaScript interface 14 | # class: 15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 16 | # public *; 17 | #} 18 | -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | # Project-wide Gradle settings. 2 | 3 | # IDE (e.g. Android Studio) users: 4 | # Gradle settings configured through the IDE *will override* 5 | # any settings specified in this file. 6 | 7 | # For more details on how to configure your build environment visit 8 | # http://www.gradle.org/docs/current/userguide/build_environment.html 9 | 10 | # Specifies the JVM arguments used for the daemon process. 11 | # The setting is particularly useful for tweaking memory settings. 12 | org.gradle.jvmargs=-Xmx1536m 13 | 14 | # When configured, Gradle will run in incubating parallel mode. 15 | # This option should only be used with decoupled projects. More details, visit 16 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 17 | # org.gradle.parallel=true 18 | -------------------------------------------------------------------------------- /app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 15 | 16 |