From ba2f3331304b8dee4837a61791e1170122c97e6a Mon Sep 17 00:00:00 2001 From: Sayanna Chandula Date: Thu, 8 Feb 2024 15:23:27 -0800 Subject: [PATCH] thermal: add historic samples for tflite vt prediction Add historic samples of past 5 iterations Remove VSYS_PWR_ODPM from VT prediction Bug: 315169778 Test: Build and boot on device Change-Id: I70557d67633cbc4bcfbfe8811beff56353c54085 Signed-off-by: Sayanna Chandula --- thermal/thermal_info_config_caiman.json | 7 ++++--- thermal/thermal_info_config_caiman_proto.json | 7 ++++--- thermal/thermal_info_config_komodo.json | 7 ++++--- thermal/thermal_info_config_komodo_proto.json | 7 ++++--- thermal/thermal_info_config_tokay.json | 7 ++++--- thermal/thermal_info_config_tokay_proto.json | 7 ++++--- thermal/vt_estimation_model_caiman.tflite | Bin 2985 -> 4887 bytes thermal/vt_estimation_model_komodo.tflite | Bin 2985 -> 4887 bytes thermal/vt_estimation_model_tokay.tflite | Bin 2985 -> 4887 bytes 9 files changed, 24 insertions(+), 18 deletions(-) diff --git a/thermal/thermal_info_config_caiman.json b/thermal/thermal_info_config_caiman.json index f9c49038..fe8aee09 100644 --- a/thermal/thermal_info_config_caiman.json +++ b/thermal/thermal_info_config_caiman.json @@ -217,10 +217,11 @@ "VirtualSensor": true, "ModelPath": "vt_estimation_model.tflite", "Formula": "USE_ML_MODEL", - "Combination": ["VSYS_PWR_CAMERA", "battery", "btmspkr_therm", "charging_therm", "disp_therm", "north_therm", "quiet_therm", "rfpa_therm", "soc_therm", "usb_pwr_therm"], - "CombinationType":["ODPM", "SENSOR", "SENSOR", "SENSOR", "SENSOR", "SENSOR", "SENSOR", "SENSOR", "SENSOR", "SENSOR"], + "Combination": ["battery", "btmspkr_therm", "charging_therm", "disp_therm", "north_therm", "quiet_therm", "rfpa_therm", "soc_therm", "usb_pwr_therm"], + "CombinationType":["SENSOR", "SENSOR", "SENSOR", "SENSOR", "SENSOR", "SENSOR", "SENSOR", "SENSOR", "SENSOR"], "Coefficient": [1.0], - "Multiplier": 0.001 + "Multiplier": 0.001, + "PreviousSampleCount": 5 }, { "Name": "VIRTUAL-SKIN-MODEL-LEGACY-DIFF", diff --git a/thermal/thermal_info_config_caiman_proto.json b/thermal/thermal_info_config_caiman_proto.json index 55df6211..d3343c0d 100644 --- a/thermal/thermal_info_config_caiman_proto.json +++ b/thermal/thermal_info_config_caiman_proto.json @@ -188,10 +188,11 @@ "VirtualSensor": true, "ModelPath": "vt_estimation_model.tflite", "Formula": "USE_ML_MODEL", - "Combination": ["VSYS_PWR_CAMERA", "battery", "btmspkr_therm", "charging_therm", "disp_therm", "north_therm", "quiet_therm", "rfpa_therm", "soc_therm", "usb_pwr_therm"], - "CombinationType":["ODPM", "SENSOR", "SENSOR", "SENSOR", "SENSOR", "SENSOR", "SENSOR", "SENSOR", "SENSOR", "SENSOR"], + "Combination": ["battery", "btmspkr_therm", "charging_therm", "disp_therm", "north_therm", "quiet_therm", "rfpa_therm", "soc_therm", "usb_pwr_therm"], + "CombinationType":["SENSOR", "SENSOR", "SENSOR", "SENSOR", "SENSOR", "SENSOR", "SENSOR", "SENSOR", "SENSOR"], "Coefficient": [1.0], - "Multiplier": 0.001 + "Multiplier": 0.001, + "PreviousSampleCount": 5 }, { "Name": "VIRTUAL-SKIN-MODEL-LEGACY-DIFF", diff --git a/thermal/thermal_info_config_komodo.json b/thermal/thermal_info_config_komodo.json index a821dda0..7086fe34 100644 --- a/thermal/thermal_info_config_komodo.json +++ b/thermal/thermal_info_config_komodo.json @@ -241,11 +241,12 @@ "VirtualSensor": true, "ModelPath": "vt_estimation_model.tflite", "Formula": "USE_ML_MODEL", - "Combination": ["VSYS_PWR_CAMERA", "battery", "btmspkr_therm", "charging_therm", "disp_therm", "north_therm", "quiet_therm", "rfpa_therm", "soc_therm", "usb_pwr_therm"], - "CombinationType":["ODPM", "SENSOR", "SENSOR", "SENSOR", "SENSOR", "SENSOR", "SENSOR", "SENSOR", "SENSOR", "SENSOR"], + "Combination": ["battery", "btmspkr_therm", "charging_therm", "disp_therm", "north_therm", "quiet_therm", "rfpa_therm", "soc_therm", "usb_pwr_therm"], + "CombinationType":["SENSOR", "SENSOR", "SENSOR", "SENSOR", "SENSOR", "SENSOR", "SENSOR", "SENSOR", "SENSOR"], "Coefficient": [1.0], "Multiplier": 0.001, - "Offset": 500 + "Offset": 500, + "PreviousSampleCount": 5 }, { "Name": "VIRTUAL-SKIN-MODEL-LEGACY-DIFF", diff --git a/thermal/thermal_info_config_komodo_proto.json b/thermal/thermal_info_config_komodo_proto.json index 4168688f..385c3657 100644 --- a/thermal/thermal_info_config_komodo_proto.json +++ b/thermal/thermal_info_config_komodo_proto.json @@ -221,11 +221,12 @@ "VirtualSensor": true, "ModelPath": "vt_estimation_model.tflite", "Formula": "USE_ML_MODEL", - "Combination": ["VSYS_PWR_CAMERA", "battery", "btmspkr_therm", "charging_therm", "disp_therm", "north_therm", "quiet_therm", "rfpa_therm", "soc_therm", "usb_pwr_therm"], - "CombinationType":["ODPM", "SENSOR", "SENSOR", "SENSOR", "SENSOR", "SENSOR", "SENSOR", "SENSOR", "SENSOR", "SENSOR"], + "Combination": ["battery", "btmspkr_therm", "charging_therm", "disp_therm", "north_therm", "quiet_therm", "rfpa_therm", "soc_therm", "usb_pwr_therm"], + "CombinationType":["SENSOR", "SENSOR", "SENSOR", "SENSOR", "SENSOR", "SENSOR", "SENSOR", "SENSOR", "SENSOR"], "Coefficient": [1.0], "Multiplier": 0.001, - "Offset": 500 + "Offset": 500, + "PreviousSampleCount": 5 }, { "Name": "VIRTUAL-SKIN-MODEL-LEGACY-DIFF", diff --git a/thermal/thermal_info_config_tokay.json b/thermal/thermal_info_config_tokay.json index f0cf4362..d87dd88d 100644 --- a/thermal/thermal_info_config_tokay.json +++ b/thermal/thermal_info_config_tokay.json @@ -231,10 +231,11 @@ "VirtualSensor": true, "ModelPath": "vt_estimation_model.tflite", "Formula": "USE_ML_MODEL", - "Combination": ["VSYS_PWR_CAMERA", "battery", "btmspkr_therm", "charging_therm", "disp_therm", "north_therm", "quiet_therm", "rfpa_therm", "soc_therm", "usb_pwr_therm"], - "CombinationType":["ODPM", "SENSOR", "SENSOR", "SENSOR", "SENSOR", "SENSOR", "SENSOR", "SENSOR", "SENSOR", "SENSOR"], + "Combination": ["battery", "btmspkr_therm", "charging_therm", "disp_therm", "north_therm", "quiet_therm", "rfpa_therm", "soc_therm", "usb_pwr_therm"], + "CombinationType":["SENSOR", "SENSOR", "SENSOR", "SENSOR", "SENSOR", "SENSOR", "SENSOR", "SENSOR", "SENSOR"], "Coefficient": [1.0], - "Multiplier": 0.001 + "Multiplier": 0.001, + "PreviousSampleCount": 5 }, { "Name": "VIRTUAL-SKIN-MODEL-LEGACY-DIFF", diff --git a/thermal/thermal_info_config_tokay_proto.json b/thermal/thermal_info_config_tokay_proto.json index ec6f759f..7aebde4e 100644 --- a/thermal/thermal_info_config_tokay_proto.json +++ b/thermal/thermal_info_config_tokay_proto.json @@ -167,10 +167,11 @@ "VirtualSensor": true, "ModelPath": "vt_estimation_model.tflite", "Formula": "USE_ML_MODEL", - "Combination": ["VSYS_PWR_CAMERA", "battery", "btmspkr_therm", "charging_therm", "disp_therm", "north_therm", "quiet_therm", "rfpa_therm", "soc_therm", "usb_pwr_therm"], - "CombinationType":["ODPM", "SENSOR", "SENSOR", "SENSOR", "SENSOR", "SENSOR", "SENSOR", "SENSOR", "SENSOR", "SENSOR"], + "Combination": ["battery", "btmspkr_therm", "charging_therm", "disp_therm", "north_therm", "quiet_therm", "rfpa_therm", "soc_therm", "usb_pwr_therm"], + "CombinationType":["SENSOR", "SENSOR", "SENSOR", "SENSOR", "SENSOR", "SENSOR", "SENSOR", "SENSOR", "SENSOR"], "Coefficient": [1.0], - "Multiplier": 0.001 + "Multiplier": 0.001, + "PreviousSampleCount": 5 }, { "Name": "VIRTUAL-SKIN-MODEL-LEGACY-DIFF", diff --git a/thermal/vt_estimation_model_caiman.tflite b/thermal/vt_estimation_model_caiman.tflite index 0a7f7fbd1e16e30b81067e702f3238e9fac19c24..c7b2b29340ed2f9b29b79339a77b5a4964dfcf93 100644 GIT binary patch delta 2760 zcmZA330zIt9{}+8o+M8QDa%6(rDS=pH)(n2oJ(mXS&GoUXwmixQ)+I?@+wi+JX{}3^RnQUW-VTONcEHNVWf6d>ASLc3y=bqpB-23@{&bjAv&ONH1XR^ye zXrayH$y9M^c(zrjAh08Qf8j9E5FSrg6+BgNLZu^rqQLy^sZjn+fuQ>zrLBgq!1ukf zP-7hZvZJS`LltT7dwMif&remwU#T)OBj5sVPi)5ig#|FVTZE6)wW5#9lxVY{7+03x zhMMFG=FI1JvWGKZ`=sEXwUNoJ-3o1b zCfLT?6f_6z!@T_^wujm?z{A%D7hNp_2g9XU@8?vUYI=s5Vs?e$ieqq=!(KdjUJG;A zD;%CSJg&>O_hD+6+irt zOJ@VUbd5Lu-g72=-?JXJTIs=prA17H>l~Q$$3>)h@GxBdT`1f1qM6HFi3lde;RvLJqutLL=Fz zEcENc3E+{;N51o-z+&5C+)-WzI;!bUJ@*=oSY!wDyAQ(J9}mN(3SVqs=7(w&$%uEz zPF8$sCF4GH0gUVRg~5(uSUq<+Fwwcdn;ghEmkMy2HEo3H&}kqKYh#T44@1y(4+u-F zL}>~`>>Z&AR^=7k2cE__x`h3$_KHvMj=vXg>$m z;f^8O9sh|8PE28MTb(7gcf5&4r8#Gu_yVt#yk*8Gm9i^d<$|=fn!GuBg^e5f0PC;Z zOw#fRXH(RSgL7WWCixs;x$pxZPaR7RTj)`>-BsNA2exF_RXwuTW0cH0mV?F|1@&Ju zC64W?W%+)Mgm1o=qf^=*BGEUe$=T5jOzuTfc3NBj^*%*|eVy*j>Q!Wu;nfPx<)tgm z7Y?SZ{<8pXNGMjT$)3vZ9KfFF+6f9AM!LkAT@>m_Ne6f*JmQ5keG3M05#;t5@Y%$wC{ZE?Q&p*wc{WBlojuN(GeJPhD+sdU$ zoT%j1Xs&V24RYT&04M^WXiG%n5ALpnDbl6zyE$2@DNzNrY|LKgdTO$!^TkGJgDXK_YUWV{08Z&YvMP|x4UJ?s5&29gR-$s@dzwpa?m>iL-4N-1h;b{XmMFDE56(*GiWe_ z)a-+GsmB;}7JcJ-CU%>IXOLIlg2fWhzF(Yg^3%;vMHG)%0iE`z7a(dA9_*8w!3qy_xS)_bPwxx z$FY-FX;KdN>1pKb>6>iQtbL>)Zwi%d;l^!vG?7^x_!c}}8er5@5ykT{zz?J=S!{lS zjCl8)gzB&2JiR(_eQ+xqK3EGhGf$EE7lsp$(%(T+REuRc=_GpTMlRA#K`!@vJylf) z>%WD*=~LI+ptP0tLr1j+*l+7Bus^>3Zhdd(nS9rul$@rnhM%O!{?r}K1Ob1#a>3w_ zs@g?3TUBoqP9Js$yDxv|oc$(Fz~jXUl=Z@KbYMV2LWn%kZb*EL7LULUmm%RMW-6uew;+S67j$q0_x%m-N#m{dI}DF6pC7`sfmM zU81H-`sph2--)La{Ve(V~D zw2v-T*QIK@w4W{&dbsfgx&w4o%hrg;>$@mbf1ka}`EyC-i*%HnP*2apZJ=gvA76FN LRo&T{+nuF zkRGy+^E>zc)+NgJJ&pnU&-4k{r`Cz=*ZT+2Gl7wTA#LkXy9hPueG6nc_qq7j?Q{5R zx-aj}A-fP0*?ks2g6uvxS?v`!da>`nk=y~D94Yc8}eD&iZ-2N|kI(Kxy|bzE*k0k)-+d<|o9y&Yy|??PzRA`| zvdK>7?^?UKn=AKC@L=BeWkIW5Yx%i-hBfT_KUrShr_sP*m-FDrzEl4ZQ3{MzhFYdi z2Rs}64_rSu{Q!s$0vg#jn;n%V%O2eKJ@Wuqgn^BLgMkG|G5|>kX8hoMU~>RZ2@@mN zf(mq1K<>Q`epjr?X0pgO3)S}$X;*$KL;`qG8+*G}iijuJ4 z$l&;Z@Su2SM_<<n MUkj0^J7cu57K5R$D2AeFmUOAgBnxK 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 delta 863 zcmZvZYe-XJ7{}k8Hl1gcvb<%HnPmHrhDBNG-nX(V6;1=S3yoRREpKZ(nw2$6jfyU( zR+uqLLoI_=u>}>K_nmEFmW2#56Qhs?rDcd2x?1a~i@x;X_vimydElvyYl&bN(zXBq zoIDEp{IWc%XYBmdE7KcA0GN4B@N5v7)(PfN*FDxefs3NbyryK~E~?9Gx+07+YCJw) zA&~*EVxZ1ZkL3ay>q@R=jcrk?A+nVe`#Yec_(m-0zL?L0r8%P2V;Ro3gLX|JX zb@!&BvJ-OX77JE}-CBV)JFX#L`V4YIW`&WW)AFwwQ_!yFji@Iw8dA(^!bYy(^yda~ zM}rxUM&Fco_I7iXv@uCu))$U7u?EPV^~ha=@33~hbY*sS5)LmgqX7>MZHoXoDqf75 z-8s1W?LOF-b(g#SUYn}e`;BC5i6HTnchM|cApTWR0j1_=aOcB$+NddY}H}#_5wS;&?!aI&xw!*v4mBp z;BIFT(#ejakit8prpp2yFHVwaZ8kCx)*?^be2T=Xs-XSiUf4Ig9=6wPCw0S1xYE_n zVNPobdhYx8(lx1}Y5Zq_v|N(*N)qH4_m6{v9I~Mn(L}I`l{}fzP4i6wKn#Su0$wK> zqBkguRYmFq zrku&zx^1gck)5ebTeW3v<|;Z@#V~690Xml{GUy8Q%840zw??JU*B0md!#!Gq&TorL z^o+*u_myhZ%%oS)`aGS=pEs23_PbI;u2Q%E?^eYo0TnuB{4xOkcke`jmr6k+Z5oiq K1!PFZQ-1(3YF~B$