Merge remote branch 'upstream/master'

Conflicts:
	mbus/mbus-serial.c
This commit is contained in:
Stefan Wahren
2012-05-14 00:09:05 +02:00
12 changed files with 166 additions and 104 deletions

View File

@ -24,7 +24,7 @@
#define MBUS_DEBUG(...)
#endif
static int debug = 1;
static int debug = 0;
typedef struct _mbus_variable_vif {
unsigned vif;
@ -1557,14 +1557,7 @@ mbus_sendrecv_request(mbus_handle *handle, int address, mbus_frame *reply, int m
while (more_frames)
{
frame_count++;
if ((max_frames > 0) &&
(frame_count > max_frames))
{
// only readout max_frames
break;
}
if (debug)
printf("%s: debug: receiving response frame #%d\n", __PRETTY_FUNCTION__, frame_count);
@ -1601,7 +1594,8 @@ mbus_sendrecv_request(mbus_handle *handle, int address, mbus_frame *reply, int m
{
more_frames = 0;
if (reply_data.data_var.more_records_follow)
if (reply_data.data_var.more_records_follow &&
((max_frames > 0) && (frame_count < max_frames))) // only readout max_frames
{
if (debug)
printf("%s: debug: expecting more frames\n", __PRETTY_FUNCTION__);

View File

@ -2768,27 +2768,29 @@ mbus_parse_set_debug(int debug)
int
mbus_frame_print(mbus_frame *frame)
{
mbus_frame *iter;
u_char data_buff[256];
int len, i;
if (frame)
if (frame == NULL)
return -1;
for (iter = frame; iter; iter = iter->next)
{
if ((len = mbus_frame_pack(frame, data_buff, sizeof(data_buff))) == -1)
if ((len = mbus_frame_pack(iter, data_buff, sizeof(data_buff))) == -1)
{
return -2;
}
printf("%s: Dumping M-Bus frame [type %d, %d bytes]: ", __PRETTY_FUNCTION__, frame->type, len);
printf("%s: Dumping M-Bus frame [type %d, %d bytes]: ", __PRETTY_FUNCTION__, iter->type, len);
for (i = 0; i < len; i++)
{
printf("%.2X ", data_buff[i]);
}
printf("\n");
return 0;
}
return -1;
return 0;
}
//------------------------------------------------------------------------------

View File

@ -166,6 +166,16 @@ mbus_serial_send_frame(mbus_serial_handle *handle, mbus_frame *frame)
fprintf(stderr, "%s: mbus_frame_pack failed\n", __PRETTY_FUNCTION__);
return -1;
}
#ifdef MBUS_SERIAL_DEBUG
// if debug, dump in HEX form to stdout what we write to the serial port
printf("%s: Dumping M-Bus frame [%d bytes]: ", __PRETTY_FUNCTION__, len);
for (i = 0; i < len; i++)
{
printf("%.2X ", buff[i]);
}
printf("\n");
#endif
if ((ret = write(handle->fd, buff, len)) == len)
{