From a1968add079a9d4a49505fa2f9a674467a52fdc8 Mon Sep 17 00:00:00 2001 From: sylviaa23 Date: Thu, 7 May 2026 17:54:42 +0000 Subject: [PATCH] merging --- .../openseizuredetector/BLEScanActivity.java | 2 +- .../FragmentOsdBaseClass.java | 2 +- .../org/openseizuredetector/MainActivity.java | 2 +- .../openseizuredetector/MainActivity2.java | 2 +- .../uk/org/openseizuredetector/SdData.java | 1 + .../openseizuredetector/SdDataSourceBLE2.java | 12 ++++++++++++ .../SensorValidationActivity.java | 13 +++++++++++++ .../openseizuredetector/StartupActivity.java | 2 +- .../main/res/drawable/progress_bar_blue.xml | 4 ++-- .../main/res/drawable/star_of_life_48x48.png | Bin 2974 -> 5598 bytes .../main/res/layout/activity_authenticate.xml | 2 +- app/src/main/res/values/colors.xml | 6 +++--- app/src/main/res/values/strings.xml | 2 +- 13 files changed, 38 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/uk/org/openseizuredetector/BLEScanActivity.java b/app/src/main/java/uk/org/openseizuredetector/BLEScanActivity.java index 35e440a..c7c4667 100644 --- a/app/src/main/java/uk/org/openseizuredetector/BLEScanActivity.java +++ b/app/src/main/java/uk/org/openseizuredetector/BLEScanActivity.java @@ -80,7 +80,7 @@ public class BLEScanActivity extends ListActivity { // Stops scanning after 10 seconds. private static final long SCAN_PERIOD = 10000; - private int okColour = Color.BLUE; + private int okColour = Color.parseColor("#9B59B6"); private int warnColour = Color.MAGENTA; private int alarmColour = Color.RED; private int okTextColour = Color.WHITE; diff --git a/app/src/main/java/uk/org/openseizuredetector/FragmentOsdBaseClass.java b/app/src/main/java/uk/org/openseizuredetector/FragmentOsdBaseClass.java index 91df850..49df3e8 100644 --- a/app/src/main/java/uk/org/openseizuredetector/FragmentOsdBaseClass.java +++ b/app/src/main/java/uk/org/openseizuredetector/FragmentOsdBaseClass.java @@ -26,7 +26,7 @@ public class FragmentOsdBaseClass extends Fragment { Timer mUiTimer; protected View mRootView; - protected int okColour = Color.BLUE; + protected int okColour = Color.parseColor("#9B59B6"); protected int warnColour = Color.MAGENTA; protected int alarmColour = Color.RED; protected int okTextColour = Color.WHITE; diff --git a/app/src/main/java/uk/org/openseizuredetector/MainActivity.java b/app/src/main/java/uk/org/openseizuredetector/MainActivity.java index 7a09e35..eb366dd 100644 --- a/app/src/main/java/uk/org/openseizuredetector/MainActivity.java +++ b/app/src/main/java/uk/org/openseizuredetector/MainActivity.java @@ -73,7 +73,7 @@ import java.util.TimerTask; public class MainActivity extends AppCompatActivity { static final String TAG = "MainActivity"; - private int okColour = Color.BLUE; + private int okColour = Color.parseColor("#9B59B6"); private int warnColour = Color.MAGENTA; private int alarmColour = Color.RED; private int okTextColour = Color.WHITE; diff --git a/app/src/main/java/uk/org/openseizuredetector/MainActivity2.java b/app/src/main/java/uk/org/openseizuredetector/MainActivity2.java index 511c39a..575dec9 100644 --- a/app/src/main/java/uk/org/openseizuredetector/MainActivity2.java +++ b/app/src/main/java/uk/org/openseizuredetector/MainActivity2.java @@ -37,7 +37,7 @@ import java.util.TimerTask; public class MainActivity2 extends AppCompatActivity { private String TAG = "MainActivity2"; - private int okColour = Color.BLUE; + private int okColour = Color.parseColor("#9B59B6"); private int warnColour = Color.MAGENTA; private int alarmColour = Color.RED; private int okTextColour = Color.WHITE; diff --git a/app/src/main/java/uk/org/openseizuredetector/SdData.java b/app/src/main/java/uk/org/openseizuredetector/SdData.java index e481fa8..44501e0 100644 --- a/app/src/main/java/uk/org/openseizuredetector/SdData.java +++ b/app/src/main/java/uk/org/openseizuredetector/SdData.java @@ -146,6 +146,7 @@ public class SdData implements Parcelable { // 2 = contact detected // 3 = reserved/unknown public int mHrSensorContactStatus = -1; + public long mHRTimestamp = System.currentTimeMillis(); public boolean mO2SatAlarmStanding = false; public boolean mO2SatFaultStanding = false; diff --git a/app/src/main/java/uk/org/openseizuredetector/SdDataSourceBLE2.java b/app/src/main/java/uk/org/openseizuredetector/SdDataSourceBLE2.java index fb41455..150b3a1 100644 --- a/app/src/main/java/uk/org/openseizuredetector/SdDataSourceBLE2.java +++ b/app/src/main/java/uk/org/openseizuredetector/SdDataSourceBLE2.java @@ -363,6 +363,7 @@ public class SdDataSourceBLE2 extends SdDataSource { Log.v(TAG,"onCharacteristicUpdate() - Characteristic "+charUuidStr+" updated"); if (charUuidStr.equals(CHAR_HEART_RATE_MEASUREMENT)) { + Log.v(TAG, "HR Measurement"); int flags = parser.getUInt8(); @@ -395,6 +396,17 @@ public class SdDataSourceBLE2 extends SdDataSource { + ", stored=" + mSdData.mHR + ", contactStatus=" + sensorContactStatus + ", notificationCount=" + mSdData.mHrNotificationCount); + Log.v(TAG, String.format("%s", "HR Measurement")); + // Parse the flags + int flags = parser.getUInt8(); + final int unit = flags & 0x01; + final int sensorContactStatus = (flags & 0x06) >> 1; + final boolean energyExpenditurePresent = (flags & 0x08) > 0; + final boolean rrIntervalPresent = (flags & 0x10) > 0; + // Parse heart rate + mSdData.mHR = (unit == 0) ? parser.getUInt8() : parser.getUInt16(); + mSdData.mHRTimestamp = System.currentTimeMillis(); + Log.d(TAG,"Received HR="+mSdData.mHR); } else if (charUuidStr.equals(CHAR_OSD_ACC_DATA) || charUuidStr.equals(CHAR_INFINITIME_ACC_DATA)) { diff --git a/app/src/main/java/uk/org/openseizuredetector/SensorValidationActivity.java b/app/src/main/java/uk/org/openseizuredetector/SensorValidationActivity.java index 90253f7..59fd09e 100644 --- a/app/src/main/java/uk/org/openseizuredetector/SensorValidationActivity.java +++ b/app/src/main/java/uk/org/openseizuredetector/SensorValidationActivity.java @@ -95,6 +95,8 @@ public class SensorValidationActivity extends AppCompatActivity { private long currentHrLastUpdateMillisInSecond = 0; private int currentHrRawValue = -1; private int currentHrSensorContactStatus = -1; + private long lastHrTimestamp = 0; + private final ArrayList hrPoints = new ArrayList<>(); private long hrStartNotificationCount = 0; private long hrLastSeenNotificationCount = -1; @@ -558,7 +560,18 @@ private final ArrayList hrPoints = new ArrayList<>(); currentHrLastSeenNotificationCount = hrLastSeenNotificationCount; } +<<<<<<< HEAD SdData sdData = mConnection.mSdServer.mSdData; +======= + long hrTs = mConnection.mSdServer.mSdData.mHRTimestamp; + double hr = mConnection.mSdServer.mSdData.mHR; + currentHrReadCount++; + if (hr >= 0.0 && hrTs != lastHrTimestamp) { + lastHrTimestamp = hrTs; + currentHrSum += hr; + currentHrValidCount++; + } +>>>>>>> c175730 (Cosmetic changes) currentHrReadCount++; diff --git a/app/src/main/java/uk/org/openseizuredetector/StartupActivity.java b/app/src/main/java/uk/org/openseizuredetector/StartupActivity.java index e2a45d6..537c8dd 100644 --- a/app/src/main/java/uk/org/openseizuredetector/StartupActivity.java +++ b/app/src/main/java/uk/org/openseizuredetector/StartupActivity.java @@ -66,7 +66,7 @@ import java.util.TimerTask; */ public class StartupActivity extends AppCompatActivity { private static String TAG = "StartupActivity"; - private int okColour = Color.BLUE; + private int okColour = Color.parseColor("#9B59B6"); private int warnColour = Color.MAGENTA; private int alarmColour = Color.RED; private int okTextColour = Color.WHITE; diff --git a/app/src/main/res/drawable/progress_bar_blue.xml b/app/src/main/res/drawable/progress_bar_blue.xml index 3d272e2..a79c148 100644 --- a/app/src/main/res/drawable/progress_bar_blue.xml +++ b/app/src/main/res/drawable/progress_bar_blue.xml @@ -20,10 +20,10 @@ diff --git a/app/src/main/res/drawable/star_of_life_48x48.png b/app/src/main/res/drawable/star_of_life_48x48.png index 9c0ecb772e87055473ab67f61c8553051d5265a8..3d4d1ed999fa67cc0ccfee06fdd253e6e64ddefd 100644 GIT binary patch literal 5598 zcmV<46(Q=0P)>0m3@F1TX{)0epb5jStyIK4jg; zoITxd|B&S9oKerAnU?zVpQc~G{>}7P@BQ9;zxR8B9Mag>sF+QQS6fmvAjJ}dTmqsV zC}%t zJloH3nJ{tSC6K@Kc(g|vf4#mV+YiW^fNt5eb)^vETS$2=h~jM3>ykCXz(a~+-h0P= zUw$`Rm1ZoUTQ@#@p%mOM;OcDD=aO@z5b{wh?Up+qSl^UsWof_g?`^ujQW5&UBDo1r zGBw0y(usk*+oQz3-+13m(R3?GOF*~WuywtV;-^4mx({|K81_m_Y})+bhIi7r*_MDB zZ~TqVkiNT-{6jhqb17I11UKJx|8@7+y>Y?K(Rr6;0(z47t& z@rm9rApzaC@v(X-%x%Epv`uqy3NOT@@wp#8uqiZ=!YKuG+s4Q0En&VYU{>a~xi|p< zFKZF?s>a9H_f4Se_zZMgui~~m(-67cqr@&xH9{MA_}zHpZ+rtjk1L*OiTJo-`R)Um zw2>KCK!)_)jq5N^cfNS*rbq5fR$xqZ4b1aAnj4#39EOyFt2f_&-E(7I93`N}uRc~` z80G<>D(9xTIE7YeC01>IaO0_w7e;kqhGG3Hu6SIAQ!NzFug1DCtOdGt^8{Qq`Bu3&1qpL? z;raT|&&~?SLfnko`naS(z_*9CLJIVUq4q}-y11mIT1Pt@jiCT|@m%AEp}I^IA;jMg z&QL1=QW4kW*CZE*vG~>-9=jAkX>4p%26j)lxY)qj1fZBri&x`ry>YRN3=43lsuj%8)9#hD0}C5eRN#G(fNfR3(D-Jf|%eltr-B7HI9hM8YG zEJ>&@hM}7Tg5D|Ft4%opB@z~)zG%+7D?7yF2@(mDq9QM=vXX4Z%<)~ zXAsMh^z_7t#S{59C96ys0YxJQ;ZO`HJn{S$Nw_aYBr@UbDFx4z=)xkAIMIlaZ!;#$ zpsjwto@Yxk$MG#tG-fzTJcC3d2GOYV>>i1u1r(1bh=iQm9Yn%$;tuzT9NUFimNnq> zWCx$$L!iiu*Y831YG@t>MG*tfk|Yd^cq~CIVi4|&Wv$f7r^1WfcKR$^&Tn_`_>O73ivh?$anL^-)PNMm#}pXN0bfFlHkCiApK^9qZy^ zpCgw)94Vk^G@j9VmZAtMW)x9Y8AK@Qy)=)mQBhM&d36z;Z6P{a`_i61NF*$xQ3Ia? zoodGk$TBTr891N*pw7%WWl38cJBR@>mX!H9-Q1P7PZo(7=(-0*byh3nxQ;g*j;Gyq zl~)CsQ(uua@eD=NRp!)JP+k>GU3eTK;q3WzlZB%MWF{<(G}pJPYfGrAEy=B)Ap})} z&q;&$MB|eR2uBGh-FcJBnqtZ_Xc_EMUKONrMp0V#I&GHPF+PxGS!vCg6qos_u<yDXhJG2`ev|molc=AJkcK@m$WmU=F)qKgOT`cp&K< zkWd6OW|eZ{sJ(*%V{zvQ$Pqq}XDu z^?d$o4Fpp>BT(#3S!N{tJ4Bq}OglnA>5RNm`8~Q<K0T|T9N(D zxMh`rr2drd(@-^gKerPc>4F!KX>(6kGVuT`SXPsXIZ0V~Zt}YI6t<0IviGy4L%|Ek zZZn?hCDqO?%fOoC)Xq(wDbTKf+%7B|*!&e!Edd0JeVJI3lw`gaq_%A&(g6x8cmdh{ z4O7iL`vSR};q{HP1Tu*2;I+cnPvHy5ZuCVer#l+X-A;&9!DMy^1QS1$J%1Fufb1$L zRaj}LC+Qio84>DD9uQ`CRHZl|M!MhyWVh9i$CA(Bp8BvW18b6V>R4ye>vmV=g)5-U zvFkUa642rITQV^xdENVx*PY6?k%)qSI}Q+#-L!FL!Xh3W|3x)7wbRv}I+n*SUF{)G zG>sp&5sMnOxBsYW;b-zFcmW9^Z2JPCzVUq#%apwK#{-#~HHufa9Z2ebg;V%PBT*FL zh;3p8FCf775jwrS~#@#bkZ_CUG_p-?SAKc;Rq`=kG-Zm z7Bz?_8&XSn{?T2uxAbOc8FZZKW834qlg`;hL-C~D>R5Ojl8DL?0`k}t5I{$3U()OG zSb`^h^#;vJ{FYRlI^M~XzkY*Q3UQ>eWh`>BcP$qt2;e#NH^T^<)o$#onY- z0cOJDl|Srb_v^>FXx#!9o;#C3(b!88;l3D$_O|fW_9OIkrXI;zrp1|)-L`B79F^5o z+`8#u2dudC&oFm)*&luvm-?A$V+CFa!Hn4@lvf4`3Em6t z_k{tJmibZK7AU(Yia^&j+nWn}yCdi=Disrqf0k0x(%el;v;CH1DD5r1X^BVIHOGht z9O45FlI~uq_A`BSwuQ26&G>Y-_R(?1zT*t(f5&{`C;_Reg2$6yquF+yGk$262oNJruv!gAq$V zmyTsg+FN?*Y7bFb5ul{pkH_ZF*@!3T>5R~wVU9!qO;hnY%=a0@kpe;pii*7S^hPsk zMa+an$C-YI*XQ@(59;^=Iv%fzrm1Js%~_@-kuWi0Ced)5a9=#5G6zb}p zfIvXU>vew1Gsu(?5P($$ROBNuaB8#N3?EsuLsbX_^t2)>ox+q9&>)&erKHSHG-^!B zx$%Q2O8>d>Ua!XyJ1a6_N(*QZpU;EOs}YNv#A61D9Hoy_RRynC!|T-?d2~}cObY=4 zAjH|1Yg+w>$0ZCiV=)benCM>BaiJL5VEPDX2&$s=&%^i!P9roeEYrj^C6+0%qy_S? z*))VAK=da&P!t7K6R4_!rm2qDzn)8`rGSQ_C<0wkVG29Cxn%maxh`476_86txB_y? zh`jqi%7RsV^R{JFrEozKJ9qHI|2WFf=%2sdD+#^4oqzl9Q`nDo76j|(((sA-ELmDk zRfQLiu!wf`a{AzD_P%_Ox8DzudNYwi@uGQLeA!&iIj5Y;3NN~15$}u8e!P`~Zyx52 z*V^cv;I1Tnbpzl2r+R_{kOupH@hn?kixu25U)}|jSA>s+*Q{avRn-KCwZ$rd$}$#I zma(8=5f^WNlZUn(r(?XAuLM}SVJ+8wx&pr#UXQP|h}kQOn7w>H4VUfb(YtqZDCMRN z4~rUR5fB5LNQ8$44YLTm-bARt6jV?GioUyt$G3Gd*369T?IOE}K`P9+{9{~qbu~T# zG7;w3Ye#r@e-B~HL;1ovTySYEl|GG{k6*&ZXq2Bne1_<#7pOApvuj!Z=?e70dR}kh zz5U&U5-LTrsyTPfJmy!a_!lna3t#Esr}s3`okR#CFq0K4b%ZoI`py|Q0>FK=jCSzS=BN4L_g>(U2M=>H zSs1tQvZP@qUIFIeX7-;v&HjA`QmD*pm_uoS&09`W0V&kfm!kh7Tl(oo?g9)UHr<@0@GewU)vb6Ma8X|}U>XBY`Y-fiYc zbPmgWm8`fh$c}OD%?AY}An>hN$;K69U9mX%l ziq^2L&bzpRKOJqKlu6fQ zOc?>Cg^Y9T*_XIyPaO?^GoNM4DyXjTqG1y0?B&#flkEP}LG~PuCVx>@gbyBhfqUMX zN5d!Pan3pARF&&!mO;2DLfg?Z9NOK?o;O?Q7;6$yEoJ$|WvGDcInBNg#(tXh;R*J) zEu*?dP;t>*Wmx8kK#h;D?~_9QIDbaD zI0Pvr|2g=_uprC0mAD7^aMDe3aSRfEyZM0)XIC$V3Ft=;YziUdwSa%Hl zU{sj*UH4!AB=G#CndIUaB>a5yeP7x&^s_Pd2}ncUgrH?|%yMxE?UMNIBR?EdK${=F zzD2@UDcoaATqYMOr1-lZY`LL*^e#erl<18hw`bWX7e^oucno> z5)atOP}ca1tHZ6n-Yb#(A~WM$3Y;AtgS9`r@4BNCDV$bHq}w)a{f0#RJ1}()|8zkj z?(Hot`A#yQXC!Io)Vh7s!>cXW0xVCr4wr)AjF93V#~Z3ABkd%ccWk+CXHRMAg+lTJ z7$Y~6ixaRU{Fj-qmZl>f$e;xp%6D&kc)n_}8Q74mI$d&#CE;ll>yD9YTXxCn%f4mf zBg+Ny8wkD(1hQGTOIGMc@PvZA`;Pms-@5^)Za3J_%=%X0nvX+k&92eJ>u s5h>X(-~&a9*Y9}ni+e!iY*GCG0b2FfhMqu^lK=n!07*qoM6N<$f(@t0EdT%j literal 2974 zcmV;P3t{w$P)hxIC}s93oA)P zK~!ko?OJ6Y3ZV~0dwby(AwI|TCw8S zj(hhW`vU-`%bYozHaV?Yy;_Q}unO>aHcP(v!tzs@@V!7Ffj5tJhseM{ zuH(1gwrM?o@hX<@ExUL0sPDT0 zj#5!+5Q}>d5^@_>R&1X`hrC+^0#PzWX^In@O~BK0GOk~L2!H>p=f8-mo;JqD9$Pv`SRNm6OhHZ2bb1O>3N%CXtH)p_fdEp<9$Je7(0IaQ9h>mW;r=K?J0R{+c*;0#b+nl#rTj$serCOS%QU+qd z0?x(C%0Vr`x-zb;e2fo1s6>B1fyTzi_}kxRgUM8lm_`YL4uAg}=Q(GMTsO(W5Ap_`QUJJ0@kme8IX|B_)Y ztdW`Nh7%|5WQ)aJPJVtx1g*3*fZ}o)k3}N?RngHmeYsra{frE+r})J%;9g#?L|NJM z;$>z=$9LZeU}9p(!BDWXGet&*7r0#I{pjeMz9NzTDlV7txU@8Yq5*(Zs;QBp+ix!#dt^A=wvmg}OVEcB-=Hz6)!;Bf`;^8`L z1-)4O##1o0EHy6fwsA&A!`Za7+1R*|t9MvYlqStm6fkWX0{{>Zz}7ijA|ts-OPh_% z%!adZakq_|o0p{y*Kyo_z}=laSW>bmGB#G~N)UZj+1cK3b!F<|5dtJh;NZbp2!*as zy`mcT#9dvP$jb5t&{q{3D|Ia?SrqB+&K@*)Dlr7uY;C_^w_}G(GD$L~?Ag?WjC%s?37;>5R2l?J%bd4A`shzzySsDP+qTt1ChH&9aUmgQ$jX{GG;+bFO=ZZ;?15TM zj2l8+t|^j|oKacX*>&t#)B4WNmAON@=+w~g`5KJT+A4R7h`4_9%o)GS#l;GCcz8Kv zvH_iNQgE;(0HCDgAr2m_#g9LB>!7^mJY}*0gol@-xLCpd>MOq=BOmlpzO=bwZ-cDNkq>!V}awmO4rCWE0yOpG<& ze}5+EbQ*$#OK|rtiI<_IBo{E5N+cxI?QUpT^4XBi1OPZW<%X(7CfH05CCX= zegUps>kMJBRG`yIOcYTRpjHFL#hqBZ*cv7#6Enr6(@C&cDqO$*a21~~0!=CnM0@+n z2T4hF$tfv@W1knt=maiaY=(=A8E7;Dzx>iQ5yyg*6jvlA)g5VXU->{P4FYYbLP{h- zf0oPTDkmqVo=nx)xzhoKg?s?&VQnLU&6}MN9BhN+?EI7UcI^MpV^{yQq_M!>CG-4VlAn3$-rbSW3RcUOSNW1+wQ#iVfSR(C{H)Qtc> zpKMP{^8|-uG-mjQhfhO(ep{1Fw*1Vfh0M$A3ewYC!`^v^J<6%55g+f2_;`El*;BUb zv(LP2930HA8W|A`?F&qxrsffxoXnoS_;`_wj0nc`>E>5I|J=)Z&z`bf@$vSEk9Qtb zZdlk9WMs64d3qL%UWsqtUWAU0mC{qE8gusUb3how#xgPHv`^zx^;O#x~jNZyBXWsGS_bA|J3J^W}oj-q?*>v^O|N zp|4Mc>C-3aJYpY`(bBRkH74eZ-+UuOPmcmsRZ4^Q56PBF7aQJEz6|B% z_2E_1AMc5WNYix - - #3F51B5 - #303F9F + #9B59B6 + #9B59B6 #FF4081 - #0000ff + #9B59B6 #ffffff diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 999bda9..122a414 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,6 +1,6 @@ - OpenSeizureDetector + FLOGA "\n \nV4.3.1 - Fixed user interface issues on Android-15 and Android-16