Skip to content

Commit 6a881ec

Browse files
committed
Add VPE-6090 support
1 parent 4edbf46 commit 6a881ec

File tree

1 file changed

+58
-0
lines changed

1 file changed

+58
-0
lines changed

main.c

+58
Original file line numberDiff line numberDiff line change
@@ -293,6 +293,21 @@ void write_holding_register(struct node* const node, const uint16_t r, const uin
293293
else
294294
{ return; }
295295
}
296+
else if(!strncmp(node->info.name, "com.widgetlords.mio.6090", 50))
297+
{
298+
regw.length = 1;
299+
300+
if(r >= 61 && r <= 66)
301+
{
302+
snprintf(name, sizeof(name), "ch%u.type", r - 60);
303+
304+
regw.type = WLMIO_REGISTER_VALUE_UINT8;
305+
306+
memcpy(regw.value, &v, 1);
307+
}
308+
else
309+
{ return; }
310+
}
296311
else
297312
{ return; }
298313

@@ -999,6 +1014,47 @@ int8_t read_holding_register(const struct node* const node, const uint16_t reg,
9991014
memcpy(&v, regr.value, 2);
10001015
}
10011016
}
1017+
else if(!strncmp(node->info.name, "com.widgetlords.mio.6090", 50))
1018+
{
1019+
if(reg >= 49 && reg <= 60)
1020+
{
1021+
snprintf(name, sizeof(name), "ch%u.input", (reg - 49) / 2 + 1);
1022+
if(strcmp(cache.name, name))
1023+
{
1024+
strncpy(cache.name, name, sizeof(cache.name));
1025+
cache.name[sizeof(cache.name) - 1] = '\0';
1026+
r = wlmio_register_access_sync(node->id, cache.name, NULL, &cache.reg);
1027+
if(r < 0 || cache.reg.type != WLMIO_REGISTER_VALUE_UINT32)
1028+
{ return -1; }
1029+
}
1030+
1031+
memcpy(&v, cache.reg.value + (~reg & 1) * 2, 2);
1032+
}
1033+
else if(reg >= 61 && reg <= 66)
1034+
{
1035+
snprintf(name, sizeof(name), "ch%u.type", reg - 60);
1036+
r = wlmio_register_access_sync(node->id, name, NULL, &regr);
1037+
if(r < 0 || regr.type != WLMIO_REGISTER_VALUE_UINT8)
1038+
{ return -1; }
1039+
memcpy(&v, regr.value, 1);
1040+
}
1041+
else if(reg >= 67 && reg <= 72)
1042+
{
1043+
snprintf(name, sizeof(name), "ch%u.counts", reg - 66);
1044+
r = wlmio_register_access_sync(node->id, name, NULL, &regr);
1045+
if(r < 0 || regr.type != WLMIO_REGISTER_VALUE_UINT16)
1046+
{ return -1; }
1047+
memcpy(&v, regr.value, 2);
1048+
}
1049+
else if(reg >= 73 && reg <= 75)
1050+
{
1051+
snprintf(name, sizeof(name), "t%u", reg - 72);
1052+
r = wlmio_register_access_sync(node->id, name, NULL, &regr);
1053+
if(r < 0 || regr.type != WLMIO_REGISTER_VALUE_UINT16)
1054+
{ return -1; }
1055+
memcpy(&v, regr.value, 2);
1056+
}
1057+
}
10021058

10031059
v = htons(v);
10041060
memcpy(dst, &v, 2);
@@ -1206,6 +1262,8 @@ void info_callback(int32_t r, void* p)
12061262
{ node->holding_registers_length += 4; }
12071263
else if(!strncmp(node->info.name, "com.widgetlords.mio.6080", 50))
12081264
{ node->holding_registers_length += 41; }
1265+
else if(!strncmp(node->info.name, "com.widgetlords.mio.6090", 50))
1266+
{ node->holding_registers_length += 26; }
12091267
}
12101268

12111269

0 commit comments

Comments
 (0)