New events for wildcard search
This commit is contained in:
parent
45ebed05b7
commit
f41b982093
@ -128,6 +128,18 @@ typedef struct _mbus_record {
|
|||||||
} mbus_record;
|
} mbus_record;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Event callback functions
|
||||||
|
*/
|
||||||
|
extern void (*_mbus_scan_progress)(mbus_handle * handle, const char *mask);
|
||||||
|
extern void (*_mbus_found_event)(mbus_handle * handle, mbus_frame *frame);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Event register functions
|
||||||
|
*/
|
||||||
|
void mbus_register_scan_progress(void (*event)(mbus_handle * handle, const char *mask));
|
||||||
|
void mbus_register_found_event(void (*event)(mbus_handle * handle, mbus_frame *frame));
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Connects to serial gateway and initializes MBus handle
|
* Connects to serial gateway and initializes MBus handle
|
||||||
*
|
*
|
||||||
|
@ -748,6 +748,173 @@ mbus_decode_manufacturer(u_char byte1, u_char byte2)
|
|||||||
return m_str;
|
return m_str;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const char *
|
||||||
|
mbus_data_product_name(mbus_data_variable_header *header)
|
||||||
|
{
|
||||||
|
static char buff[128];
|
||||||
|
unsigned int manufacturer;
|
||||||
|
|
||||||
|
if (header)
|
||||||
|
{
|
||||||
|
manufacturer = (header->manufacturer[1] << 8) + header->manufacturer[0];
|
||||||
|
|
||||||
|
if (manufacturer == MBUS_VARIABLE_DATA_MAN_ACW)
|
||||||
|
{
|
||||||
|
switch (header->version)
|
||||||
|
{
|
||||||
|
case 0x09:
|
||||||
|
strcpy(buff,"Itron CF Echo 2");
|
||||||
|
break;
|
||||||
|
case 0x0A:
|
||||||
|
strcpy(buff,"Itron CF 51");
|
||||||
|
break;
|
||||||
|
case 0x0B:
|
||||||
|
strcpy(buff,"Itron CF 55");
|
||||||
|
break;
|
||||||
|
case 0x0E:
|
||||||
|
strcpy(buff,"Itron BM +m");
|
||||||
|
break;
|
||||||
|
case 0x0F:
|
||||||
|
strcpy(buff,"Itron CF 800");
|
||||||
|
break;
|
||||||
|
case 0x14:
|
||||||
|
strcpy(buff,"Itron CYBLE M-Bus 1.4");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (manufacturer == MBUS_VARIABLE_DATA_MAN_SLB)
|
||||||
|
{
|
||||||
|
switch (header->version)
|
||||||
|
{
|
||||||
|
case 0x02:
|
||||||
|
strcpy(buff,"Allmess Megacontrol CF-50");
|
||||||
|
break;
|
||||||
|
case 0x06:
|
||||||
|
strcpy(buff,"CF Compact / Integral MK MaXX");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (manufacturer == MBUS_VARIABLE_DATA_MAN_HYD)
|
||||||
|
{
|
||||||
|
switch (header->version)
|
||||||
|
{
|
||||||
|
case 0x02:
|
||||||
|
strcpy(buff,"ABB F95 Typ US770");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (manufacturer == MBUS_VARIABLE_DATA_MAN_LUG)
|
||||||
|
{
|
||||||
|
switch (header->version)
|
||||||
|
{
|
||||||
|
case 0x02:
|
||||||
|
strcpy(buff,"Landis & Gyr Ultraheat 2WR5");
|
||||||
|
break;
|
||||||
|
case 0x03:
|
||||||
|
strcpy(buff,"Landis & Gyr Ultraheat 2WR6");
|
||||||
|
break;
|
||||||
|
case 0x04:
|
||||||
|
strcpy(buff,"Landis & Gyr Ultraheat UH50");
|
||||||
|
break;
|
||||||
|
case 0x07:
|
||||||
|
strcpy(buff,"Landis & Gyr Ultraheat T230");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (manufacturer == MBUS_VARIABLE_DATA_MAN_ZRM)
|
||||||
|
{
|
||||||
|
switch (header->version)
|
||||||
|
{
|
||||||
|
case 0x81:
|
||||||
|
strcpy(buff,"Minol Minocal C2");
|
||||||
|
break;
|
||||||
|
case 0x82:
|
||||||
|
strcpy(buff,"Minol Minocal WR3");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (manufacturer == MBUS_VARIABLE_DATA_MAN_SVM)
|
||||||
|
{
|
||||||
|
switch (header->version)
|
||||||
|
{
|
||||||
|
case 0x08:
|
||||||
|
strcpy(buff,"Elster F2");
|
||||||
|
break;
|
||||||
|
case 0x09:
|
||||||
|
strcpy(buff,"Kamstrup SVM F22");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (manufacturer == MBUS_VARIABLE_DATA_MAN_SON)
|
||||||
|
{
|
||||||
|
switch (header->version)
|
||||||
|
{
|
||||||
|
case 0x0D:
|
||||||
|
strcpy(buff,"Sontex Supercal 531");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (manufacturer == MBUS_VARIABLE_DATA_MAN_LSE)
|
||||||
|
{
|
||||||
|
switch (header->version)
|
||||||
|
{
|
||||||
|
case 0x99:
|
||||||
|
strcpy(buff,"Siemens WFH21");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (manufacturer == MBUS_VARIABLE_DATA_MAN_SPX)
|
||||||
|
{
|
||||||
|
switch (header->version)
|
||||||
|
{
|
||||||
|
case 0x31:
|
||||||
|
strcpy(buff,"Sensus PolluTherm");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (manufacturer == MBUS_VARIABLE_DATA_MAN_ELS)
|
||||||
|
{
|
||||||
|
switch (header->version)
|
||||||
|
{
|
||||||
|
case 0x02:
|
||||||
|
strcpy(buff,"Elster TMP-A");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (manufacturer == MBUS_VARIABLE_DATA_MAN_NZR)
|
||||||
|
{
|
||||||
|
switch (header->version)
|
||||||
|
{
|
||||||
|
case 0x01:
|
||||||
|
strcpy(buff,"NZR DHZ 5/63");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (manufacturer == MBUS_VARIABLE_DATA_MAN_KAM)
|
||||||
|
{
|
||||||
|
switch (header->version)
|
||||||
|
{
|
||||||
|
case 0x08:
|
||||||
|
strcpy(buff,"Kamstrup Multical 601");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (manufacturer == MBUS_VARIABLE_DATA_MAN_EMH)
|
||||||
|
{
|
||||||
|
switch (header->version)
|
||||||
|
{
|
||||||
|
case 0x00:
|
||||||
|
strcpy(buff,"EMH DIZ");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return buff;
|
||||||
|
}
|
||||||
|
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
//
|
//
|
||||||
// FIXED-LENGTH DATA RECORD FUNCTIONS
|
// FIXED-LENGTH DATA RECORD FUNCTIONS
|
||||||
@ -2172,6 +2339,7 @@ mbus_data_record_function(mbus_data_record *record)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
///
|
///
|
||||||
/// For fixed-length frames, return a string describing the type of value (stored or actual)
|
/// For fixed-length frames, return a string describing the type of value (stored or actual)
|
||||||
///
|
///
|
||||||
@ -3079,6 +3247,10 @@ mbus_data_variable_header_xml(mbus_data_variable_header *header)
|
|||||||
mbus_decode_manufacturer(header->manufacturer[0], header->manufacturer[1]));
|
mbus_decode_manufacturer(header->manufacturer[0], header->manufacturer[1]));
|
||||||
len += snprintf(&buff[len], sizeof(buff) - len, " <Version>%d</Version>\n", header->version);
|
len += snprintf(&buff[len], sizeof(buff) - len, " <Version>%d</Version>\n", header->version);
|
||||||
|
|
||||||
|
mbus_str_xml_encode(str_encoded, mbus_data_product_name(header), sizeof(str_encoded));
|
||||||
|
|
||||||
|
len += snprintf(&buff[len], sizeof(buff) - len, " <ProductName>%s</ProductName>\n", str_encoded);
|
||||||
|
|
||||||
mbus_str_xml_encode(str_encoded, mbus_data_variable_medium_lookup(header->medium), sizeof(str_encoded));
|
mbus_str_xml_encode(str_encoded, mbus_data_variable_medium_lookup(header->medium), sizeof(str_encoded));
|
||||||
|
|
||||||
len += snprintf(&buff[len], sizeof(buff) - len, " <Medium>%s</Medium>\n", str_encoded);
|
len += snprintf(&buff[len], sizeof(buff) - len, " <Medium>%s</Medium>\n", str_encoded);
|
||||||
|
@ -459,6 +459,25 @@ typedef struct _mbus_data_secondary_address {
|
|||||||
#define MBUS_VARIABLE_DATA_MEDIUM_PRESSURE 0x18
|
#define MBUS_VARIABLE_DATA_MEDIUM_PRESSURE 0x18
|
||||||
#define MBUS_VARIABLE_DATA_MEDIUM_ADC 0x19
|
#define MBUS_VARIABLE_DATA_MEDIUM_ADC 0x19
|
||||||
|
|
||||||
|
#define MBUS_VARIABLE_DATA_MAN_ACW 0x0477
|
||||||
|
#define MBUS_VARIABLE_DATA_MAN_ABB 0x0442
|
||||||
|
#define MBUS_VARIABLE_DATA_MAN_AMT 0x05B4
|
||||||
|
#define MBUS_VARIABLE_DATA_MAN_ELS 0x1593
|
||||||
|
#define MBUS_VARIABLE_DATA_MAN_EMH 0x15A8
|
||||||
|
#define MBUS_VARIABLE_DATA_MAN_HYD 0x2324
|
||||||
|
#define MBUS_VARIABLE_DATA_MAN_KAM 0x2C2D
|
||||||
|
#define MBUS_VARIABLE_DATA_MAN_LSE 0x3265
|
||||||
|
#define MBUS_VARIABLE_DATA_MAN_LUG 0x32A7
|
||||||
|
#define MBUS_VARIABLE_DATA_MAN_NZR 0x3B52
|
||||||
|
#define MBUS_VARIABLE_DATA_MAN_PAD 0x4024
|
||||||
|
#define MBUS_VARIABLE_DATA_MAN_QDS 0x4493
|
||||||
|
#define MBUS_VARIABLE_DATA_MAN_SLB 0x4D82
|
||||||
|
#define MBUS_VARIABLE_DATA_MAN_SON 0x4DEE
|
||||||
|
#define MBUS_VARIABLE_DATA_MAN_SPX 0x4E18
|
||||||
|
#define MBUS_VARIABLE_DATA_MAN_SVM 0x4ECD
|
||||||
|
#define MBUS_VARIABLE_DATA_MAN_TCM 0x5068
|
||||||
|
#define MBUS_VARIABLE_DATA_MAN_ZRM 0x6A4D
|
||||||
|
|
||||||
//
|
//
|
||||||
// Event callback functions
|
// Event callback functions
|
||||||
//
|
//
|
||||||
@ -564,6 +583,7 @@ void mbus_hex_dump(const char *label, const char *buff, size_t len);
|
|||||||
//
|
//
|
||||||
int mbus_data_manufacturer_encode(u_char *m_data, u_char *m_code);
|
int mbus_data_manufacturer_encode(u_char *m_data, u_char *m_code);
|
||||||
const char *mbus_decode_manufacturer(u_char byte1, u_char byte2);
|
const char *mbus_decode_manufacturer(u_char byte1, u_char byte2);
|
||||||
|
const char *mbus_data_product_name(mbus_data_variable_header *header);
|
||||||
|
|
||||||
int mbus_data_bcd_encode(u_char *bcd_data, size_t bcd_data_size, int value);
|
int mbus_data_bcd_encode(u_char *bcd_data, size_t bcd_data_size, int value);
|
||||||
int mbus_data_int_encode(u_char *int_data, size_t int_data_size, int value);
|
int mbus_data_int_encode(u_char *int_data, size_t int_data_size, int value);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user