Advertisement
Guest User

Updated Elro TXP script

a guest
Feb 4th, 2016
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.98 KB | None | 0 0
  1. #!/bin/bash
  2. set -euo pipefail
  3.  
  4. #######################################
  5. # Builds a TXP string from the given arguments
  6. # Globals:
  7. # None
  8. # Arguments:
  9. # $masterCode $slaveCode $stateCode
  10. # Returns:
  11. # $msgStr
  12. #######################################
  13. build_elro_txp() {
  14. local masterCode=$1
  15. local slaveCode=$2
  16. local stateCode=$3
  17.  
  18. local sA=0
  19. local sG=0
  20. local sRepeat=15
  21. local sPause=5600
  22. local sTune=350
  23. local sBaud=25
  24. local sSpeed=16
  25.  
  26. local headStr="TXP:$sA,$sG,$sRepeat,$sPause,$sTune,$sBaud,"
  27. local tailStr=",1,1,$sSpeed,;"
  28. local onStr="1,3,1,3,3"
  29. local offStr="3,1,1,3,1"
  30.  
  31. local bitLow=1
  32. local bitHgh=3
  33.  
  34. local seqLow="$bitHgh,$bitHgh,$bitLow,$bitLow,"
  35. local seqHgh="$bitHgh,$bitLow,$bitHgh,$bitLow,"
  36.  
  37. local msg=""
  38. local bits=$masterCode$slaveCode
  39. for (( i=0; i<${#bits}; i++ ))
  40. do
  41. local bit=${bits:$i:1}
  42.  
  43. if [ "$bit" == "0" ]; then
  44. local msg=$msg$seqLow
  45. else
  46. local msg=$msg$seqHgh
  47. fi
  48. done
  49.  
  50.  
  51. if [ "${stateCode,,}" == "on" ]; then
  52. local stateCode=$onStr
  53. fi
  54. if [ "${stateCode,,}" == "off" ]; then
  55. local stateCode=$offStr
  56. fi
  57.  
  58. local msgStr=$headStr$bitLow","$msg$bitHgh","$stateCode$tailStr
  59. echo "$msgStr"
  60. }
  61.  
  62. err() {
  63. echo -e "[$(date +'%Y-%m-%dT%H:%M:%S%z')]: $*" >&2
  64. exit 1
  65. }
  66.  
  67. # main
  68. if [ "$#" -lt 3 ]; then
  69. err "Wrong number of arguments $# ($*).\nUsage: $0 <masterdip> <slavedip> on|off"
  70. fi
  71.  
  72. masterCode=$1
  73. slaveCode=$2
  74. stateCode=$3
  75.  
  76. if [ "${#masterCode}" -ne 5 ]; then
  77. err "Master code has to contain 5 digits."
  78. fi
  79. if [ "${#slaveCode}" -ne 5 ]; then
  80. err "Slave code has to contain 5 digits."
  81. fi
  82. if [[ "$masterCode" = *[^0-1]* ]] || [[ "$slaveCode" = *[^0-1]* ]]; then
  83. err "Master and slave code can only contain 0 and 1."
  84. fi
  85. if [ "${stateCode,,}" != "on" ] && [ "${stateCode,,}" != "off" ]; then
  86. err "Unknown state ${stateCode}."
  87. fi
  88.  
  89. string=$(build_elro_txp "$masterCode" "$slaveCode" "$stateCode")
  90. echo "$string"
  91. exit
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement