|
@@ -6,6 +6,7 @@
|
|
|
#include <stdio.h>
|
|
#include <stdio.h>
|
|
|
#include <strings.h>
|
|
#include <strings.h>
|
|
|
#include <string.h>
|
|
#include <string.h>
|
|
|
|
|
+#include <sys/socket.h>
|
|
|
|
|
|
|
|
//Массив структур Command, который связывает строки команд с соответствующими функциями.
|
|
//Массив структур Command, который связывает строки команд с соответствующими функциями.
|
|
|
Command commands[] = {
|
|
Command commands[] = {
|
|
@@ -19,7 +20,7 @@ Command commands[] = {
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
//handleXXXXCmd - обработчики команд
|
|
//handleXXXXCmd - обработчики команд
|
|
|
-void handleFreqCmd(char* recvBuff)
|
|
|
|
|
|
|
+void handleFreqCmd(const char* recvBuff)
|
|
|
{
|
|
{
|
|
|
printf("\nTMSG44:FREQ\n");
|
|
printf("\nTMSG44:FREQ\n");
|
|
|
uint64_t freq[1] = {0};
|
|
uint64_t freq[1] = {0};
|
|
@@ -29,12 +30,28 @@ void handleFreqCmd(char* recvBuff)
|
|
|
printf("%" PRId64 "\n", freq[0]);
|
|
printf("%" PRId64 "\n", freq[0]);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-void handleLdCmd(char* recvBuff)
|
|
|
|
|
|
|
+void handleLdCmd(const char* recvBuff)
|
|
|
{
|
|
{
|
|
|
|
|
+ int n = 0;
|
|
|
|
|
+ char messageLd[2] = "0";
|
|
|
|
|
+
|
|
|
printf("\nTMSG44:LD?\n");
|
|
printf("\nTMSG44:LD?\n");
|
|
|
|
|
+
|
|
|
|
|
+ if (1)
|
|
|
|
|
+ {
|
|
|
|
|
+ strcpy(messageLd, "1");
|
|
|
|
|
+ }
|
|
|
|
|
+ else if (0)
|
|
|
|
|
+ {
|
|
|
|
|
+ strcpy(messageLd, "0");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ send(sockfd, messageLd, sizeof(messageLd), 0);
|
|
|
|
|
+
|
|
|
|
|
+ printf("\nSend msg LD!\n");
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-void handlePowCmd(char* recvBuff)
|
|
|
|
|
|
|
+void handlePowCmd(const char* recvBuff)
|
|
|
{
|
|
{
|
|
|
printf("\nTMSG44:POW\n");
|
|
printf("\nTMSG44:POW\n");
|
|
|
double pow[1] = {0};
|
|
double pow[1] = {0};
|
|
@@ -43,7 +60,7 @@ void handlePowCmd(char* recvBuff)
|
|
|
printf("%f\n", pow[0]);
|
|
printf("%f\n", pow[0]);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-void handleArmCmd(char* recvBuff)
|
|
|
|
|
|
|
+void handleArmCmd(const char* recvBuff)
|
|
|
{
|
|
{
|
|
|
printf("\nTMSG44:ARM\n");
|
|
printf("\nTMSG44:ARM\n");
|
|
|
uint16_t armCode[1] = {0};
|
|
uint16_t armCode[1] = {0};
|
|
@@ -52,7 +69,7 @@ void handleArmCmd(char* recvBuff)
|
|
|
printf("\n%u\n", armCode[0]);
|
|
printf("\n%u\n", armCode[0]);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-void handleAttCmd(char* recvBuff)
|
|
|
|
|
|
|
+void handleAttCmd(const char* recvBuff)
|
|
|
{
|
|
{
|
|
|
printf("\nTMSG44:ATT\n");
|
|
printf("\nTMSG44:ATT\n");
|
|
|
uint16_t attCode[1] = {0};
|
|
uint16_t attCode[1] = {0};
|
|
@@ -61,14 +78,14 @@ void handleAttCmd(char* recvBuff)
|
|
|
printf("\n%u\n", attCode[0]);
|
|
printf("\n%u\n", attCode[0]);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-void handleIdnCmd(char* recvBuff)
|
|
|
|
|
|
|
+void handleIdnCmd(const char* recvBuff)
|
|
|
{
|
|
{
|
|
|
printf("\n*IDN?\n");
|
|
printf("\n*IDN?\n");
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
//Проходим по массиву команд и ищем команду, которая совпадает с началом строки recvBuff.
|
|
//Проходим по массиву команд и ищем команду, которая совпадает с началом строки recvBuff.
|
|
|
//Если команда найдена, вызывается соответствующая функция-обработчик
|
|
//Если команда найдена, вызывается соответствующая функция-обработчик
|
|
|
-void processCommand(char* recvBuff)
|
|
|
|
|
|
|
+void processCommand(const char* recvBuff)
|
|
|
{
|
|
{
|
|
|
for (int i = 0; commands[i].command != NULL; i++)
|
|
for (int i = 0; commands[i].command != NULL; i++)
|
|
|
{
|
|
{
|
|
@@ -82,25 +99,25 @@ void processCommand(char* recvBuff)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// Преобразование строки в uint16_t
|
|
// Преобразование строки в uint16_t
|
|
|
-void convertToUInt16(char *str, void *output)
|
|
|
|
|
|
|
+void convertToUInt16(const char *str, void *output)
|
|
|
{
|
|
{
|
|
|
*(uint16_t *)output = (uint16_t)strtoul(str, NULL, 10);
|
|
*(uint16_t *)output = (uint16_t)strtoul(str, NULL, 10);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// Преобразование строки в unsigned long long int
|
|
// Преобразование строки в unsigned long long int
|
|
|
-void convertToUint64(char *str, void *output)
|
|
|
|
|
|
|
+void convertToUint64(const char *str, void *output)
|
|
|
{
|
|
{
|
|
|
*(uint64_t *)output = (uint64_t)strtoull(str, NULL, 10);
|
|
*(uint64_t *)output = (uint64_t)strtoull(str, NULL, 10);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// Преобразование строки в double
|
|
// Преобразование строки в double
|
|
|
-void convertToDouble(char *str, void *output)
|
|
|
|
|
|
|
+void convertToDouble(const char *str, void *output)
|
|
|
{
|
|
{
|
|
|
*(double *)output = strtod(str, NULL);
|
|
*(double *)output = strtod(str, NULL);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// Универсальная функция для разделения строки на лексемы
|
|
// Универсальная функция для разделения строки на лексемы
|
|
|
-void splitLexeme(uint8_t *ptrSCPI, void *numOutAndValue, size_t elementSize, ConvertFunc convertFunc)
|
|
|
|
|
|
|
+void splitLexeme(const char *ptrSCPI, void *numOutAndValue, size_t elementSize, ConvertFunc convertFunc)
|
|
|
{
|
|
{
|
|
|
uint8_t counter = 0;
|
|
uint8_t counter = 0;
|
|
|
|
|
|