748c84973347a149d6c882cf08cb7a15a037454b
[paste/609.git] / oms-manuf.php
1 #!/usr/bin/env php\r
2 <?php\r
3 /**\r
4  * Convert Open Metering System manufacturer codes to acronyms and back\r
5  *\r
6  * 5CB0 <=> WEP\r
7  *\r
8  * @author Christian Weiske <weiske@mogic.com>\r
9  */\r
10 if ($argc < 2) {\r
11     echo "Pass manufacturer code or acronym\n";\r
12     exit(1);\r
13 }\r
14 \r
15 $param = $argv[1];\r
16 \r
17 if (strlen($param) == 3) {\r
18     //acronym like ZRI\r
19     $bin = '0'\r
20          . str_pad(decbin(ord($param{0}) - 64), 5, '0', STR_PAD_LEFT)\r
21          . str_pad(decbin(ord($param{1}) - 64), 5, '0', STR_PAD_LEFT)\r
22          . str_pad(decbin(ord($param{2}) - 64), 5, '0', STR_PAD_LEFT);\r
23     echo str_pad(strtoupper(dechex(bindec($bin))), 4, '0', STR_PAD_LEFT)\r
24         . "\n";\r
25 } else if (strlen($param) == 4) {\r
26     // 2 bytes as 6A49\r
27     $fb = str_pad(decbin(hexdec('5CB0')), 16, '0', STR_PAD_LEFT);\r
28     echo chr(64 + bindec(substr($fb, 1, 5)))\r
29         . chr(64 + bindec(substr($fb, 6, 5)))\r
30         . chr(64 + bindec(substr($fb, 11, 5)))\r
31         . "\n";\r
32 } else {\r
33     echo "Wrong length; 3 or 4 characters expected\n";\r
34     exit(2);\r
35 }\r
36 \r
37 ?>\r