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
This commit is contained in:
parent
3aa81cfb23
commit
e9d39d4708
@ -849,7 +849,7 @@ int mbus_variable_value_decode(mbus_data_record *record, double *value_out_real,
|
|||||||
vif = (record->drh.vib.vif & MBUS_DIB_VIF_WITHOUT_EXTENSION);
|
vif = (record->drh.vib.vif & MBUS_DIB_VIF_WITHOUT_EXTENSION);
|
||||||
vife = (record->drh.vib.vife[0] & MBUS_DIB_VIF_WITHOUT_EXTENSION);
|
vife = (record->drh.vib.vife[0] & MBUS_DIB_VIF_WITHOUT_EXTENSION);
|
||||||
|
|
||||||
switch (record->drh.dib.dif & 0x0F)
|
switch (record->drh.dib.dif & MBUS_DATA_RECORD_DIF_MASK_DATA)
|
||||||
{
|
{
|
||||||
case 0x00: /* no data */
|
case 0x00: /* no data */
|
||||||
if ((*value_out_str = (char*) malloc(1)) == NULL)
|
if ((*value_out_str = (char*) malloc(1)) == NULL)
|
||||||
|
@ -1603,14 +1603,14 @@ mbus_unit_prefix(int exp)
|
|||||||
}
|
}
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
/// Look up the data lenght from a VIF field in the data record.
|
/// Look up the data length from a DIF field in the data record.
|
||||||
///
|
///
|
||||||
/// See the table on page 41 the M-BUS specification.
|
/// See the table on page 41 the M-BUS specification.
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
unsigned char
|
unsigned char
|
||||||
mbus_dif_datalength_lookup(unsigned char dif)
|
mbus_dif_datalength_lookup(unsigned char dif)
|
||||||
{
|
{
|
||||||
switch (dif&0x0F)
|
switch (dif & MBUS_DATA_RECORD_DIF_MASK_DATA)
|
||||||
{
|
{
|
||||||
case 0x0:
|
case 0x0:
|
||||||
return 0;
|
return 0;
|
||||||
@ -2221,7 +2221,7 @@ mbus_data_record_decode(mbus_data_record *record)
|
|||||||
vif = (record->drh.vib.vif & MBUS_DIB_VIF_WITHOUT_EXTENSION);
|
vif = (record->drh.vib.vif & MBUS_DIB_VIF_WITHOUT_EXTENSION);
|
||||||
vife = (record->drh.vib.vife[0] & MBUS_DIB_VIF_WITHOUT_EXTENSION);
|
vife = (record->drh.vib.vife[0] & MBUS_DIB_VIF_WITHOUT_EXTENSION);
|
||||||
|
|
||||||
switch (record->drh.dib.dif & 0x0F)
|
switch (record->drh.dib.dif & MBUS_DATA_RECORD_DIF_MASK_DATA)
|
||||||
{
|
{
|
||||||
case 0x00: // no data
|
case 0x00: // no data
|
||||||
|
|
||||||
@ -2890,7 +2890,7 @@ mbus_data_variable_parse(mbus_frame *frame, mbus_data_variable *data)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// re-calculate data length, if of variable length type
|
// re-calculate data length, if of variable length type
|
||||||
if ((record->drh.dib.dif & 0x0F) == 0x0D) // flag for variable length data
|
if ((record->drh.dib.dif & MBUS_DATA_RECORD_DIF_MASK_DATA) == 0x0D) // flag for variable length data
|
||||||
{
|
{
|
||||||
if(frame->data[i] <= 0xBF)
|
if(frame->data[i] <= 0xBF)
|
||||||
record->data_len = frame->data[i++];
|
record->data_len = frame->data[i++];
|
||||||
@ -3335,6 +3335,7 @@ mbus_data_variable_print(mbus_data_variable *data)
|
|||||||
// DIF
|
// DIF
|
||||||
printf("DIF = %.2X\n", record->drh.dib.dif);
|
printf("DIF = %.2X\n", record->drh.dib.dif);
|
||||||
printf("DIF.Extension = %s\n", (record->drh.dib.dif & MBUS_DIB_DIF_EXTENSION_BIT) ? "Yes":"No");
|
printf("DIF.Extension = %s\n", (record->drh.dib.dif & MBUS_DIB_DIF_EXTENSION_BIT) ? "Yes":"No");
|
||||||
|
printf("DIF.StorageNumber = %d\n", (record->drh.dib.dif & MBUS_DATA_RECORD_DIF_MASK_STORAGE_NO) >> 6);
|
||||||
printf("DIF.Function = %s\n", (record->drh.dib.dif & 0x30) ? "Minimum value" : "Instantaneous value" );
|
printf("DIF.Function = %s\n", (record->drh.dib.dif & 0x30) ? "Minimum value" : "Instantaneous value" );
|
||||||
printf("DIF.Data = %.2X\n", record->drh.dib.dif & 0x0F);
|
printf("DIF.Data = %.2X\n", record->drh.dib.dif & 0x0F);
|
||||||
|
|
||||||
@ -3365,9 +3366,10 @@ mbus_data_variable_print(mbus_data_variable *data)
|
|||||||
unsigned char dife = record->drh.dib.dife[j];
|
unsigned char dife = record->drh.dib.dife[j];
|
||||||
|
|
||||||
printf("DIFE[%zd] = %.2X\n", j, dife);
|
printf("DIFE[%zd] = %.2X\n", j, dife);
|
||||||
printf("DIFE[%zd].Extension = %s\n", j, (dife & MBUS_DIB_DIF_EXTENSION_BIT) ? "Yes" : "No");
|
printf("DIFE[%zd].Extension = %s\n", j, (dife & MBUS_DATA_RECORD_DIFE_MASK_EXTENSION) ? "Yes" : "No");
|
||||||
printf("DIFE[%zd].Function = %s\n", j, (dife & 0x30) ? "Minimum value" : "Instantaneous value" );
|
printf("DIFE[%zd].Device = %d\n", j, (dife & MBUS_DATA_RECORD_DIFE_MASK_DEVICE) >> 6 );
|
||||||
printf("DIFE[%zd].Data = %.2X\n", j, dife & 0x0F);
|
printf("DIFE[%zd].Tariff = %d\n", j, (dife & MBUS_DATA_RECORD_DIFE_MASK_TARIFF) >> 4 );
|
||||||
|
printf("DIFE[%zd].StorageNumber = %.2X\n", j, dife & MBUS_DATA_RECORD_DIFE_MASK_STORAGE_NO);
|
||||||
}
|
}
|
||||||
|
|
||||||
// VIF
|
// VIF
|
||||||
|
Loading…
x
Reference in New Issue
Block a user