int main(
int argc,
char **
const argv)
{
int rc, i;
UINT32 relaySlot = 1, slotMin = 0, slotMax = 0;
int relayChannelAmount = 6, relayChannel = 0;
UINT8 arrMode[relayChannelAmount];
UINT32 arrTotal[relayChannelAmount];
UINT32 arrCurrent[relayChannelAmount];
UINT32 arru32Val[relayChannelAmount];
while(-1 != (rc = getopt(argc, argv, "hi:c:")))
{
switch(rc)
{
case 'i':
relaySlot = atoi(optarg);
if(relaySlot < slotMin || relaySlot > slotMax)
{
printf("Error parameter: slot: %d\n", relaySlot);
return -1;
}
break;
case 'c':
relayChannel = atoi(optarg);
if(relayChannel < 0 || relayChannel > relayChannelAmount-1)
{
printf("Error parameter: Channel: %d\n", relayChannel);
return -1;
}
break;
case '?':
case 'h':
default:
printf("Relay sample program.\n\n");
printf("Usage: ./relay [OPTIONS]\n\n");
printf("Options:\n");
printf("\t%-8s Slot of Relay module [%d-%d]. Default slot = %d\n",
"-i", slotMin, slotMax, relaySlot);
printf("\t%-8s Channel of Relay module [%d-%d]. Default Channel = %d\n",
"-c", 0, relayChannelAmount - 1, relayChannel);
printf("\n");
return 0;
}
}
printf("%-10s: %d\n", "Relay slot", relaySlot);
printf("%-10s: %d\n", "Relay channel", relayChannel);
for(i = 0; i < relayChannelAmount; i++)
{
arrMode[i] = mode;
arrTotal[i] = 0;
arrCurrent[i] = 0;
arru32Val[i] = 0;
}
printf("MX_RTU_Module_Relay_Mode_Set(%d, %d, %d, %d), return code = %d.\n",
relaySlot, 0, relayChannelAmount, mode, rc);
printf("MX_RTU_Module_Relay_Mode_Get(%d, %d, %d, %d), return code = %d.\n",
relaySlot, 0, relayChannelAmount, mode, rc);
printf("MX_RTU_Module_Relay_Total_Count_Get(%d, %d, %d), return code = %d.\n",
relaySlot, 0, relayChannelAmount, rc);
printf("MX_RTU_Module_Relay_Current_Count_Get(%d, %d, %d), return code = %d.\n",
relaySlot, 0, relayChannelAmount, rc);
printf("Detect Relay Channel Status:\n");
for (i = 0; i < relayChannelAmount; i++) {
printf("Mode[%d] = %d, TotalCount[%d] = %d, CurrentCount[%d] = %d\n", i, arrMode[i], i, arrTotal[i], i, arrCurrent[i]);
}
printf("MX_RTU_Module_Relay_Value_Get(%d, val), return code = %d.\n",
relaySlot, rc);
if (u32Val != 1) {
printf("relay channel 0 power off\n");
u32Val = 1;
printf("MX_RTU_Module_Relay_Value_Set(%d, %d), return code = %d.\n",
relaySlot, u32Val, rc);
printf("---- power on ----\n");
printf("device should start booting!!!\n");
}
return 0;
}