{"action":"created","issue":{"url":"https://api.github.com/repos/smartdevicelink/sdl_core/issues/17","labels_url":"https://api.github.com/repos/smartdevicelink/sdl_core/issues/17/labels{/name}","comments_url":"https://api.github.com/repos/smartdevicelink/sdl_core/issues/17/comments","events_url":"https://api.github.com/repos/smartdevicelink/sdl_core/issues/17/events","html_url":"https://github.com/smartdevicelink/sdl_core/issues/17","id":55291017,"number":17,"title":"[Spec] The version can never be increased beyond 15, or backward compatibility is broken","user":{"login":"joeljfischer","id":1767063,"avatar_url":"https://avatars.githubusercontent.com/u/1767063?v=3","gravatar_id":"","url":"https://api.github.com/users/joeljfischer","html_url":"https://github.com/joeljfischer","followers_url":"https://api.github.com/users/joeljfischer/followers","following_url":"https://api.github.com/users/joeljfischer/following{/other_user}","gists_url":"https://api.github.com/users/joeljfischer/gists{/gist_id}","starred_url":"https://api.github.com/users/joeljfischer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/joeljfischer/subscriptions","organizations_url":"https://api.github.com/users/joeljfischer/orgs","repos_url":"https://api.github.com/users/joeljfischer/repos","events_url":"https://api.github.com/users/joeljfischer/events{/privacy}","received_events_url":"https://api.github.com/users/joeljfischer/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/smartdevicelink/sdl_core/labels/bug","name":"bug","color":"e51c23"},{"url":"https://api.github.com/repos/smartdevicelink/sdl_core/labels/help%20wanted","name":"help wanted","color":"ffeb3b"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":1,"created_at":"2015-01-23T15:04:48Z","updated_at":"2015-01-23T15:12:38Z","closed_at":null,"body":"We discovered #16 when we were discussing this issue.\r\n\r\nWe can never actually increase the version beyond 15 because of how backward compatibility works. If we attempt to, we would run into an issue with the Head Unit sending it's max version back as part of a StartSessionACK. If the head unit sends a new style ACK with a larger version byte, then previous versions of the mobile library will not be able to read it. If it sends an old style ACK then that version can never be increased beyond 0x0F."},"comment":{"url":"https://api.github.com/repos/smartdevicelink/sdl_core/issues/comments/71206947","html_url":"https://github.com/smartdevicelink/sdl_core/issues/17#issuecomment-71206947","issue_url":"https://api.github.com/repos/smartdevicelink/sdl_core/issues/17","id":71206947,"user":{"login":"joeygrover","id":6579474,"avatar_url":"https://avatars.githubusercontent.com/u/6579474?v=3","gravatar_id":"","url":"https://api.github.com/users/joeygrover","html_url":"https://github.com/joeygrover","followers_url":"https://api.github.com/users/joeygrover/followers","following_url":"https://api.github.com/users/joeygrover/following{/other_user}","gists_url":"https://api.github.com/users/joeygrover/gists{/gist_id}","starred_url":"https://api.github.com/users/joeygrover/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/joeygrover/subscriptions","organizations_url":"https://api.github.com/users/joeygrover/orgs","repos_url":"https://api.github.com/users/joeygrover/repos","events_url":"https://api.github.com/users/joeygrover/events{/privacy}","received_events_url":"https://api.github.com/users/joeygrover/received_events","type":"User","site_admin":false},"created_at":"2015-01-23T15:12:38Z","updated_at":"2015-01-23T15:12:38Z","body":"The other issue here is that v2+ head units send back a v2 packet (12 bytes) not a v1 packet (v1). So if an older app only had the v1 protocol  version of the mobile lib it wouldn't know what to do the extra 4 bytes attached to the ACK and most likely crash. (Possible reason why some older apps were crashing when connecting)\r\n\r\nWe COULD do something along the lines of if version==16 then the payload actually contains the version in subtag fashion. Since right now there is some data that comes back in the ack (I believe the hash id), but mobile libs can handle it because the data size is correct for that size payload. While I really don't like this solution, I know it would work. Other ideas are much appreciated. "}}