EspressifApp/EspBlufiForiOS

Difference in behaviour for sending custom data in IOS and Android

abhisheksoni099 opened this issue ยท 3 comments

I found difference in behaviour on how Android and IOS application sends custom data to ESP32.
Below are my findings for IOS and Android data transfer:-

Data string being used to transfer

{"product_type":4,"cert":"-----BEGIN CERTIFICATE----- MIIDNTCCAh2gAwIBAgIUUg+wiCV2dsAOtDfA0TmBxP3hPvkwDQYJKoZIhvcNAQEL BQAwMTEvMC0GA1UEAwwmOTgzOGYwYWQ4NzU5NDQyZWE5ODIzYTVmYjhiOTQ4NWMu bG9jYWwwHhcNMTkwMjA3MDYzMDU1WhcNMjkwMjA0MDYzMDU1WjAxMS8wLQYDVQQD DCY5ODM4ZjBhZDg3NTk0NDJlYTk4MjNhNWZiOGI5NDg1Yy5sb2NhbDCCASEwDQYJ KoZIhvcNAQEBBQADggEOADCCAQkCggEAK3FMcNTU6GXh6ZRwKZtCQ6v+c6h5tJYl Bn/lLFy8KW6ogX2xP91j09i9D4K68jBfrimhbjqNSRpTVJot2fbypfVY4ZhwLJZE mNQa841jjcdkI4mMUTyoH6LPRUheC6U5SHiE0BzM1PH38yDLWcqtMSvlVvYFdZjI 7EGxV8ajS3kf1Srj+2ZWYyH9MSRFXWIYvaXSenqdVS768HhU6wur7VeZk0AOxFL0 2L6yhNZDJ3UNuOQhnFQdGp99icPqOI2TROcjw0xQiopuVlisq1fRHYg6lwydMun/ Vzkj/Nc8w2uZ5qAZ2iqjwREeyK8B1x9BYihlclyj42n64OXxqiYqiwIDAQABo0Yw RDAPBgNVHRMECDAGAQH/AgEAMDEGA1UdEQQqMCiCJjk4MzhmMGFkODc1OTQ0MmVh OTgyM2E1ZmI4Yjk0ODVjLmxvY2FsMA0GCSqGSIb3DQEBCwUAA4IBAQAUYiFCaKNs s40SUfSM12w+GMrXYNE3iav9b1yPZxmUk9bIwv28YSCzvtCj3W9ZgSxNjeOB+ueC 1PENko0XTbX/JnjYMLxEPn44uJS/gLv/W1LBFD8yvxg0lWNnn2qwIOAnnNvH9tfj d0O1NTCO1DIpO8xMWX7YxPMp7kbNPFDor4liSyDzYRwS1JJG5f2eRci2u4Vtk6Sa Xy1eYcd8EfJLbn3wpZeo3/EeToX9obGQ++MIIcU/Vfn9tVJlMxEO2t+BQTMiU6e1 Rq/magvqxHT9Le1abtbCf/ambLxtusY+eesvJx5BdUF1cSnm/wqY3rCR3/26xvia cfN7/NaYHZM3 -----END CERTIFICATE----- ","product_id":"b8f5cf2fd779404590892e28566fd32e","product_ip":"192.168.1.202"}

Data sent from an Android application and received at ESP32

1. Data is transferred in a single fragment for any data size
2. This is the expected behaviour

