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) if (debug)
printf("Scanning primary addresses:\n"); printf("Scanning primary addresses:\n");
for (address = 0; address <= 250; address++) for (address = 0; address <= MBUS_MAX_PRIMARY_SLAVES; address++)
{ {
mbus_frame reply; mbus_frame reply;

View File

@ -62,7 +62,7 @@ main(int argc, char **argv)
if (debug) if (debug)
printf("Scanning primary addresses:\n"); printf("Scanning primary addresses:\n");
for (address = 0; address <= 250; address++) for (address = 0; address <= MBUS_MAX_PRIMARY_SLAVES; address++)
{ {
mbus_frame reply; 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); MBUS_DEBUG("coding = 0x%02X \n", record->drh.dib.dif);
// ignore extension bit // ignore extension bit
vif = (record->drh.vib.vif & 0x7F); vif = (record->drh.vib.vif & MBUS_DIB_VIF_WITHOUT_EXTENSION);
vife = (record->drh.vib.vife[0] & 0x7F); vife = (record->drh.vib.vife[0] & MBUS_DIB_VIF_WITHOUT_EXTENSION);
switch (record->drh.dib.dif & 0x0F) switch (record->drh.dib.dif & 0x0F)
{ {
@ -1004,7 +1004,7 @@ mbus_vib_unit_normalize(mbus_value_information_block *vib, double value, char **
return -1; 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) 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__); 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; 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)) 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__); 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 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)) 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__); 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; 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"); record->function_medium = strdup("More records follow");
} }

View File

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

View File

@ -123,8 +123,13 @@ typedef struct _mbus_slave_data {
// //
// DATA RECORDS // DATA RECORDS
#define MBUS_DIB_DIF_EXTENSION_BIT 0x80 #define MBUS_DIB_DIF_WITHOUT_EXTENSION 0x7F
#define MBUS_DIB_VIF_EXTENSION_BIT 0x80 #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 { 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 // Control field