72 Commits

Author SHA1 Message Date
Michael Heimpold
f262138572 mbus_manufacturer_id: add error checking code
Signed-off-by: Michael Heimpold <mhei@heimpold.de>
2014-01-18 20:43:57 +01:00
Michael Heimpold
0fccc0e337 Add a function to calculate the manufacturer ID from the 3 byte ASCII
code. The formula can be found at http://www.m-bus.com/files/w4b21021.pdf,
chapter 3.3 at page 6.

This obsoletes the static defines, so remove them.

Signed-off-by: Michael Heimpold <mhei@heimpold.de>
2014-01-18 13:44:01 +01:00
Stefan Wahren
0d9f83ba88 Extend XML output with storage number, tariff and device 2013-11-07 00:32:01 +01:00
Stefan Wahren
58778ba9bc Add functions to decode storage number, tariff and device from DIF 2013-11-07 00:24:11 +01:00
Stefan Wahren
d79cb1c998 Fix BCD decoding bug 2013-11-07 00:13:56 +01:00
Stefan Wahren
e9d39d4708 Extend DIF debug output (storage number LSB)
Fix DIFE debug output (storage number, tariff, device unit)
Fix typos in comments
Replace magic bit masks with defines
2013-11-06 11:11:43 +01:00
Stefan Wahren
4b82502c06 Add product name mapping for GMC-I EMMOD206 2013-10-31 23:01:06 +01:00
Stefan Wahren
6afe7a10dc fix wrong decoding of integer / type B (now handle signedness correctly)
separate result code und decoded value for integer decoding (new
parameter)
refactor variable names
2013-10-31 22:25:34 +01:00
Stefan Wahren
7ca329ee40 Add product name mapping for Rossweiner Modularis 2013-10-18 17:32:22 +02:00
Stefan Wahren
0cf57bfc35 Move event handling from global variable to handle
- remove global event function pointer
- add event function pointer to handle structure
- add handle parameter to register functions
- move all register functions to mbus-protocol-aux.c
2013-10-13 21:49:40 +02:00
Stefan Wahren
55d4c0fba2 Remove trailing whitespace
Signed-off-by: Stefan Wahren <info@lategoodbye.de>
2013-09-13 17:53:33 +02:00
Stefan Wahren
d9dd055bea Fix mbus_vib_unit_lookup
remove unreachable code
add missing unit password
fix typo

Signed-off-by: Stefan Wahren <info@lategoodbye.de>
2013-08-03 16:35:09 +02:00
Robert Johansson
5b83cad8fb only show timestamp in XML output if it is set (not all frames that goes into mbus_parse passes through timestamp), to avoid a lot of '<Timestamp>1970-01-01T00:00:00</Timestamp>' 2013-07-04 23:47:06 +09:00
Robert Johansson
1fee3d9a5a bug fix: don't assume that frame->next is zeroed before mbus_parse is called 2013-07-04 23:30:27 +09:00
Stefan Wahren
70f23567a8 fix potential segmentation fault 2013-07-03 20:36:43 +02:00
Stefan Wahren
551176911f fix memory leaks in error case 2013-07-03 20:34:30 +02:00
Stefan Wahren
8dd1d4e4ae bugfix for +1 error in VIFE parser
now VIFE and DIFE behave equal
2013-07-03 20:30:20 +02:00
Robert Johansson
88b2b9fafa bugfix in VIFE parser 2013-07-03 22:50:03 +09:00
Robert Johansson
31f17ab4c2 use error_str instead of direct console output 2013-07-03 22:18:06 +09:00
Stefan Wahren
dd56a08811 Improve data parsing
- add length defines for variable data header and fixed data
- add size check for fixed data
- avoid problems with memory alignment / padding in mbus structures
(improve portability)
- abort parsing if there are too many DIFE or VIFEs
- check for premature end of variable data
- check size of variable length VIF
2013-06-22 11:50:36 +02:00
Stefan Wahren
c59e763a84 minor fixes
remove unreachable code
add parameter checks to mbus_data_bcd_encode
init time structure in mbus_data_tm_decode as possible
mark falltrough for splint
remove unused variable val
fix removed realloc
2013-05-04 22:43:23 +02:00
Stefan Wahren
ee209023b8 fix memleaks
avoid memleak if memory is full
fix "memleak" at the end of mbus_parse_hex
2013-05-04 19:17:27 +02:00
Stefan Wahren
3935b4013e make parseable for splint
- replace non standard u_char with unsigned char (ANSI)
- advice splint to ignore variadic macros
- move declarations from the middle to top of functions (C90)
- replace local library includes <> to ""
2013-05-04 18:14:18 +02:00
Stefan Wahren
0d6bb583c2 add missing initialization (thanks to valgrind) 2013-05-03 17:23:18 +02:00
Stefan Wahren
5500db0898 add missing checks after memory allocation
add missing memset after memory allocation
2013-04-11 22:05:08 +02:00
Jakob Skov-Pedersen
6166553755 Make my last change more readable.
As suggested by lategoodbye. Also make it more in line with the way
everything else is written.
2013-03-17 09:19:29 +01:00
Jakob Skov-Pedersen
363f59a149 Ignore filler DIF (= 0x2F) 2013-03-11 09:27:16 +01:00
Stefan Wahren
b1063db3bc replace magic numbers with defines
fix MBUS_MAX_PRIMARY_SLAVES to 250
2013-03-02 18:03:31 +01:00
Stefan Wahren
61fd2aa1c7 add new helper functions to check primary and secondary addresses 2012-12-31 13:37:17 +01:00
Stefan Wahren
2335deb742 Fix segmentation fault
- check if L Field is at least 3 to avoid crash (MBDOC48.PDF, page 23)
2012-12-22 00:08:59 +01:00
Stefan Wahren
1080031879 Merge remote-tracking branch 'origin/master'
Conflicts:
	mbus/mbus-protocol.c
