Merge pull request #37 from lategoodbye/master

replace magic numbers
This commit is contained in:
Robert Johansson 2013-03-02 16:34:58 -08:00
commit 91f0c87207
5 changed files with 32 additions and 24 deletions

View File

@ -79,7 +79,7 @@ main(int argc, char **argv)
if (debug)
printf("Scanning primary addresses:\n");
for (address = 0; address <= 250; address++)
for (address = 0; address <= MBUS_MAX_PRIMARY_SLAVES; address++)
{
mbus_frame reply;

View File

@ -62,7 +62,7 @@ main(int argc, char **argv)
if (debug)
printf("Scanning primary addresses:\n");
for (address = 0; address <= 250; address++)
for (address = 0; address <= MBUS_MAX_PRIMARY_SLAVES; address++)
{
mbus_frame reply;

View File

@ -787,8 +787,8 @@ int mbus_variable_value_decode(mbus_data_record *record, double *value_out_real,
MBUS_DEBUG("coding = 0x%02X \n", record->drh.dib.dif);
// ignore extension bit
vif = (record->drh.vib.vif & 0x7F);
vife = (record->drh.vib.vife[0] & 0x7F);
vif = (record->drh.vib.vif & MBUS_DIB_VIF_WITHOUT_EXTENSION);
vife = (record->drh.vib.vife[0] & MBUS_DIB_VIF_WITHOUT_EXTENSION);
switch (record->drh.dib.dif & 0x0F)
{
@ -1004,7 +1004,7 @@ mbus_vib_unit_normalize(mbus_value_information_block *vib, double value, char **
return -1;
}
int code = ((vib->vife[0]) & 0x7f) | 0x100;
int code = ((vib->vife[0]) & MBUS_DIB_VIF_WITHOUT_EXTENSION) | 0x100;
if (mbus_vif_unit_normalize(code, value, unit_out, value_out, quantity_out) != 0)
{
MBUS_ERROR("%s: Error mbus_vif_unit_normalize\n", __PRETTY_FUNCTION__);
@ -1019,7 +1019,7 @@ mbus_vib_unit_normalize(mbus_value_information_block *vib, double value, char **
return -1;
}
int code = ((vib->vife[0]) & 0x7f) | 0x200;
int code = ((vib->vife[0]) & MBUS_DIB_VIF_WITHOUT_EXTENSION) | 0x200;
if (0 != mbus_vif_unit_normalize(code, value, unit_out, value_out, quantity_out))
{
MBUS_ERROR("%s: Error mbus_vif_unit_normalize\n", __PRETTY_FUNCTION__);
@ -1036,7 +1036,7 @@ mbus_vib_unit_normalize(mbus_value_information_block *vib, double value, char **
}
else
{
int code = (vib->vif) & 0x7f;
int code = (vib->vif) & MBUS_DIB_VIF_WITHOUT_EXTENSION;
if (0 != mbus_vif_unit_normalize(code, value, unit_out, value_out, quantity_out))
{
MBUS_ERROR("%s: Error mbus_vif_unit_normalize\n", __PRETTY_FUNCTION__);
@ -1191,9 +1191,10 @@ mbus_parse_variable_record(mbus_data_record *data)
return NULL;
}
if (data->drh.dib.dif == 0x0F || data->drh.dib.dif == 0x1F) /* MBUS_DIB_DIF_VENDOR_SPECIFIC */
if ((data->drh.dib.dif == MBUS_DIB_DIF_MANUFACTURER_SPECIFIC) ||
(data->drh.dib.dif == MBUS_DIB_DIF_MORE_RECORDS_FOLLOW)) /* MBUS_DIB_DIF_VENDOR_SPECIFIC */
{
if (data->drh.dib.dif == 0x1F)
if (data->drh.dib.dif == MBUS_DIB_DIF_MORE_RECORDS_FOLLOW)
{
record->function_medium = strdup("More records follow");
}

View File

@ -1619,7 +1619,7 @@ mbus_vif_unit_lookup(u_char vif)
static char buff[256];
int n;
switch (vif & 0x7F) // ignore the extension bit in this selection
switch (vif & MBUS_DIB_VIF_WITHOUT_EXTENSION) // ignore the extension bit in this selection
{
// E000 0nnn Energy 10(nnn-3) W
case 0x00:
@ -2175,8 +2175,8 @@ mbus_data_record_decode(mbus_data_record *record)
u_char vif, vife;
// ignore extension bit
vif = (record->drh.vib.vif & 0x7F);
vife = (record->drh.vib.vife[0] & 0x7F);
vif = (record->drh.vib.vif & MBUS_DIB_VIF_WITHOUT_EXTENSION);
vife = (record->drh.vib.vife[0] & MBUS_DIB_VIF_WITHOUT_EXTENSION);
if (record)
{
@ -2691,9 +2691,10 @@ mbus_data_variable_parse(mbus_frame *frame, mbus_data_variable *data)
// DIF
record->drh.dib.dif = frame->data[i];
if (record->drh.dib.dif == 0x0F || record->drh.dib.dif == 0x1F)
if ((record->drh.dib.dif == MBUS_DIB_DIF_MANUFACTURER_SPECIFIC) ||
(record->drh.dib.dif == MBUS_DIB_DIF_MORE_RECORDS_FOLLOW))
{
if ((record->drh.dib.dif & 0xFF) == 0x1F)
if ((record->drh.dib.dif & 0xFF) == MBUS_DIB_DIF_MORE_RECORDS_FOLLOW)
{
data->more_records_follow = 1;
}
@ -2733,7 +2734,7 @@ mbus_data_variable_parse(mbus_frame *frame, mbus_data_variable *data)
// VIF
record->drh.vib.vif = frame->data[i++];
if ((record->drh.vib.vif & 0x7F) == 0x7C)
if ((record->drh.vib.vif & MBUS_DIB_VIF_WITHOUT_EXTENSION) == 0x7C)
{
// variable length VIF in ASCII format
int var_vif_len;
@ -3214,7 +3215,8 @@ mbus_data_variable_print(mbus_data_variable *data)
printf("DIF.Data = %.2X\n", record->drh.dib.dif & 0x0F);
// VENDOR SPECIFIC
if (record->drh.dib.dif == 0x0F || record->drh.dib.dif == 0x1F) //MBUS_DIB_DIF_VENDOR_SPECIFIC)
if ((record->drh.dib.dif == MBUS_DIB_DIF_MANUFACTURER_SPECIFIC) ||
(record->drh.dib.dif == MBUS_DIB_DIF_MORE_RECORDS_FOLLOW)) //MBUS_DIB_DIF_VENDOR_SPECIFIC
{
printf("%s: VENDOR DATA [size=%zd] = ", __PRETTY_FUNCTION__, record->data_len);
for (j = 0; j < record->data_len; j++)
@ -3223,7 +3225,7 @@ mbus_data_variable_print(mbus_data_variable *data)
}
printf("\n");
if (record->drh.dib.dif == 0x1F)
if (record->drh.dib.dif == MBUS_DIB_DIF_MORE_RECORDS_FOLLOW)
{
printf("%s: More records follow in next telegram\n", __PRETTY_FUNCTION__);
}
@ -3247,7 +3249,7 @@ mbus_data_variable_print(mbus_data_variable *data)
// VIF
printf("VIF = %.2X\n", record->drh.vib.vif);
printf("VIF.Extension = %s\n", (record->drh.vib.vif & MBUS_DIB_VIF_EXTENSION_BIT) ? "Yes":"No");
printf("VIF.Value = %.2X\n", record->drh.vib.vif & 0x7F);
printf("VIF.Value = %.2X\n", record->drh.vib.vif & MBUS_DIB_VIF_WITHOUT_EXTENSION);
// VIFE
for (j = 0; j < record->drh.vib.nvife; j++)
@ -3256,7 +3258,7 @@ mbus_data_variable_print(mbus_data_variable *data)
printf("VIFE[%zd] = %.2X\n", j, vife);
printf("VIFE[%zd].Extension = %s\n", j, (vife & MBUS_DIB_VIF_EXTENSION_BIT) ? "Yes" : "No");
printf("VIFE[%zd].Value = %.2X\n", j, vife & 0x7F);
printf("VIFE[%zd].Value = %.2X\n", j, vife & MBUS_DIB_VIF_WITHOUT_EXTENSION);
}
printf("\n");
@ -3468,12 +3470,12 @@ mbus_data_variable_record_xml(mbus_data_record *record, int record_cnt, int fram
" <DataRecord id=\"%d\">\n", record_cnt);
}
if (record->drh.dib.dif == 0x0F) // MBUS_DIB_DIF_VENDOR_SPECIFIC
if (record->drh.dib.dif == MBUS_DIB_DIF_MANUFACTURER_SPECIFIC) // MBUS_DIB_DIF_VENDOR_SPECIFIC
{
len += snprintf(&buff[len], sizeof(buff) - len,
" <Function>Manufacturer specific</Function>\n");
}
else if (record->drh.dib.dif == 0x1F)
else if (record->drh.dib.dif == MBUS_DIB_DIF_MORE_RECORDS_FOLLOW)
{
len += snprintf(&buff[len], sizeof(buff) - len,
" <Function>More records follow</Function>\n");

View File

@ -123,8 +123,13 @@ typedef struct _mbus_slave_data {
//
// DATA RECORDS
#define MBUS_DIB_DIF_EXTENSION_BIT 0x80
#define MBUS_DIB_VIF_EXTENSION_BIT 0x80
#define MBUS_DIB_DIF_WITHOUT_EXTENSION 0x7F
#define MBUS_DIB_DIF_EXTENSION_BIT 0x80
#define MBUS_DIB_VIF_WITHOUT_EXTENSION 0x7F
#define MBUS_DIB_VIF_EXTENSION_BIT 0x80
#define MBUS_DIB_DIF_MANUFACTURER_SPECIFIC 0x0F
#define MBUS_DIB_DIF_MORE_RECORDS_FOLLOW 0x1F
typedef struct _mbus_data_information_block {
@ -313,7 +318,7 @@ typedef struct _mbus_data_secondary_address {
//
//
//
#define MBUS_MAX_PRIMARY_SLAVES 256
#define MBUS_MAX_PRIMARY_SLAVES 250
//
// Control field