Below are the logs from ESP32 while it receives the data from the Android, transferred via Bluetooth
I (279440) HA.Node.blufi: Recv Custom Data 1277
I (279454) Custom Data in char : {"product_type":
I (279469) Custom Data in char : 4,"cert":"-----B
I (279483) Custom Data in char : EGIN CERTIFICATE
I (279497) Custom Data in char : ----- MIIDNTCCAh
I (279510) Custom Data in char : 2gAwIBAgIUUg+wiC
I (279529) Custom Data in char : V2dsAOtDfA0TmBxP
I (279547) Custom Data in char : 3hPvkwDQYJKoZIhv
I (279560) Custom Data in char : cNAQEL BQAwMTEvM
I (279575) Custom Data in char : C0GA1UEAwwmOTgzO
I (279593) Custom Data in char : GYwYWQ4NzU5NDQyZ
I (279607) Custom Data in char : WE5ODIzYTVmYjhiO
I (279622) Custom Data in char : TQ4NWMu bG9jYWww
I (279639) Custom Data in char : HhcNMTkwMjA3MDYz
I (279652) Custom Data in char : MDU1WhcNMjkwMjA0
I (279667) Custom Data in char : MDYzMDU1WjAxMS8w
I (279680) Custom Data in char : LQYDVQQD DCY5ODM
I (279698) Custom Data in char : 4ZjBhZDg3NTk0NDJ
I (279711) Custom Data in char : lYTk4MjNhNWZiOGI
I (279726) Custom Data in char : 5NDg1Yy5sb2NhbDC
I (279740) Custom Data in char : CASEwDQYJ KoZIhv
I (279753) Custom Data in char : cNAQEBBQADggEOAD
I (279766) Custom Data in char : CCAQkCggEAK3FMcN
I (279779) Custom Data in char : TU6GXh6ZRwKZtCQ6
I (279794) Custom Data in char : v+c6h5tJYl Bn/lL
I (279807) Custom Data in char : Fy8KW6ogX2xP91j0
I (279821) Custom Data in char : 9i9D4K68jBfrimhb
I (279834) Custom Data in char : jqNSRpTVJot2fbyp
I (279848) Custom Data in char : fVY4ZhwLJZE mNQa
I (279861) Custom Data in char : 841jjcdkI4mMUTyo
I (279875) Custom Data in char : H6LPRUheC6U5SHiE
I (279889) Custom Data in char : 0BzM1PH38yDLWcqt
I (279903) Custom Data in char : MSvlVvYFdZjI 7EG
I (279917) Custom Data in char : xV8ajS3kf1Srj+2Z
I (279930) Custom Data in char : WYyH9MSRFXWIYvaX
I (279943) Custom Data in char : SenqdVS768HhU6wu
I (279956) Custom Data in char : r7VeZk0AOxFL0 2L
I (279969) Custom Data in char : 6yhNZDJ3UNuOQhnF
I (279983) Custom Data in char : QdGp99icPqOI2TRO
I (279997) Custom Data in char : cjw0xQiopuVlisq1
I (280011) Custom Data in char : fRHYg6lwydMun/ V
I (280024) Custom Data in char : zkj/Nc8w2uZ5qAZ2
I (280038) Custom Data in char : iqjwREeyK8B1x9BY
I (280050) Custom Data in char : ihlclyj42n64OXxq
I (280064) Custom Data in char : iYqiwIDAQABo0Yw
I (280077) Custom Data in char : RDAPBgNVHRMECDAG
I (280090) Custom Data in char : AQH/AgEAMDEGA1Ud
I (280104) Custom Data in char : EQQqMCiCJjk4Mzhm
I (280118) Custom Data in char : MGFkODc1OTQ0MmVh
I (280132) Custom Data in char : OTgyM2E1ZmI4Yjk
I (280145) Custom Data in char : 0ODVjLmxvY2FsMA0
I (280158) Custom Data in char : GCSqGSIb3DQEBCwU
I (280171) Custom Data in char : AA4IBAQAUYiFCaKN
I (280183) Custom Data in char : s s40SUfSM12w+GM
I (280197) Custom Data in char : rXYNE3iav9b1yPZx
I (280210) Custom Data in char : mUk9bIwv28YSCzvt
I (280224) Custom Data in char : Cj3W9ZgSxNjeOB+u
I (280237) Custom Data in char : eC 1PENko0XTbX/J
I (280250) Custom Data in char : njYMLxEPn44uJS/g
I (280263) Custom Data in char : Lv/W1LBFD8yvxg0l
I (280276) Custom Data in char : WNnn2qwIOAnnNvH9
I (280289) Custom Data in char : tfj d0O1NTCO1DIp
I (280304) Custom Data in char : O8xMWX7YxPMp7kbN
I (280316) Custom Data in char : PFDor4liSyDzYRwS
I (280329) Custom Data in char : 1JJG5f2eRci2u4Vt
I (280343) Custom Data in char : k6Sa Xy1eYcd8EfJ
I (280355) Custom Data in char : Lbn3wpZeo3/EeToX
I (280369) Custom Data in char : 9obGQ++MIIcU/Vfn
I (280382) Custom Data in char : 9tVJlMxEO2t+BQTM
I (280395) Custom Data in char : iU6e1 Rq/magvqxH
I (280408) Custom Data in char : T9Le1abtbCf/ambL
I (280421) Custom Data in char : xtusY+eesvJx5BdU
I (280434) Custom Data in char : F1cSnm/wqY3rCR3/
I (280448) Custom Data in char : 26xvia cfN7/NaYH
I (280461) Custom Data in char : ZM3 -----END CER
I (280474) Custom Data in char : TIFICATE----- ",
I (280486) Custom Data in char : "product_id":"b8
I (280499) Custom Data in char : f5cf2fd779404590
I (280513) Custom Data in char : 892e28566fd32e",
I (280526) Custom Data in char : "product_ip":"19
I (280539) Custom Data in char : 2.168.1.202"}

Data sent from an IOS and received at ESP32

1. Data is sent in multiple fragments rather than a single fragment(16 splits)
2. Each fragment contains a incorrect character at the beginning
3. Some initial characters are not getting transferred

Below are the logs from ESP32 while it receives the data from the IOS, transferred via Bluetooth
I (10390) HA.Node.blufi: Recv Custom Data 82
I (10395) Custom Data in char : P
I (10397) Custom Data in char : ":4,"cert":"----
I (10400) Custom Data in char : -BEGIN CERTIFICA
I (10404) Custom Data in char : TE----- MIIDNTCC
I (10409) Custom Data in char : Ah2gAwIBAgIUUg+w
I (10414) Custom Data in char : iC
E (10418) HA.Node.blufi: Internal error : P

I (10507) HA.Node.blufi: Recv Custom Data 82
I (10512) Custom Data in char : P
I (10514) Custom Data in char : xP3hPvkwDQYJKoZI
I (10516) Custom Data in char : hvcNAQEL BQAwMTE
I (10520) Custom Data in char : vMC0GA1UEAwwmOTg
I (10525) Custom Data in char : zOGYwYWQ4NzU5NDQ
I (10531) Custom Data in char : yZ
E (10535) HA.Node.blufi: Internal error : P

I (10570) HA.Node.blufi: Recv Custom Data 82
I (10576) Custom Data in char : P
I (10578) Custom Data in char : iOTQ4NWMu bG9jYW
I (10580) Custom Data in char : wwHhcNMTkwMjA3MD
I (10584) Custom Data in char : YzMDU1WhcNMjkwMj
I (10589) Custom Data in char : A0MDYzMDU1WjAxMS
I (10595) Custom Data in char : 8w
E (10599) HA.Node.blufi: Internal error : P

I (10630) HA.Node.blufi: Recv Custom Data 82
I (10635) Custom Data in char : P
I (10638) Custom Data in char : DM4ZjBhZDg3NTk0N
I (10640) Custom Data in char : DJlYTk4MjNhNWZiO
I (10644) Custom Data in char : GI5NDg1Yy5sb2Nhb
I (10649) Custom Data in char : DCCASEwDQYJ KoZI
I (10654) Custom Data in char : hv
E (10659) HA.Node.blufi: Internal error : P

I (10691) HA.Node.blufi: Recv Custom Data 82
I (10696) Custom Data in char : P
I (10698) Custom Data in char : ADCCAQkCggEAK3FM
I (10700) Custom Data in char : cNTU6GXh6ZRwKZtC
I (10704) Custom Data in char : Q6v+c6h5tJYl Bn/
I (10710) Custom Data in char : lLFy8KW6ogX2xP91
I (10715) Custom Data in char : j0
E (10719) HA.Node.blufi: Internal error : P

I (10778) HA.Node.blufi: Recv Custom Data 82
I (10783) Custom Data in char : P
I (10785) Custom Data in char : hbjqNSRpTVJot2fb
I (10787) Custom Data in char : ypfVY4ZhwLJZE mN
I (10791) Custom Data in char : Qa841jjcdkI4mMUT
I (10796) Custom Data in char : yoH6LPRUheC6U5SH
I (10802) Custom Data in char : iE
E (10806) HA.Node.blufi: Internal error : P

I (10840) HA.Node.blufi: Recv Custom Data 82
I (10846) Custom Data in char : P
I (10848) Custom Data in char : qtMSvlVvYFdZjI 7
I (10850) Custom Data in char : EGxV8ajS3kf1Srj+
I (10854) Custom Data in char : 2ZWYyH9MSRFXWIYv
I (10859) Custom Data in char : aXSenqdVS768HhU6
I (10865) Custom Data in char : wu
E (10869) HA.Node.blufi: Internal error : P

I (10901) HA.Node.blufi: Recv Custom Data 82
I (10907) Custom Data in char : P
I (10909) Custom Data in char : 2L6yhNZDJ3UNuOQh
I (10911) Custom Data in char : nFQdGp99icPqOI2T
I (10915) Custom Data in char : ROcjw0xQiopuVlis
I (10920) Custom Data in char : q1fRHYg6lwydMun/
I (10926) Custom Data in char : V
E (10930) HA.Node.blufi: Internal error : P

I (10960) HA.Node.blufi: Recv Custom Data 82
I (10966) Custom Data in char : P
I (10968) Custom Data in char : Z2iqjwREeyK8B1x9
I (10970) Custom Data in char : BYihlclyj42n64OX
I (10974) Custom Data in char : xqiYqiwIDAQABo0Y
I (10979) Custom Data in char : w RDAPBgNVHRMECD
I (10985) Custom Data in char : AG
E (10989) HA.Node.blufi: Internal error : P

I (11020) HA.Node.blufi: Recv Custom Data 82
I (11025) Custom Data in char : P
I (11028) Custom Data in char : UdEQQqMCiCJjk4Mz
I (11030) Custom Data in char : hmMGFkODc1OTQ0Mm
I (11034) Custom Data in char : Vh OTgyM2E1ZmI4Y
I (11039) Custom Data in char : jk0ODVjLmxvY2FsM
I (11045) Custom Data in char : A0
E (11049) HA.Node.blufi: Internal error : P

I (11080) HA.Node.blufi: Recv Custom Data 82
I (11086) Custom Data in char : P
I (11088) Custom Data in char : wUAA4IBAQAUYiFCa
I (11090) Custom Data in char : KNs s40SUfSM12w+
I (11094) Custom Data in char : GMrXYNE3iav9b1yP
I (11099) Custom Data in char : ZxmUk9bIwv28YSCz
I (11105) Custom Data in char : vt
E (11109) HA.Node.blufi: Internal error : P

I (11140) HA.Node.blufi: Recv Custom Data 82
I (11146) Custom Data in char : P
I (11148) Custom Data in char : +ueC 1PENko0XTbX
I (11150) Custom Data in char : /JnjYMLxEPn44uJS
I (11154) Custom Data in char : /gLv/W1LBFD8yvxg
I (11160) Custom Data in char : 0lWNnn2qwIOAnnNv
I (11165) Custom Data in char : H9
E (11169) HA.Node.blufi: Internal error : P

I (11200) HA.Node.blufi: Recv Custom Data 82
I (11207) Custom Data in char : P
I (11209) Custom Data in char : IpO8xMWX7YxPMp7k
I (11212) Custom Data in char : bNPFDor4liSyDzYR
I (11215) Custom Data in char : wS1JJG5f2eRci2u4
I (11222) Custom Data in char : Vtk6Sa Xy1eYcd8E
I (11226) Custom Data in char : fJ
E (11230) HA.Node.blufi: Internal error : P

I (11290) HA.Node.blufi: Recv Custom Data 82
I (11297) Custom Data in char : P
I (11299) Custom Data in char : oX9obGQ++MIIcU/V
I (11301) Custom Data in char : fn9tVJlMxEO2t+BQ
I (11305) Custom Data in char : TMiU6e1 Rq/magvq
I (11310) Custom Data in char : xHT9Le1abtbCf/am
I (11316) Custom Data in char : bL
E (11320) HA.Node.blufi: Internal error : P

I (11350) HA.Node.blufi: Recv Custom Data 82
I (11356) Custom Data in char : P
I (11358) Custom Data in char : dUF1cSnm/wqY3rCR
I (11360) Custom Data in char : 3/26xvia cfN7/Na
I (11364) Custom Data in char : YHZM3 -----END C
I (11369) Custom Data in char : ERTIFICATE-----
I (11375) Custom Data in char : ",
E (11379) HA.Node.blufi: Internal error : P

I (11412) HA.Node.blufi: Recv Custom Data 77
I (11417) Custom Data in char : "product_id":"b8
I (11420) Custom Data in char : f5cf2fd779404590
I (11422) Custom Data in char : 892e28566fd32e",
I (11427) Custom Data in char : "product_ip":"19
I (11432) Custom Data in char : 2.168.1.202"}

For IOS correct data is being sent only in the cases where there is only a single fragment being transferred(small data size)

Data being sent from IOS to ESP32
{"product_type":4,","product_ip":"192.168.1.202"}

1. It transferred correct data when single fragment is being transferred from an IOS

ESP32 logs transferred from an IOS below
I (75253) HA.Node.blufi: Recv Custom Data 49
I (75269) Custom Data in char : {"product_type":
I (75284) Custom Data in char : 4,","product_ip"
I (75297) Custom Data in char : :"192.168.1.202"
I (75311) Custom Data in char : }

My questions
1. How can we send data in IOS just like the way android does(in a single fragment)?
2. The multiple fragment transmission in IOS is sending incorrect data which may be corrected although I would request code changes to make transfer in a single fragment

Any update on this?

We have updated codes to fixed long custom data bug on iOS.

iOS can now send large custom data with the code changes. Thank You ๐Ÿ™‚๐Ÿ‘