2012-12-20 20:57:33 +01:00
Stefan Wahren
404e245af5 replace magic number with define 2012-12-20 20:42:10 +01:00
Stefan Wahren
a4e92f6eab replace magic number with define 2012-12-20 20:12:19 +01:00
Stefan Wahren
688f0d3bc0 Added product name mapping for Elvaco meters 2012-10-21 23:24:04 +02:00
Stefan Wahren
bc2c85c378 Add custom VIFE handling with a corrective factor (from Jakob
Skov-Pedersen)
2012-10-21 11:21:07 +02:00
Stefan Wahren
0c26bc17a7 Add VIF for digital input and output
Correct some cases
2012-10-21 11:09:21 +02:00
Stefan Wahren
99d48d27b2 Extended mbus_data_variable_print to print out VIF/VIFE 2012-10-21 11:05:08 +02:00
Stefan Wahren
3de91c5eab Added product name mapping for Ista sensonic II mbus 2012-10-05 22:09:07 +02:00
Stefan Wahren
30ab8dd643 handle direction of ACK correctly 2012-10-04 23:20:28 +02:00
Stefan Wahren
d6c5529247 new function mbus_frame_direction to get the direction of a frame
(slave to master or vice versa)
extended mbus_frame_data_parse to check the direction of a frame
2012-10-03 23:01:44 +02:00
Stefan Wahren
fe4217772c Added product name mapping for Sensus PolluCom E 2012-09-17 21:01:53 +02:00
Stefan Wahren
1ae8869d7b convert all control chars into spaces to be xml 1.0 conform 2012-09-16 18:15:55 +02:00
Stefan Wahren
e653894bce Merge remote-tracking branch 'upstream/master' 2012-08-25 09:09:50 +02:00
Robert Johansson
dbd69e49f5 make sure that records are initialized to avoid potential core dumps after incomplete parsning and repacking 2012-08-12 19:08:14 +09:00
Stefan Wahren
166b93a1b1 Added product name mapping for Kamstrup 382 2012-07-25 00:09:11 +02:00
Robert Johansson
ed61932579 fixed bug in float point decoding. previously failed when exponent<0. 2012-07-24 23:59:20 +09:00
Robert Johansson
4af9518ce5 correct fprintf format type for size_t 2012-07-24 23:11:02 +09:00
jakubovsky
c848090f56 Rebuilding M-Bus context structs in progress
- changed local library file includes from <> to ""
- get rid of 'if (is_serial)' conditions
- mbus_context_serial() and mbus_context_tcp() allocates memory and initialize context specific function pointers
- simply mbus_connect() called instead of mbus_connect_tcp() or mbus_connect_serial()
- context specific data can still be accessed via (void* auxdata) pointer
- strdup(3) to copy host IP into TCP context struct
2012-07-04 17:18:36 +02:00
Stefan Wahren
f492e97186 Improved model mapping
- added und fixed mapping
2012-06-10 19:19:46 +02:00
Stefan Wahren
bf12395af9 Fixed segmentation fault in case of much XML output
Because of the multi telegrams it is impossible to use a fixed
buffer for XML output on the stack. Now the buffer is allocated on the
heap. These also leads to a change in return behaviour for all XML
functions, because it's possible that the buffer is NULL. For variable
data this buffer grows every time there are less than 1024 bytes left
for a new record.
2012-05-29 21:24:30 +02:00