Skip to content

Instantly share code, notes, and snippets.

@ConnorRigby
Created November 1, 2016 17:03
Show Gist options
  • Save ConnorRigby/ec6ccc0027182495fbad6cac63ff3782 to your computer and use it in GitHub Desktop.
Save ConnorRigby/ec6ccc0027182495fbad6cac63ff3782 to your computer and use it in GitHub Desktop.
# When pin is 10-99 and value is 0-9
def parse_code(<<"R21 P", param :: size(16)," V", value :: size(8), " Q", tag :: binary>>)
do { :report_parameter_value, param, value, tag } end
# When param is 10-99 and up and value is 10-99
def parse_code(<<"R21 P", param :: size(16)," V", value :: size(16), " Q", tag :: binary>>)
do { :report_parameter_value, param, value, tag } end
# When param is 10-99 and up and value is 100-999
def parse_code(<<"R21 P", param :: size(16)," V", value :: size(24), " Q", tag :: binary>>)
do { :report_parameter_value, param, value, tag } end
# When param is 10-99 and up and value is 1000-9999
def parse_code(<<"R21 P", param :: size(16)," V", value :: size(32), " Q", tag :: binary>>)
do { :report_parameter_value, param, value, tag } end
# When param is 10-99 and up and value is 10000-99999
def parse_code(<<"R21 P", param :: size(16)," V", value :: size(40), " Q", tag :: binary>>)
do { :report_parameter_value, param, value, tag } end
# When pin is 100-999 and value is 0-9
def parse_code(<<"R21 P", param :: size(24)," V", value :: size(8), " Q", tag :: binary>>)
do { :report_parameter_value, param, value, tag } end
# When param is 100-999 and up and value is 10-99
def parse_code(<<"R21 P", param :: size(24)," V", value :: size(16), " Q", tag :: binary>>)
do { :report_parameter_value, param, value, tag } end
# When param is 100-999 and up and value is 100-999
def parse_code(<<"R21 P", param :: size(24)," V", value :: size(24), " Q", tag :: binary>>)
do { :report_parameter_value, param, value, tag } end
# When param is 100-999 and up and value is 1000-9999
def parse_code(<<"R21 P", param :: size(24)," V", value :: size(32), " Q", tag :: binary>>)
do { :report_parameter_value, param, value, tag } end
# When param is 100-999 and up and value is 10000-99999
def parse_code(<<"R21 P", param :: size(24)," V", value :: size(40), " Q", tag :: binary>>)
do { :report_parameter_value, param, value, tag } end
# Fallback
def parse_code(<<"R21", params :: binary>>) do { :report_parameter_value, params } end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment