From 65bc2f11eb11c23e8593ee355c4e20abcab55b0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A8=D0=B8=D1=80=D0=BE=D0=BA=D0=BE=D0=B2=20=D0=90=D0=BB?= =?UTF-8?q?=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80?= Date: Mon, 20 May 2019 10:38:32 +0000 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Расширена документация - Доработаны ссылки. Дефолтным стал проект на GitHub - Упорядочены комменты --- README.md | 69 +++++++++++++++++++++++---- tekon/message.h | 48 +++++++++---------- tekon/pack.c | 29 ++++++------ tekon/pack.h | 6 +-- tekon/proto.h | 8 ++-- tekon/test/unit_time.c | 4 +- tekon/test/unit_unpack.c | 54 +++++++++++----------- tekon/time.c | 12 ++--- tekon/time.h | 16 +++---- tekon/unpack.c | 57 ++++++++--------------- tekon/unpack.h | 6 +-- test/app/read_msr.c | 2 +- utils/arch/main.c | 58 +++++++++++------------ utils/base/link.h | 4 +- utils/base/linux/time.c | 6 +-- utils/base/log.c | 4 +- utils/base/log.h | 4 +- utils/base/test/unit_time.c | 8 ++-- utils/base/test/unit_tstamp.c | 87 +++++++++++++++++------------------ utils/base/test/unit_types.c | 4 +- utils/base/time.h | 15 +++--- utils/base/tstamp.c | 14 +++--- utils/base/tstamp.h | 14 +++--- utils/base/types.c | 53 +++++++++++---------- utils/base/win/link.c | 30 ++++++------ utils/base/win/time.c | 6 +-- utils/msr/main.c | 29 ++++++------ utils/msr/msr.h | 4 +- utils/sync/check.c | 4 +- utils/sync/main.c | 11 +++-- utils/sync/test/unit_check.c | 8 ++-- 31 files changed, 348 insertions(+), 326 deletions(-) diff --git a/README.md b/README.md index 5ead771..c65b2b8 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -[![Total alerts](https://img.shields.io/lgtm/alerts/b/alexsteam4000/tekon-utils-pub.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/b/alexsteam4000/tekon-utils-pub/alerts/) -[![Language grade: C/C++](https://img.shields.io/lgtm/grade/cpp/b/alexsteam4000/tekon-utils-pub.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/b/alexsteam4000/tekon-utils-pub/context:cpp) -[![codecov](https://codecov.io/bb/alexsteam4000/tekon-utils-pub/branch/master/graph/badge.svg)](https://codecov.io/bb/alexsteam4000/tekon-utils-pub) +[![Total alerts](https://img.shields.io/lgtm/alerts/g/alexs-sh/tekon-utils.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/alexs-sh/tekon-utils/alerts/) +[![Language grade: C/C++](https://img.shields.io/lgtm/grade/cpp/g/alexs-sh/tekon-utils.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/alexs-sh/tekon-utils/context:cpp) +[![codecov](https://codecov.io/gh/alexs-sh/tekon-utils/branch/master/graph/badge.svg)](https://codecov.io/gh/alexs-sh/tekon-utils) # TEKON-UTILS @@ -18,6 +18,26 @@ tekon_msr -a udp:10.0.0.3:51960@9 -p'3:0xF001:0:H 3:0xF017:0:D 3:0xF018:0:T 3:0x 9:3:0xf018:0 T 13:35:49 OK 1558082153 18000 9:3:0x801c:2 F 38.151833 OK 1558082153 18000 ``` +В примере выполняется чтение 4-х параметров. + +Аргумент| Значение | Описание +--------|----------------------| ---------------------------------------------------------------------------------------------- +-a | udp:10.0.0.3:51960@9 | чтение будет выполнено по UDP, с IP адреса - 10.0.0.3, через порт - 51960, адрес К-104 - 9 +-p | 3:0xF001:0:H | адрес Тэкона - 3, адрес параметра - 0xF001, индекс параметра - 0, тип параметра - H (HEX) + +Вывод программы: **9:3:0xf001:0 H 0x3840 OK 1558082153 18000** + +Столбец | Значение | Описание +--------|----------------------| ---------------------------------------------------------------------------------------------- + 1 | 9:3:0xf001:0 | адрес параметра. Адрес К-104 - 9, адрес Тэкона - 3, адрес параметра - 0xf001, индекс параметра - 0 + 2 | H | тип парметра - HEX + 3 | 0x3840 | значение параметра + 4 | OK | качество + 5 | 1558082153 | метка времени (UTC) + 6 | 18000 | сдвиг часового пояса хоста относительно UTC + +Более подробную справку можно получить, запустив программу без аргументов +или с ключем **-h**. ### Чтение архива ```console @@ -27,12 +47,43 @@ tekon_arch -a udp:10.0.0.3:51960@9 -p 3:0x801C:0:12:F -i m:12 -d 3:0xF017:0xF 9:3:0x801c:2 F 38.151833 OK 1551380400 18000 ... ``` +В примере выполняется чтение месячного архива глубиной 12 записей. + +Аргумент| Значение | Описание +--------|----------------------| ---------------------------------------------------------------------------------------------- +-a | udp:10.0.0.3:51960@9 | чтение будет выполнено по UDP, с IP адреса - 10.0.0.3, через порт - 51960, адрес К-104 - 9 +-p | 3:0x801C:0:12:F | адрес Тэкона - 3, адрес архива - 0x801C, стартовый индекс - 0, кол-во записей 12, формат -F (float) +-m | m:12 | тип - m (месячный), глубина - 12 +-d | 3:0xF017:0xF018 | адрес устройства - 3, адрес даты - 0xF017, адрес времени - 0xF018 + +Вывод программы: **9:3:0x801c:0 F -nan OK 1546282800 18000** + +Столбец | Значение | Описание +--------|----------------------| ---------------------------------------------------------------------------------------------- + 1 | 9:3:0x801с:0 | адрес записи. Адрес К-104 - 9, адрес Тэкона - 3, адрес параметра - 0x801с, индекс - 0 + 2 | F | тип парметра - float + 3 | -nan | значение параметра + 4 | OK | качество + 5 | 1546282800 | метка времени (UTC) + 6 | 18000 | сдвиг часового пояса хоста относительно UTC + +Более подробную справку можно получить, запустив программу без аргументов +или с ключем **-h**. ### Синхронизация времени ```console tekon_sync -a udp:10.0.0.3:51960@9 -d 3:0xF017:0xF018 -p 00000001 ``` +В примере выполняется запись текущего времени хоста в Тэкон. + +Аргумент| Значение | Описание +--------|----------------------| ---------------------------------------------------------------------------------------------- +-a | udp:10.0.0.3:51960@9 | чтение будет выполнено по UDP, с IP адреса - 10.0.0.3, через порт - 51960, адрес К-104 - 9 +-d | 3:0xF017:0xF018 | адрес устройства - 3, адрес даты - 0xF017, адрес времени - 0xF018 +-p | 00000001 | пароль наладчика + + ## Сборка Для сборки потребуются: @@ -44,7 +95,7 @@ tekon_sync -a udp:10.0.0.3:51960@9 -d 3:0xF017:0xF018 -p 00000001 ### Debian x86_64 ```console apt install git cmake make gcc -git clone +git clone https://github.com/alexs-sh/tekon-utils.git cd tekon-utils/ mkdir build cd build @@ -56,7 +107,7 @@ make test ### Debian ARM ```console apt install git cmake make gcc-arm-linux-gnueabihf -git clone +git clone https://github.com/alexs-sh/tekon-utils.git cd tekon-utils/ mkdir build-armhf cd build-armhf @@ -67,7 +118,7 @@ make ### Windows XP x86 ```console apt install git cmake make gcc-mingw-w64-i686 -git clone +git clone https://github.com/alexs-sh/tekon-utils.git cd tekon-utils/ mkdir build-winxp-x86 cd build-winxp-x86 @@ -77,8 +128,6 @@ make Все примеры выполнены в ОС Debian 9 x86_64. -git clone - вместо параметра следует подставить адрес репозитория, -например, https://github.com/alexs-sh/tekon-utils.git ## Применение @@ -101,7 +150,7 @@ git clone - вместо параметра следует под Формат вывода данных: -шлюз:адрес:параметр:индекс тип значение качество UTC TZ +*шлюз:адрес:параметр:индекс тип значение качество UTC TZ* ```console 9:3:0xf001:0 H 0x3840 OK 1557900053 18000 ``` @@ -110,7 +159,7 @@ git clone - вместо параметра следует под Формат вывода данных: -шлюз:адрес:параметр:индекс тип значение качество UTC TZ +*шлюз:адрес:параметр:индекс тип значение качество UTC TZ* ```console 9:3:0x801c:0 F -nan OK 1546282800 18000 ``` diff --git a/tekon/message.h b/tekon/message.h index 44dc904..64f6cf3 100644 --- a/tekon/message.h +++ b/tekon/message.h @@ -15,21 +15,21 @@ extern "C" { struct message { - // Адрес шлюза + /* Адрес шлюза */ uint8_t gateway; - // Напрвяление (к / от устройства) + /* Напрвяление (к / от устройства) */ enum tekon_direction dir; - // Тип сообщения + /* Тип сообщения */ enum tekon_message_type type; - // Кол-во элементов. Если сообщение предпологает передачу параметров, - // то кол-во параметров в поле payload.parameters. - // Если передачу байт, то кол-во байт в payload.bytes + /* Кол-во элементов. Если сообщение предпологает передачу параметров, + * то кол-во параметров в поле payload.parameters. + * Если передачу байт, то кол-во байт в payload.bytes */ uint8_t nelements; - // Данные + /* Данные */ union { struct tekon_parameter parameters[TEKON_PROTO_ILIST_SIZE]; uint8_t bytes[TEKON_PROTO_MAX_ADU_SIZE]; @@ -37,34 +37,34 @@ struct message { }; -// Сообщение "Чтение параметра из внешнего модуля 0x11" -// T10.96.59РД-Д1 стр. 9 -// 1 - успешно -// 0 - ошибка +/* Сообщение "Чтение параметра из внешнего модуля 0x11" + * T10.96.59РД-Д1 стр. 9 + * 1 - успешно + * 0 - ошибка */ int tekon_req_11(struct message * self, uint8_t gateway, uint8_t device, uint16_t address); int tekon_resp_11(struct message * self, uint8_t gateway, uint32_t value); -// Сообщение "Передача во внешний модуль" -// T10.96.59РД-Д1 стр. 9 -// 1 - успешно -// 0 - ошибка +/* Сообщение "Передача во внешний модуль" + * T10.96.59РД-Д1 стр. 9 + * 1 - успешно + * 0 - ошибка */ int tekon_req_14(struct message * self, uint8_t gateway, const void * data, size_t size); -// Сообщение "Чтение интдексного параметра внешнего модуля" -// T10.96.59РД-Д1 стр. 16 -// 1 - успешно -// 0 - ошибка +/* Сообщение "Чтение интдексного параметра внешнего модуля" + * T10.96.59РД-Д1 стр. 16 + * 1 - успешно + * 0 - ошибка */ int tekon_req_19(struct message * self, uint8_t gateway, uint8_t device, uint16_t address, uint16_t index, size_t size); int tekon_resp_19(struct message * self, uint8_t gateway, const uint32_t *values, size_t size); -// Сообщение "Чтение списка параметров из внешних модулуй 0x1C" -// T10.96.59РД-Д1 стр. 23 -// 1 - успешно -// 0 - ошибка +/* Сообщение "Чтение списка параметров из внешних модулуй 0x1C" + * T10.96.59РД-Д1 стр. 23 + * 1 - успешно + * 0 - ошибка */ int tekon_req_1c(struct message * self, uint8_t gateway, const uint8_t *devices, const uint16_t *addresses, const uint16_t *indexes, size_t size); int tekon_resp_1c(struct message * self, uint8_t gateway, const uint32_t *values, const uint8_t *quals, size_t size); -// Квитанция +/* Квитанция */ int tekon_resp_ack(struct message * self, int positive); #ifdef __cplusplus diff --git a/tekon/pack.c b/tekon/pack.c index c7b009f..44dd6d9 100644 --- a/tekon/pack.c +++ b/tekon/pack.c @@ -18,13 +18,11 @@ struct buffer_writer { static void buffer_writer_init(struct buffer_writer * self, void * buffer, size_t size); -// Запись значений в буфер. -// 1 - успешно -// 0 - ошибка +/* Запись значений в буфер. + * 1 - успешно + * 0 - ошибка */ static int buffer_writer_u8(struct buffer_writer * self, uint8_t u8); static int buffer_writer_u16(struct buffer_writer * self, uint16_t u16); -//static int buffer_writer_u32(struct buffer_writer * self, uint32_t u32); - static ssize_t pack_readem_11(void * buffer, size_t size, const struct message * message, uint8_t number); static ssize_t pack_readem_14(void * buffer, size_t size, const struct message * message, uint8_t number); @@ -63,7 +61,7 @@ ssize_t tekon_req_pack(void * buffer, size_t size, const struct message * messag static ssize_t pack_readem_11(void * buffer, size_t size, const struct message * message, uint8_t number) { - // Лимиты для этого типа сообщений + /* Лимиты для этого типа сообщений */ const uint8_t frame_size = 9; const uint8_t code = 0x11; @@ -98,7 +96,7 @@ static ssize_t pack_readem_14(void * buffer, size_t size, const struct message * assert(message); assert(message->nelements > 3); - //Т10.06.59РД-Д1 стр. 10-12 + /*Т10.06.59РД-Д1 стр. 10-12*/ const uint8_t nelem = message->nelements; const uint8_t code = 0x14; const uint8_t command = message->payload.bytes[2]; @@ -109,13 +107,13 @@ static ssize_t pack_readem_14(void * buffer, size_t size, const struct message * uint8_t len = 0; switch(command) { - // Запись регистра + /* Запись регистра */ case 0x03: frame_size = 18; len = 12; break; - // Установка уровня доступа + /* Установка уровня доступа */ case 0x05: frame_size = 17; len = 11; @@ -190,7 +188,7 @@ static ssize_t pack_readem_19(void * buffer, size_t size, const struct message * static ssize_t pack_readem_list_1C(void * buffer, size_t size, const struct message * message, uint8_t number) { - // Лимиты для этого типа сообщений + /* Лимиты для этого типа сообщений */ const uint8_t nelem = message->nelements; const uint8_t frame_size = nelem * 6 + 9; const uint8_t len = nelem * 6 + 3; @@ -236,11 +234,12 @@ static ssize_t pack_readem_list_1C(void * buffer, size_t size, const struct mess } -// Копирование в буфер везде сделано через memcpy. -// во-первых это устраняет проблемы с невыровненным доступом к памяти (ARMv5 например) -// во-вторых большинство компиляторов могут правильно понять и оптимизировать -// этот код исключив реальный вызов функции. -// Итого, memcpy обеспечивает переносимый и очень быстрый способ записи в буфер +/* Копирование в буфер везде сделано через memcpy. + * во-первых это устраняет проблемы с невыровненным доступом к памяти (ARMv5 например) + * во-вторых большинство компиляторов могут правильно понять и оптимизировать + * этот код исключив реальный вызов функции. + * Итого, memcpy обеспечивает переносимый и очень быстрый способ записи в буфер + * */ static void buffer_writer_init(struct buffer_writer * self, void * buffer, size_t size) { assert(self); diff --git a/tekon/pack.h b/tekon/pack.h index 80136f4..6f9b100 100644 --- a/tekon/pack.h +++ b/tekon/pack.h @@ -15,9 +15,9 @@ extern "C" { #include #include "tekon/message.h" -// Записть сообщение в буфер -// В случае успеха возврщает кол-во записанных байт -// 0 - ошибка +/* Записть сообщение в буфер + * В случае успеха возврщает кол-во записанных байт + * 0 - ошибка */ ssize_t tekon_req_pack(void * buffer, size_t size, const struct message * message, uint8_t number); #ifdef __cplusplus diff --git a/tekon/proto.h b/tekon/proto.h index ad9077b..3e9c1b1 100644 --- a/tekon/proto.h +++ b/tekon/proto.h @@ -14,15 +14,15 @@ extern "C" { #include #define TEKON_INVALID_DEV_ADDR 0 -#define TEKON_INVALID_INDEX 0xFFFF // Признак невалидного индекса при четнии индексированных параметров +#define TEKON_INVALID_INDEX 0xFFFF /* Признак невалидного индекса при четнии индексированных параметров */ #define TEKON_PASSWD_LEN 8 #define TEKON_PRIV_ADMIN 2 #define TEKON_PRIV_USER 1 #define TEKON_PROTO_MAX_ADU_SIZE 255 -#define TEKON_PROTO_PLIST_SIZE 40 // Длина списка параметров -#define TEKON_PROTO_ILIST_SIZE 60 // Длина списка инд. параметров +#define TEKON_PROTO_PLIST_SIZE 40 /* Длина списка параметров */ +#define TEKON_PROTO_ILIST_SIZE 60 /* Длина списка инд. параметров */ #define TEKON_PROTO_POS_ACK 0xA2 #define TEKON_PROTO_NEG_ACK 0xE5 #define TEKON_PROTO_FIX_PREFIX 0x10 @@ -57,7 +57,7 @@ struct tekon_parameter { uint16_t address; uint16_t index; uint32_t value; - uint8_t qual; // значения байт качества (0 - ОК) + uint8_t qual; /* значения байт качества (0 - ОК) */ }; uint8_t tekon_crc(const void * buffer, size_t size); diff --git a/tekon/test/unit_time.c b/tekon/test/unit_time.c index e627af8..ca8f539 100644 --- a/tekon/test/unit_time.c +++ b/tekon/test/unit_time.c @@ -13,11 +13,11 @@ extern "C" { MU_TEST(test_month_idx_12) { - // контрольные значения + /* контрольные значения */ mu_assert_int_eq(0x08, tekon_month_index(16, 9, 12)); mu_assert_int_eq(0x06, tekon_month_index(17, 7, 12)); - // перебор + /* перебор */ size_t i; for(i = 0; i < 12; i++) { mu_assert_int_eq(i, tekon_month_index(19, i + 1, 12)); diff --git a/tekon/test/unit_unpack.c b/tekon/test/unit_unpack.c index c05598a..a0057ff 100644 --- a/tekon/test/unit_unpack.c +++ b/tekon/test/unit_unpack.c @@ -248,9 +248,9 @@ MU_TEST(test_read_readem_19) memcpy(&value2, &message.payload.parameters[1].value, 4); memcpy(&value3, &message.payload.parameters[2].value, 4); - // Чтобы тесты не срезались из за несовпадения точности в десятх, сотых, - // тысячный, просто срваним их с округлением до целого. Это позволит и - // нормально проверить и не лечить ненужную параною + /* Чтобы тесты не срезались из за несовпадения точности в десятх, сотых, + * тысячный, просто срваним их с округлением до целого. Это позволит и + * нормально проверить и не лечить ненужную параною */ mu_assert_int_eq((int)(10840.453), value1); mu_assert_int_eq((int)11331.432, value2); mu_assert_int_eq((int)11545.308, value3); @@ -261,14 +261,14 @@ MU_TEST(test_read_readem_1C) { const uint8_t control_msg[] = {0x68, 0x2a, 0x2a, 0x68, 0x0b, 0x02, - 0x08, 0x7c, 0xde, 0x42, 0x00, // <-- 1 - 0x00, 0x00, 0x00, 0x00, 0x00, // <-- 2 - 0x00, 0x00, 0x16, 0x43, 0x00, // <-- 3 - 0x00, 0x00, 0x00, 0x00, 0x00, // <-- 4 - 0x00, 0x00, 0x16, 0x43, 0x00, // <-- 5 - 0x08, 0x7c, 0xde, 0x42, 0x00, // <-- 6 - 0x00, 0x00, 0x00, 0x00, 0x00, // <-- 7 - 0x00, 0x00, 0x00, 0x00, 0x00, // <-- 8 + 0x08, 0x7c, 0xde, 0x42, 0x00, /* <-- 1 */ + 0x00, 0x00, 0x00, 0x00, 0x00, /* <-- 2 */ + 0x00, 0x00, 0x16, 0x43, 0x00, /* <-- 3 */ + 0x00, 0x00, 0x00, 0x00, 0x00, /* <-- 4 */ + 0x00, 0x00, 0x16, 0x43, 0x00, /* <-- 5 */ + 0x08, 0x7c, 0xde, 0x42, 0x00, /* <-- 6 */ + 0x00, 0x00, 0x00, 0x00, 0x00, /* <-- 7 */ + 0x00, 0x00, 0x00, 0x00, 0x00, /* <-- 8 */ 0x07, 0x16 }; uint8_t num = 0; @@ -287,14 +287,14 @@ MU_TEST(test_read_readem_1C_inv_len) { const uint8_t control_msg[] = {0x68, 0x2b, 0x2b, 0x68, 0x0b, 0x02, - 0x08, 0x7c, 0xde, 0x42, 0x00, // <-- 1 - 0x00, 0x00, 0x00, 0x00, 0x00, // <-- 2 - 0x00, 0x00, 0x16, 0x43, 0x00, // <-- 3 - 0x00, 0x00, 0x00, 0x00, 0x00, // <-- 4 - 0x00, 0x00, 0x16, 0x43, 0x00, // <-- 5 - 0x08, 0x7c, 0xde, 0x42, 0x00, // <-- 6 - 0x00, 0x00, 0x00, 0x00, 0x00, // <-- 7 - 0x00, 0x00, 0x00, 0x00, 0x00, // <-- 8 + 0x08, 0x7c, 0xde, 0x42, 0x00, /* <-- 1 */ + 0x00, 0x00, 0x00, 0x00, 0x00, /* <-- 2 */ + 0x00, 0x00, 0x16, 0x43, 0x00, /* <-- 3 */ + 0x00, 0x00, 0x00, 0x00, 0x00, /* <-- 4 */ + 0x00, 0x00, 0x16, 0x43, 0x00, /* <-- 5 */ + 0x08, 0x7c, 0xde, 0x42, 0x00, /* <-- 6 */ + 0x00, 0x00, 0x00, 0x00, 0x00, /* <-- 7 */ + 0x00, 0x00, 0x00, 0x00, 0x00, /* <-- 8 */ 0x07, 0x16 }; uint8_t num = 0; @@ -307,14 +307,14 @@ MU_TEST(test_read_readem_1C_inv_addr) { const uint8_t control_msg[] = {0x68, 0x2a, 0x2a, 0x68, 0x0b, 0x00, - 0x08, 0x7c, 0xde, 0x42, 0x00, // <-- 1 - 0x00, 0x00, 0x00, 0x00, 0x00, // <-- 2 - 0x00, 0x00, 0x16, 0x43, 0x00, // <-- 3 - 0x00, 0x00, 0x00, 0x00, 0x00, // <-- 4 - 0x00, 0x00, 0x16, 0x43, 0x00, // <-- 5 - 0x08, 0x7c, 0xde, 0x42, 0x00, // <-- 6 - 0x00, 0x00, 0x00, 0x00, 0x00, // <-- 7 - 0x00, 0x00, 0x00, 0x00, 0x00, // <-- 8 + 0x08, 0x7c, 0xde, 0x42, 0x00, /* <-- 1 */ + 0x00, 0x00, 0x00, 0x00, 0x00, /* <-- 2 */ + 0x00, 0x00, 0x16, 0x43, 0x00, /* <-- 3 */ + 0x00, 0x00, 0x00, 0x00, 0x00, /* <-- 4 */ + 0x00, 0x00, 0x16, 0x43, 0x00, /* <-- 5 */ + 0x08, 0x7c, 0xde, 0x42, 0x00, /* <-- 6 */ + 0x00, 0x00, 0x00, 0x00, 0x00, /* <-- 7 */ + 0x00, 0x00, 0x00, 0x00, 0x00, /* <-- 8 */ 0x07, 0x16 }; uint8_t num = 0; diff --git a/tekon/time.c b/tekon/time.c index a19c29f..b483f2c 100644 --- a/tekon/time.c +++ b/tekon/time.c @@ -23,12 +23,12 @@ static const uint16_t DAYS_IN_MONTH[2][12] = { static int is_leap_year(uint8_t year) { - // стандартное определение високосных годов: - // год, номер которого кратен 400, — високосный; - // остальные годы, номер которых кратен 100, — невисокосные; - // остальные годы, номер которых кратен 4, — високосные. - // В Тэконе год может быть записан в формате 0..99 -> - // первые 2 условия можно проигнорировать. + /* стандартное определение високосных годов: + * год, номер которого кратен 400, — високосный; + * остальные годы, номер которых кратен 100, — невисокосные; + * остальные годы, номер которых кратен 4, — високосные. + *В Тэконе год может быть записан в формате 0..99 -> + *первые 2 условия можно проигнорировать. */ return year % 4 == 0; } diff --git a/tekon/time.h b/tekon/time.h index dd6954e..eff704c 100644 --- a/tekon/time.h +++ b/tekon/time.h @@ -37,23 +37,23 @@ struct tekon_date { * минуты [0,59] * */ -// Т10.06.59РД-Д1 стр. 31 Б1,Б2,Б3 -// depth 12 или 48 +/* Т10.06.59РД-Д1 стр. 31 Б1,Б2,Б3 + * depth 12 или 48 */ int tekon_month_index(uint8_t year, uint8_t month,uint8_t depth); -// Т10.06.59РД-Д1 стр. 31 Б4 +/* Т10.06.59РД-Д1 стр. 31 Б4 */ int tekon_day_index(uint8_t year, uint8_t month, uint8_t day); -// Т10.06.59РД-Д1 стр. 31 Б4 +/* Т10.06.59РД-Д1 стр. 31 Б4 */ int tekon_day_index(uint8_t year, uint8_t month, uint8_t day); -// Т10.06.59РД-Д1 стр. 32 Б5 -// depth 384 (16 дней), 764 (32 дня), 1536 (64 дня) +/* Т10.06.59РД-Д1 стр. 32 Б5 + * depth 384 (16 дней), 764 (32 дня), 1536 (64 дня) */ int tekon_hour_index(uint8_t year, uint8_t month, uint8_t day, uint8_t hour, uint16_t depth); -// Т10.06.59РД-Д1 стр. 32 Б6 -//interval - минуты +/* Т10.06.59РД-Д1 стр. 32 Б6 + * interval - минуты */ int tekon_interval_index(uint8_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint16_t limit, uint16_t interval); diff --git a/tekon/unpack.c b/tekon/unpack.c index 6f188bd..0911e52 100644 --- a/tekon/unpack.c +++ b/tekon/unpack.c @@ -18,12 +18,11 @@ struct buffer_reader { static void buffer_reader_init(struct buffer_reader * self, const void * buffer, size_t size); -// Запись значений в буфер. -// 1 - успешно -// 0 - ошибка +/* Запись значений в буфер. + * 1 - успешно + * 0 - ошибка */ static int buffer_reader_u8(struct buffer_reader * self, uint8_t * u8); static int buffer_reader_u32(struct buffer_reader * self, uint32_t * u32); -//static int buffer_reader_u16(struct buffer_reader * self, uint16_t * u16); static ssize_t unpack_readem_11(const void * buffer, size_t size, struct message * message); static ssize_t unpack_readem_14(const void * buffer, size_t size, struct message * message); @@ -31,25 +30,25 @@ static ssize_t unpack_readem_19(const void * buffer, size_t size, struct message static ssize_t unpack_readem_list_1C(const void * buffer, size_t size, struct message * message); static int validate(const void * buffer, ssize_t ssize); -// Записть сообщение в буфер -// В случае успеха возврщает кол-во прочитанных байт -// 0 - ошибка +/* Записть сообщение в буфер + * В случае успеха возврщает кол-во прочитанных байт + * 0 - ошибка */ ssize_t tekon_resp_unpack(const void * buffer, size_t size, struct message * message, enum tekon_message_type type, uint8_t * number) { assert(buffer); assert(size); assert(message); - // Быстрые проверки сообщения - // - сообщение не может быть меньше 8 байт (кроме квитанций) - // - начинается с 0x10 или 0x68 (кроме квитанций) - // - номер посылки имеет фискированное положение (2 байт для фикс. сообщ. и 5 - // для переменныз сообщ.) + /* Быстрые проверки сообщения + * - сообщение не может быть меньше 8 байт (кроме квитанций) + * - начинается с 0x10 или 0x68 (кроме квитанций) + * - номер посылки имеет фискированное положение (2 байт для фикс. сообщ. и 5 + * для переменныз сообщ.) */ - // Грубая проверка - длина + КС + /* Грубая проверка - длина + КС */ if(!validate(buffer,size)) return 0; - // Самый простой вариант - подтверждение + /* Самый простой вариант - подтверждение */ const uint8_t * ptr = buffer; const uint8_t start = ptr[0]; @@ -58,17 +57,17 @@ ssize_t tekon_resp_unpack(const void * buffer, size_t size, struct message * mes return 1; } - // извлечение номера сообщения + /* извлечение номера сообщения */ if(number) { if(start == TEKON_PROTO_FIX_PREFIX) *number = ptr[1] & 0x0F; else if(start == TEKON_PROTO_VAR_PREFIX) *number = ptr[4] & 0x0F; - // ACK / NACK без номера + /* ACK / NACK без номера */ } - // разбор сообщения + /* разбор сообщения */ switch(type) { case TEKON_MSG_READEM_PAR_11: return unpack_readem_11(buffer, size, message); @@ -312,9 +311,9 @@ static void buffer_reader_init(struct buffer_reader * self, const void * buffer, self->avail = size; } -// Запись значений в буфер. -// 1 - успешно -// 0 - ошибка +/* Запись значений в буфер. + * 1 - успешно + * 0 - ошибка */ static int buffer_reader_u8(struct buffer_reader * self, uint8_t * u8) { assert(self); @@ -331,24 +330,6 @@ static int buffer_reader_u8(struct buffer_reader * self, uint8_t * u8) return 1; } -/*static int buffer_reader_u16(struct buffer_reader * self, uint16_t * u16) -{ - - assert(self); - assert(u16); - - const size_t size = sizeof(*u16); - - if(self->avail < size) - return 0; - - memcpy(u16, self->pos, size); - self->pos+=size; - self->avail-=size; - return 1; - -}*/ - static int buffer_reader_u32(struct buffer_reader * self, uint32_t * u32) { assert(self); diff --git a/tekon/unpack.h b/tekon/unpack.h index 6367250..d7e3a18 100644 --- a/tekon/unpack.h +++ b/tekon/unpack.h @@ -13,9 +13,9 @@ extern "C" { #include #include "tekon/message.h" -// Записть сообщение в буфер -// В случае успеха возврщает кол-во прочитанных байт -// 0 - ошибка +/* Записть сообщение в буфер + * В случае успеха возврщает кол-во прочитанных байт + * 0 - ошибка */ ssize_t tekon_resp_unpack(const void * buffer, size_t size, struct message * message, enum tekon_message_type type, uint8_t * number); diff --git a/test/app/read_msr.c b/test/app/read_msr.c index f22080c..8603053 100644 --- a/test/app/read_msr.c +++ b/test/app/read_msr.c @@ -12,7 +12,7 @@ float u32_to_f32(uint32_t value) { - //[-Werror=strict-aliasing] + /*[-Werror=strict-aliasing]*/ float res = 0; memcpy(&res, &value, 4); return res; diff --git a/utils/arch/main.c b/utils/arch/main.c index 8a6cb61..dda8ba4 100644 --- a/utils/arch/main.c +++ b/utils/arch/main.c @@ -37,7 +37,7 @@ struct app { int tzoffset; int timeout; - int use_tsc; //time stamp converter + int use_tsc; /*time stamp converter*/ }; static void apply_noconn(struct rec * rec, void * data); @@ -242,13 +242,13 @@ static int read_archive(struct app * app) */ static int read(struct app * app) { - // создать подключение + /* создать подключение */ if(app->netcfg.type == LINK_TCP) link_init_tcp(&app->link, app->netcfg.ip, app->netcfg.port, app->timeout); else if(app->netcfg.type == LINK_UDP) link_init_udp(&app->link, app->netcfg.ip, app->netcfg.port, app->timeout); - // Установить подключение и флаг нет связи + /* Установить подключение и флаг нет связи */ int result = link_up(&app->link); archive_foreach(&app->archive, apply_noconn, NULL); @@ -258,7 +258,7 @@ static int read(struct app * app) return 0; } - // Прочитать время с утсройства + /* Прочитать время с утсройства */ if(app->use_tsc) { if(!read_time(&app->begin_at.date, &app->begin_at.time, &app->dtcfg, &app->link)) { link_down(&app->link); @@ -269,13 +269,13 @@ static int read(struct app * app) } - // Прочитать архив + /* Прочитать архив */ if(!read_archive(app)) { link_down(&app->link); return 0; } - // Прочитать время с утсройства + /* Прочитать время с утсройства */ if(app->use_tsc) { if(!read_time(&app->end_at.date, &app->end_at.time, &app->dtcfg, &app->link)) { link_down(&app->link); @@ -284,7 +284,7 @@ static int read(struct app * app) } - // Закрыть коннект + /* Закрыть коннект */ link_down(&app->link); return 1; } @@ -354,26 +354,26 @@ static int read_args(struct app * app, int argc, char * const argv[]) } } - // Дописать инфу + /* Дописать инфу */ app->archive.address.gateway = gateway; app->dtcfg.gateway = gateway; app->use_tsc = app->dtcfg.gateway != TEKON_INVALID_DEV_ADDR && app->dtcfg.device != TEKON_INVALID_DEV_ADDR && app->archive.interval.type != 0; - // Адрес не задан + /* Адрес не задан */ if(app->netcfg.port == 0) { printf("please enter valid gateway address\n\n"); return 0; } - // Архив не задан + /* Архив не задан */ if(app->archive.address.device == 0) { printf("please enter valid archive address\n\n"); return 0; } - // Введены неподдерживаемые типы + /* Введены неподдерживаемые типы */ enum tekon_parameter_type type = app->archive.address.type; if(!(type == TEKON_PARAM_F32 || type == TEKON_PARAM_U32 || @@ -384,7 +384,7 @@ static int read_args(struct app * app, int argc, char * const argv[]) return 0; } - // Введены недопустимые параметры интервала/параметра + /* Введены недопустимые параметры интервала/параметра */ const char archtype = app->archive.interval.type; const uint16_t size = app->archive.address.count; const uint16_t start = app->archive.address.index; @@ -415,7 +415,7 @@ static int fill_acrhive(struct archive * archive) { assert(archive); - // Заполнить архив + /* Заполнить архив */ size_t i; for(i = 0; i < archive->address.count; i++) { struct rec rec; @@ -424,7 +424,7 @@ static int fill_acrhive(struct archive * archive) return 0; } } - // Параметры не заданы + /* Параметры не заданы */ if(archive_size(archive) == 0) { return 0; } @@ -442,7 +442,7 @@ static void apply_noconn(struct rec * rec, void * data) /* Печать записи из таблицы измерений */ static void print(struct rec * self, void * data ) { - // Общий формат вывода: адрес тип значение качество время сдвиг [индекс] + /* Общий формат вывода: адрес тип значение качество время сдвиг [индекс] */ assert(self); assert(data); @@ -452,19 +452,19 @@ static void print(struct rec * self, void * data ) const struct app * app = data; const struct paraddr * addr = &app->archive.address; - // Добавить адрес шлюза + /* Добавить адрес шлюза */ int result = snprintf(ptr, remain, "%"PRIu8":",addr->gateway); assert(result > 0); ptr += result; remain -= result; - // Добавить адрес устройства + /* Добавить адрес устройства */ result = snprintf(ptr, remain, "%"PRIu8":",addr->device); assert(result > 0); ptr += result; remain -= result; - // Добавить адрес параметра + /* Добавить адрес параметра */ result = addr->hex ? snprintf(ptr, remain, "0x%x:", addr->address) : snprintf(ptr, remain, "%"PRIu16":", addr->address); @@ -472,13 +472,13 @@ static void print(struct rec * self, void * data ) ptr += result; remain -= result; - // Добавить индекс параметра + /* Добавить индекс параметра */ result = snprintf(ptr, remain, "%"PRIu16" ", self->index); assert(result > 0); ptr += result; remain -= result; - // Добавить тип и значение + /* Добавить тип и значение */ switch(app->archive.address.type) { case TEKON_PARAM_RAW: result = snprintf(ptr, remain, "R 0x%02x%02x%02x%02x ",self->value.byte[0], self->value.byte[1], self->value.byte[2], self->value.byte[3]); @@ -504,7 +504,7 @@ static void print(struct rec * self, void * data ) ptr += result; remain -= result; - // Добавить качество + /* Добавить качество */ switch(self->qual) { case Q_INVALID: result = snprintf(ptr, remain, "INV "); @@ -523,17 +523,17 @@ static void print(struct rec * self, void * data ) ptr += result; remain -= result; - // Добавить метку времени + /* Добавить метку времени */ result = snprintf(ptr, remain, "%"PRIi64" ", self->timestamp); assert(result>0); ptr += result; remain -= result; - // Добавить сдвиг часового пояса + /* Добавить сдвиг часового пояса */ result = snprintf(ptr, remain, "%"PRIi32" ", app->tzoffset); assert(result>0); - // Вывести + /* Вывести */ printf("%s\n", buffer); } @@ -551,23 +551,23 @@ int main(int argc, char * argv[]) signal(SIGINT, sigint); - //прочитать аргменты командной строки + /* прочитать аргменты командной строки */ if(!read_args(&app, argc, argv)) { usage(); return 1; } - // подготовить архив к работе + /* подготовить архив к работе */ if(!fill_acrhive(&app.archive)) return 1; - // Прочитать данные из утсройства + /* Прочитать данные из утсройства */ int result = read(&app); - // Перевести индексы в метки времени + /* Перевести индексы в метки времени */ archive_index_to_utc(&app.archive, &app.begin_at, &app.end_at); - // Вывести результат + /* Вывести результат */ archive_foreach(&app.archive, print, &app); return result == 0; } diff --git a/utils/base/link.h b/utils/base/link.h index 21f25d8..181af19 100644 --- a/utils/base/link.h +++ b/utils/base/link.h @@ -13,13 +13,13 @@ extern "C" { #include #if defined(__unix__) || defined(__linux__) -// UNIX or LINUX +/* UNIX or LINUX */ #include #include #define TEKON_INVALID_SOCKET (-1) typedef int socket_t; #elif defined(_WIN32) || defined(WIN32) -// WINDOWS +/* WINDOWS */ #include typedef SOCKET socket_t; #define TEKON_INVALID_SOCKET (INVALID_SOCKET) diff --git a/utils/base/linux/time.c b/utils/base/linux/time.c index a8c6a47..5bce817 100644 --- a/utils/base/linux/time.c +++ b/utils/base/linux/time.c @@ -17,8 +17,8 @@ int64_t time_now_utc() int64_t time_now_local() { - // Логика простая. Получаем вермя в UTC. Прибавляем сдвиг часового пояса в - // секундах. + /* Логика простая. Получаем вермя в UTC. Прибавляем сдвиг часового пояса в + * секундах. */ time_t utc = time(NULL); struct tm ldt; @@ -37,7 +37,7 @@ int32_t time_tzoffset() int time_local_from_utc(int64_t utc, struct tm * local) { assert(local); - const time_t tutc = utc; //для корректной работы в 32-х битных системах + const time_t tutc = utc; /*для корректной работы в 32-х битных системах*/ return localtime_r(&tutc, local) != NULL; } diff --git a/utils/base/log.c b/utils/base/log.c index 4d0f658..ae8e351 100644 --- a/utils/base/log.c +++ b/utils/base/log.c @@ -28,11 +28,11 @@ int log_print(const char * format, ...) { char level = format[0] - '0'; - // Отфильтровать по типу сообщений + /* Отфильтровать по типу сообщений */ if(level > log_level) return 0; - // Вывести + /* Вывести */ va_list args; va_start(args, format); int result = vfprintf(stderr, format + 1, args); diff --git a/utils/base/log.h b/utils/base/log.h index dd9a4c1..6ae3d6c 100644 --- a/utils/base/log.h +++ b/utils/base/log.h @@ -14,10 +14,10 @@ extern "C" { #define LOG_WARN "2" #define LOG_INFO "3" -// Уровень логирования +/* Уровень логирования */ void log_setlevel(int level); -// Вывод в лог. +/* Вывод в лог. */ int log_print(const char * format, ...); #ifdef __cplusplus diff --git a/utils/base/test/unit_time.c b/utils/base/test/unit_time.c index acc1b25..d539cd8 100644 --- a/utils/base/test/unit_time.c +++ b/utils/base/test/unit_time.c @@ -11,10 +11,10 @@ extern "C" { #include "utils/base/time.h" #if defined(__unix__) || defined(__linux__) -// UNIX or LINUX +/* UNIX or LINUX*/ #include #elif defined(_WIN32) || defined(WIN32) -// WINDOWS +/* WINDOWS */ #include #endif @@ -25,14 +25,14 @@ MU_TEST(test_timestamp) int64_t local = time_now_local(); #if defined(__unix__) || defined(__linux__) - // UNIX or LINUX + /* UNIX or LINUX */ struct tm ldt; time_t tmp = time(NULL); localtime_r(&tmp, &ldt); mu_assert_int_eq(utc + ldt.tm_gmtoff, local); #elif defined(_WIN32) || defined(WIN32) - // WINDOWS + /* WINDOWS */ struct _timeb tb; _ftime( &tb ); mu_assert_int_eq(utc - tb.timezone * 60, local); diff --git a/utils/base/test/unit_tstamp.c b/utils/base/test/unit_tstamp.c index 96cb941..adccc63 100644 --- a/utils/base/test/unit_tstamp.c +++ b/utils/base/test/unit_tstamp.c @@ -22,12 +22,11 @@ MU_TEST(test_month_12) mu_assert_int_eq(1, result); mu_assert_int_eq(depth, timestamp_seq_size(&seq)); - // Проверка для месячной последовательности может быть выполнена просто: - // индекс текона = № месяца - 1 - // Соответсвенно, можно взять метку времени по индексу, преобразовать в - // локальное время и убедится, что номер месяца совпадает - - // Кроме того, можно убедится, что даты, сгенерированные по индексу, дают нам тот же самый индекс + /* Проверка для месячной последовательности может быть выполнена просто: + * индекс текона = № месяца - 1 + * Соответсвенно, можно взять метку времени по индексу, преобразовать в + * локальное время и убедится, что номер месяца совпадает + * Кроме того, можно убедится, что даты, сгенерированные по индексу, дают нам тот же самый индекс */ size_t i; for(i = 0; i < timestamp_seq_size(&seq); i++) { struct tm ldt; @@ -46,7 +45,7 @@ MU_TEST(test_month_48) mu_assert_int_eq(1, result); mu_assert_int_eq(depth, timestamp_seq_size(&seq)); - // убедится, что даты, сгенерированные по индексу, дают нам тот же самый индекс + /* убедится, что даты, сгенерированные по индексу, дают нам тот же самый индекс */ size_t i; for(i = 0; i < timestamp_seq_size(&seq); i++) { struct tm ldt; @@ -57,10 +56,10 @@ MU_TEST(test_month_48) MU_TEST(test_month_cv) { - // Проверка контроьного значения. Индекс взят и время взяты из реального - // обмена. - // время начала архива: 2018/09/01 00:00:00 - // время окончания архива: 2018/10/01 00:00:00 + /* Проверка контроьного значения. Индекс взят и время взяты из реального + * обмена. + * время начала архива: 2018/09/01 00:00:00 + * время окончания архива: 2018/10/01 00:00:00 */ const size_t index = 0x08; struct timestamp_seq seq; struct tekon_date date = {.year = 18, .month = 10, .day = 1}; @@ -68,8 +67,8 @@ MU_TEST(test_month_cv) struct tm dt; memset(&dt, 0, sizeof(dt)); - dt.tm_year = date.year + 100; //tm_year: год - 1900 - dt.tm_mon = date.month - 2; //tm_mon [0,11] + начало архива на 1 месяц раньше + dt.tm_year = date.year + 100; /*m_year: год - 1900*/ + dt.tm_mon = date.month - 2; /*tm_mon [0,11] + начало архива на 1 месяц раньше*/ dt.tm_mday = date.day; dt.tm_hour = 0; dt.tm_min = 0; @@ -89,7 +88,7 @@ MU_TEST(test_day_365) mu_assert_int_eq(1, result); mu_assert_int_eq(365, timestamp_seq_size(&seq)); - // убедится, что даты, сгенерированные по индексу, дают нам тот же самый индекс + /* убедится, что даты, сгенерированные по индексу, дают нам тот же самый индекс */ size_t i; for(i = 0; i < timestamp_seq_size(&seq); i++) { struct tm ldt; @@ -108,7 +107,7 @@ MU_TEST(test_day_366) mu_assert_int_eq(1, result); mu_assert_int_eq(366, timestamp_seq_size(&seq)); - // убедится, что даты, сгенерированные по индексу, дают нам тот же самый индекс + /* убедится, что даты, сгенерированные по индексу, дают нам тот же самый индекс */ size_t i; for(i = 0; i < timestamp_seq_size(&seq); i++) { struct tm ldt; @@ -125,7 +124,7 @@ MU_TEST(test_day_trans) mu_assert_int_eq(1, result); mu_assert_int_eq(365, timestamp_seq_size(&seq)); - // убедится, что даты, сгенерированные по индексу, дают нам тот же самый индекс + /* убедится, что даты, сгенерированные по индексу, дают нам тот же самый индекс */ size_t i; for(i = 0; i < timestamp_seq_size(&seq); i++) { struct tm ldt; @@ -136,10 +135,10 @@ MU_TEST(test_day_trans) MU_TEST(test_day_cv) { - // Проверка контроьного значения. Индекс взят и время взяты из реального - // обмена. - // время начала архива: 2018/05/08 00:00:00 - // время окончания архива: 2018/05/09 00:00:00 + /* Проверка контроьного значения. Индекс взят и время взяты из реального + * обмена. + * время начала архива: 2018/05/08 00:00:00 + * время окончания архива: 2018/05/09 00:00:00 */ const size_t index = 0x7F; struct timestamp_seq seq; struct tekon_date date = {.year = 18, .month = 5, .day = 9}; @@ -147,9 +146,9 @@ MU_TEST(test_day_cv) struct tm dt; memset(&dt, 0, sizeof(dt)); - dt.tm_year = date.year + 100; //tm_year: год - 1900 - dt.tm_mon = date.month - 1; //tm_mon [0,11] - dt.tm_mday = date.day - 1; //начало архива на день раньше + dt.tm_year = date.year + 100; /*tm_year: год - 1900*/ + dt.tm_mon = date.month - 1; /*tm_mon [0,11]*/ + dt.tm_mday = date.day - 1; /*начало архива на день раньше*/ dt.tm_hour = 0; dt.tm_min = 0; dt.tm_sec = 0; @@ -171,7 +170,7 @@ MU_TEST(test_hour_16) mu_assert_int_eq(1, result); mu_assert_int_eq(depth, timestamp_seq_size(&seq)); - // убедится, что даты, сгенерированные по индексу, дают нам тот же самый индекс + /* убедится, что даты, сгенерированные по индексу, дают нам тот же самый индекс */ size_t i; for(i = 0; i < timestamp_seq_size(&seq); i++) { struct tm ldt; @@ -192,7 +191,7 @@ MU_TEST(test_hour_32) mu_assert_int_eq(1, result); mu_assert_int_eq(depth, timestamp_seq_size(&seq)); - // убедится, что даты, сгенерированные по индексу, дают нам тот же самый индекс + /* убедится, что даты, сгенерированные по индексу, дают нам тот же самый индекс */ size_t i; for(i = 0; i < timestamp_seq_size(&seq); i++) { struct tm ldt; @@ -213,23 +212,22 @@ MU_TEST(test_hour_64) mu_assert_int_eq(1, result); mu_assert_int_eq(depth, timestamp_seq_size(&seq)); - // убедится, что даты, сгенерированные по индексу, дают нам тот же самый индекс + /* убедится, что даты, сгенерированные по индексу, дают нам тот же самый индекс */ size_t i; for(i = 0; i < timestamp_seq_size(&seq); i++) { struct tm ldt; time_local_from_utc(timestamp_seq_get(&seq, i), &ldt); mu_assert_int_eq(i, tekon_hour_index(ldt.tm_year % 100, ldt.tm_mon + 1, ldt.tm_mday, ldt.tm_hour, depth)); - //printf("%d %d\n", i, seq.time[i]); } } MU_TEST(test_hour_cv) { - // Проверка контроьного значения. Индекс взят и время взяты из реального - // обмена. - // время начала архива: 2019/03/05 14:00:00 - // время окончания архива: 2019/03/05 15:00:00 + /* Проверка контроьного значения. Индекс взят и время взяты из реального + * обмена. + * время начала архива: 2019/03/05 14:00:00 + * время окончания архива: 2019/03/05 15:00:00 */ const uint16_t depth = 1536; const size_t index = 0x296; @@ -240,10 +238,10 @@ MU_TEST(test_hour_cv) struct tm dt; memset(&dt, 0, sizeof(dt)); - dt.tm_year = date.year + 100; //tm_year: год - 1900 - dt.tm_mon = date.month - 1; //tm_mon [0,11] + dt.tm_year = date.year + 100; /*tm_year: год - 1900*/ + dt.tm_mon = date.month - 1; /*tm_mon [0,11]*/ dt.tm_mday = date.day; - dt.tm_hour = time.hour - 1; //начало архива на час раньше + dt.tm_hour = time.hour - 1; /*начало архива на час раньше*/ dt.tm_min = time.minute; dt.tm_sec = time.second; @@ -265,26 +263,25 @@ MU_TEST(test_interval_5) mu_assert_int_eq(1, result); mu_assert_int_eq(depth, timestamp_seq_size(&seq)); - // убедится, что даты, сгенерированные по индексу, дают нам тот же самый индекс + /* убедится, что даты, сгенерированные по индексу, дают нам тот же самый индекс */ size_t i; for(i = 0; i < timestamp_seq_size(&seq); i++) { struct tm ldt; time_local_from_utc(timestamp_seq_get(&seq, i), &ldt); mu_assert_int_eq(i, tekon_interval_index(ldt.tm_year % 100, ldt.tm_mon + 1, ldt.tm_mday, ldt.tm_hour, ldt.tm_min, depth, interval)); - //printf("%d %d\n", i, seq.time[i]); } } MU_TEST(test_interval_cv) { - // Проверка контроьного значения. Индекс взят и время взяты из реального - // обмена. - // время начала архива: 2019/05/06 15:45:00 - // время окончания архива: 2019/05/06 15:50:00 - // В отличие от архивов остальных видов, считанные данные относятся к - // интервалу, который закончился в ЧЧ / ММ (Т10.06.59РД-Д1) - // Т.е. контрольное время можно не сдвигать на начало архива + /* Проверка контроьного значения. Индекс взят и время взяты из реального + * обмена. + * время начала архива: 2019/05/06 15:45:00 + * время окончания архива: 2019/05/06 15:50:00 + * В отличие от архивов остальных видов, считанные данные относятся к + * интервалу, который закончился в ЧЧ / ММ (Т10.06.59РД-Д1) + * Т.е. контрольное время можно не сдвигать на начало архива */ const size_t index = 0xBD; const size_t depth = 1440; const size_t interval = 5; @@ -295,8 +292,8 @@ MU_TEST(test_interval_cv) struct tm dt; memset(&dt, 0, sizeof(dt)); - dt.tm_year = date.year + 100; //tm_year: год - 1900 - dt.tm_mon = date.month - 1; //tm_mon [0,11] + dt.tm_year = date.year + 100; /*tm_year: год - 1900*/ + dt.tm_mon = date.month - 1; /*tm_mon [0,11]*/ dt.tm_mday = date.day; dt.tm_hour = time.hour; dt.tm_min = time.minute; diff --git a/utils/base/test/unit_types.c b/utils/base/test/unit_types.c index 5c6a85e..6272463 100644 --- a/utils/base/test/unit_types.c +++ b/utils/base/test/unit_types.c @@ -232,7 +232,7 @@ MU_TEST(test_archaddr_hex) MU_TEST(test_dtaddr) { - //3:0xF017:0xF018 + /*3:0xF017:0xF018*/ struct dtaddr cfg; int result = dtaddr_from_string(&cfg, "3:0xF017:0xF018"); mu_assert_int_eq(1,result); @@ -243,7 +243,7 @@ MU_TEST(test_dtaddr) MU_TEST(test_intcfg) { - //3:0xF017:0xF018 + /*3:0xF017:0xF018*/ struct intcfg cfg; int result = intcfg_from_string(&cfg, "m:12"); mu_assert_int_eq(1,result); diff --git a/utils/base/time.h b/utils/base/time.h index 62c084d..7b18cce 100644 --- a/utils/base/time.h +++ b/utils/base/time.h @@ -14,23 +14,20 @@ extern "C" { #include #define TIME_INVALID (-1) -// -//Вернуть UTC время в сек. + +/*Вернуть UTC время в сек.*/ int64_t time_now_utc(); -//Вернуть локальное время в сек. +/*Вернуть локальное время в сек.*/ int64_t time_now_local(); -// получить сдвиг часового пояса от UTC (сек) +/* получить сдвиг часового пояса от UTC (сек) */ int32_t time_tzoffset(); -//Сгенерировать локальную дату/время -//int time_local_dt(int64_t loctime, struct tm * out); - -//Сгенерировать локальную дату/время из UTC +/*Сгенерировать локальную дату/время из UTC */ int time_local_from_utc(int64_t utc, struct tm * local); -//Сгенерировать UTC время из локальной даты/времени +/*Сгенерировать UTC время из локальной даты/времени*/ int64_t time_utc_from_local(const struct tm * local); diff --git a/utils/base/tstamp.c b/utils/base/tstamp.c index 815a2b3..a6dd33d 100644 --- a/utils/base/tstamp.c +++ b/utils/base/tstamp.c @@ -125,8 +125,8 @@ int timestamp_seq_month(struct timestamp_seq * self, const struct tekon_date * d if(!(depth == 12 || depth == 48)) return 0; - const int step = 3600*24*8; // шаг 8 дней в сек. - const int64_t limit = depth * 31 * 24 * 3600; // мес * дни * часы * сек + const int step = 3600*24*8; /* шаг 8 дней в сек. */ + const int64_t limit = depth * 31 * 24 * 3600; /* мес * дни * часы * сек */ int64_t elapsed = 0; int64_t utc = 0; @@ -293,8 +293,8 @@ int timestamp_seq_hour(struct timestamp_seq * self, const struct tekon_date * da tekon_time_from_local(&tekon_tm, &dt); tekon_date_from_local(&tekon_dt, &dt); - // Проверяем метку времени. Если она еще не добавлена, то выполняем - // округление и добавляем + /* Проверяем метку времени. Если она еще не добавлена, то выполняем + округление и добавляем */ int probe = tekon_hour_index(tekon_dt.year, tekon_dt.month, tekon_dt.day, tekon_tm.hour, depth); if(timestamp_seq_get(self, probe) == TIME_INVALID) { dt.tm_min = 0; @@ -330,7 +330,7 @@ int timestamp_seq_interval(struct timestamp_seq * self, const struct tekon_date timestamp_seq_init(self); - const size_t limit = depth * interval * 60; // лимит в секундах + const size_t limit = depth * interval * 60; /* лимит в секундах */ const int step = interval * 60; size_t elapsed = 0; @@ -338,7 +338,7 @@ int timestamp_seq_interval(struct timestamp_seq * self, const struct tekon_date memset(&dt, 0, sizeof(dt)); - // Заполнить дату/время. + /* Заполнить дату/время. */ if(!tekon_date_to_local(date, &dt)) return 0; @@ -349,7 +349,7 @@ int timestamp_seq_interval(struct timestamp_seq * self, const struct tekon_date if(utc == TIME_INVALID) return 0; - // Оркгулить по границе интервала в большую сторону + /* Оркгулить по границе интервала в большую сторону */ utc = (utc / step + 1) * step; do { struct tm ldt; diff --git a/utils/base/tstamp.h b/utils/base/tstamp.h index ce63deb..caed765 100644 --- a/utils/base/tstamp.h +++ b/utils/base/tstamp.h @@ -44,19 +44,19 @@ struct timestamp_seq { size_t count; }; -// Месячная последовательность. -// size - 12 или 48 +/* Месячная последовательность. + * size - 12 или 48 */ int timestamp_seq_month(struct timestamp_seq * self, const struct tekon_date * date, size_t depth); -// Суточная последовательность +/* Суточная последовательность */ int timestamp_seq_day(struct timestamp_seq * self, const struct tekon_date * date); -// Часовая последовательность -// size : 384 (16 дней), 764 (32 дня), 1536 (64 дня) +/* Часовая последовательность + * size : 384 (16 дней), 764 (32 дня), 1536 (64 дня) */ int timestamp_seq_hour(struct timestamp_seq * self, const struct tekon_date * date, const struct tekon_time * time, size_t depth); -// Интервальная последовательность -// interval - минуты +/* Интервальная последовательность + * interval - минуты */ int timestamp_seq_interval(struct timestamp_seq * self, const struct tekon_date * date, const struct tekon_time * time, size_t depth, size_t interval); void timestamp_seq_init(struct timestamp_seq * self); diff --git a/utils/base/types.c b/utils/base/types.c index 0d45b96..9bbc642 100644 --- a/utils/base/types.c +++ b/utils/base/types.c @@ -17,7 +17,7 @@ extern "C" { #include "utils/base/string.h" #if defined(__unix__) || defined(__linux__) -#include //inet_addr +#include #endif @@ -52,7 +52,7 @@ static int intcfg_is_valid(const struct intcfg * self) int netaddr_from_string(struct netaddr * self, const char * str) { - //udp:192.168.1.10:51960@1 + /*udp:192.168.1.10:51960@1*/ assert(self); if(string_is_term(str)) return 0; @@ -69,7 +69,7 @@ int netaddr_from_string(struct netaddr * self, const char * str) memset(&result, 0, sizeof(result)); - // прочитать тип адреса + /* прочитать тип адреса */ for(cnt = 0; cnt < typelen && !string_is_term(ptr) && *ptr != ':'; cnt++, ptr++) { buffer[cnt] = *ptr; } @@ -86,7 +86,7 @@ int netaddr_from_string(struct netaddr * self, const char * str) else return 0; - // прочитать IP + /* прочитать IP */ ptr = string_next(ptr); for(cnt = 0; cnt < iplen && !string_is_term(ptr) && *ptr != ':'; cnt++, ptr++) { result.ip[cnt] = *ptr; @@ -97,7 +97,7 @@ int netaddr_from_string(struct netaddr * self, const char * str) if(!validate_ip(result.ip)) return 0; - // прочитать порт + /* прочитать порт */ ptr = string_next(ptr); for(cnt = 0; cnt < portlen && !string_is_term(ptr) && *ptr != '@'; cnt++, ptr++) { buffer[cnt] = *ptr; @@ -111,7 +111,7 @@ int netaddr_from_string(struct netaddr * self, const char * str) result.port = port; - // прочитать адрес шлюза + /* прочитать адрес шлюза */ ptr = string_next(ptr); for(cnt = 0; cnt < gwlen && !string_is_term(ptr); cnt++, ptr++) { buffer[cnt] = *ptr; @@ -129,8 +129,8 @@ int netaddr_from_string(struct netaddr * self, const char * str) int paraddr_from_string(struct paraddr * self, const char * str) { - //1:0x2000:0:F - //1:123:0:I + /*1:0x2000:0:F*/ + /*1:123:0:I*/ assert(self); if(string_is_term(str)) return 0; @@ -147,7 +147,7 @@ int paraddr_from_string(struct paraddr * self, const char * str) memset(&result, 0, sizeof(result)); - // прочитать адрес устройства + /* прочитать адрес устройства */ for(cnt = 0; cnt < devlen && !string_is_term(ptr) && *ptr != ':'; cnt++, ptr++) { buffer[cnt] = *ptr; } @@ -160,7 +160,7 @@ int paraddr_from_string(struct paraddr * self, const char * str) result.device = device; - // прочитать № параметра. Адрес может быть как 10-чным, так и 16-ричным. + /* прочитать № параметра. Адрес может быть как 10-чным, так и 16-ричным. */ ptr = string_next(ptr); for(cnt = 0; cnt < parlen && !string_is_term(ptr) && *ptr != ':'; cnt++, ptr++) { buffer[cnt] = *ptr; @@ -175,7 +175,7 @@ int paraddr_from_string(struct paraddr * self, const char * str) result.address = parameter; result.hex = is_hex; - // прочитать индекс + /* прочитать индекс */ ptr = string_next(ptr); for(cnt = 0; cnt < indlen && !string_is_term(ptr) && *ptr != ':'; cnt++, ptr++) { buffer[cnt] = *ptr; @@ -188,7 +188,7 @@ int paraddr_from_string(struct paraddr * self, const char * str) return 0; result.index = index; - // прочитать тип + /* прочитать тип */ ptr = string_next(ptr); for(cnt = 0; cnt < typelen && !string_is_term(ptr); cnt++, ptr++) { buffer[cnt] = *ptr; @@ -229,8 +229,8 @@ int paraddr_from_string(struct paraddr * self, const char * str) int archaddr_from_string(struct paraddr * self, const char * str) { - //3:12345:0:1440:F - //3:0x801C:0:1440:F + /*3:12345:0:1440:F*/ + /*3:0x801C:0:1440:F*/ assert(self); if(string_is_term(str)) return 0; @@ -247,7 +247,7 @@ int archaddr_from_string(struct paraddr * self, const char * str) memset(&result, 0, sizeof(result)); - // прочитать адрес устройства + /* прочитать адрес устройства */ for(cnt = 0; cnt < devlen && !string_is_term(ptr) && *ptr != ':'; cnt++, ptr++) { buffer[cnt] = *ptr; } @@ -260,7 +260,7 @@ int archaddr_from_string(struct paraddr * self, const char * str) result.device = device; - // прочитать № параметра. Адрес может быть как 10-чным, так и 16-ричным. + /* прочитать № параметра. Адрес может быть как 10-чным, так и 16-ричным. */ ptr = string_next(ptr); for(cnt = 0; cnt < parlen && !string_is_term(ptr) && *ptr != ':'; cnt++, ptr++) { buffer[cnt] = *ptr; @@ -275,7 +275,7 @@ int archaddr_from_string(struct paraddr * self, const char * str) result.address = parameter; result.hex = is_hex; - // прочитать начальный индекс + /* прочитать начальный индекс */ ptr = string_next(ptr); for(cnt = 0; cnt < indlen && !string_is_term(ptr) && *ptr != ':'; cnt++, ptr++) { buffer[cnt] = *ptr; @@ -288,7 +288,7 @@ int archaddr_from_string(struct paraddr * self, const char * str) return 0; result.index = index; - // прочитать конечный индекс + /* прочитать конечный индекс */ ptr = string_next(ptr); for(cnt = 0; cnt < indlen && !string_is_term(ptr) && *ptr != ':'; cnt++, ptr++) { buffer[cnt] = *ptr; @@ -301,7 +301,7 @@ int archaddr_from_string(struct paraddr * self, const char * str) return 0; result.count = count; - // прочитать тип + /* прочитать тип */ ptr = string_next(ptr); for(cnt = 0; cnt < typelen && !string_is_term(ptr); cnt++, ptr++) { buffer[cnt] = *ptr; @@ -342,7 +342,7 @@ int archaddr_from_string(struct paraddr * self, const char * str) int dtaddr_from_string(struct dtaddr * self, const char * str) { - //3:0xF017:0xF018 + /*3:0xF017:0xF018*/ assert(self); if(string_is_term(str)) return 0; @@ -357,7 +357,7 @@ int dtaddr_from_string(struct dtaddr * self, const char * str) memset(&result, 0, sizeof(result)); - // прочитать адрес устройства + /* прочитать адрес устройства */ for(cnt = 0; cnt < devlen && !string_is_term(ptr) && *ptr != ':'; cnt++, ptr++) { buffer[cnt] = *ptr; } @@ -370,7 +370,7 @@ int dtaddr_from_string(struct dtaddr * self, const char * str) result.device = device; - // прочитать адрес даты. Может быть как 10-чным, так и 16-ричным. + /* прочитать адрес даты. Может быть как 10-чным, так и 16-ричным. */ ptr = string_next(ptr); for(cnt = 0; cnt < parlen && !string_is_term(ptr) && *ptr != ':'; cnt++, ptr++) { buffer[cnt] = *ptr; @@ -384,7 +384,7 @@ int dtaddr_from_string(struct dtaddr * self, const char * str) result.date = parameter; - // прочитать адрес времени. Может быть как 10-чным, так и 16-ричным. + /* прочитать адрес времени. Может быть как 10-чным, так и 16-ричным. */ ptr = string_next(ptr); for(cnt = 0; cnt < parlen && !string_is_term(ptr) && *ptr != ':'; cnt++, ptr++) { buffer[cnt] = *ptr; @@ -404,8 +404,7 @@ int dtaddr_from_string(struct dtaddr * self, const char * str) int intcfg_from_string(struct intcfg * self, const char * str) { - //Y:12 - //I:1440:5 + /*Y:12*/ assert(self); if(string_is_term(str)) return 0; @@ -436,7 +435,7 @@ int intcfg_from_string(struct intcfg * self, const char * str) } result.type = type; - // прочитать глубину архива + /* прочитать глубину архива */ ptr = string_next(ptr); ptr = string_next(ptr); for(cnt = 0; cnt < depthlen && !string_is_term(ptr) && *ptr != ':'; cnt++, ptr++) { @@ -447,7 +446,7 @@ int intcfg_from_string(struct intcfg * self, const char * str) result.depth = atoi(buffer); - // Прочитать интервал архива + /* Прочитать интервал архива */ ptr = string_next(ptr); for(cnt = 0; cnt < intlen && !string_is_term(ptr) && *ptr != ':'; cnt++, ptr++) { buffer[cnt] = *ptr; diff --git a/utils/base/win/link.c b/utils/base/win/link.c index 0534ca8..e3afe4c 100644 --- a/utils/base/win/link.c +++ b/utils/base/win/link.c @@ -9,11 +9,11 @@ extern "C" { #include "utils/base/link.h" #include #include -// Инициализация WSA. Про очистку (WSACleanup) я не забыл, а просто -// проигнорировал, т.к. у нас не продпологается несколько вызовов -// WSAStartup/WSACleanup. -// Функция не является потокобезопасной. Но это так же не является -// проблемой, т.к. мы не предпологаем использование потоков +/* Инициализация WSA. Про очистку (WSACleanup) я не забыл, а просто + * проигнорировал, т.к. у нас не продпологается несколько вызовов + * WSAStartup/WSACleanup. + * Функция не является потокобезопасной. Но это так же не является + * проблемой, т.к. мы не предпологаем использование потоков */ static int wsa_init() { static int wsa_init = 0; @@ -110,16 +110,16 @@ int link_up(struct link * self) int len = sizeof(self->remote); - // Таймауты, установленные ранее, не работает для connect'а -> - // Коннект может занимать непредсказуемое кол-во времени (обычно ~10-15 секунд, но - // зависит от настроек в реестре) - // Переходить на select и неблокирующие сокеты я пока не хочу. Причин - // несколько: - // - это актуально только для TCP. У нас основной режим работы - UDP - // - у нас нет особых требований по скорости реакции системы. 5-10 секунд не - // критичны - // - это особая фишка винды. Работа в винде больше опциональная и требуется - // для упрощения настройки с компов без линухи + /* Таймауты, установленные ранее, не работает для connect'а -> + * Коннект может занимать непредсказуемое кол-во времени (обычно ~10-15 секунд, но + * зависит от настроек в реестре) + * Переходить на select и неблокирующие сокеты я пока не хочу. Причин + * несколько: + * - это актуально только для TCP. У нас основной режим работы - UDP + * - у нас нет особых требований по скорости реакции системы. 5-10 секунд не + * критичны + * - это особая фишка винды. Работа в винде больше опциональная и требуется + * для упрощения настройки с компов без линухи */ if(connect(s, (struct sockaddr*)&self->remote, len) != 0) diff --git a/utils/base/win/time.c b/utils/base/win/time.c index 3263345..d3e3507 100644 --- a/utils/base/win/time.c +++ b/utils/base/win/time.c @@ -17,8 +17,8 @@ int64_t time_now_utc() int64_t time_now_local() { - // Логика похожа на NIX-ову версию. Но...В винде сдвиг часового пояса считается - // в минутах и между UTC и лок. временем + /* Логика похожа на NIX-ову версию. Но...В винде сдвиг часового пояса считается + * в минутах и между UTC и лок. временем */ time_t utc = time(NULL); struct _timeb tb; @@ -36,7 +36,7 @@ int32_t time_tzoffset() int time_local_from_utc(int64_t utc, struct tm * local) { assert(local); - const time_t tutc = utc; //для корректной работы в 32-х битных системах + const time_t tutc = utc; /* для корректной работы в 32-х битных системах */ struct tm * ptm = localtime(&tutc); if(ptm) *local = *ptm; diff --git a/utils/msr/main.c b/utils/msr/main.c index 7ed3c8e..456e74a 100644 --- a/utils/msr/main.c +++ b/utils/msr/main.c @@ -202,10 +202,10 @@ static int read(struct app * app) diff; - // Если порция данных была прочитана с ошибкой, то нет смысла читать - // остальные. Просто стивим всем оставшимся ошибку связи. Чтобы - // сделать это с минимальным трудом, кладем коннект и пытаемся - // вычитать данные на отключенном линке. + /* Если порция данных была прочитана с ошибкой, то нет смысла читать + остальные. Просто стивим всем оставшимся ошибку связи. Чтобы + сделать это с минимальным трудом, кладем коннект и пытаемся + вычитать данные на отключенном линке. */ if(!read_multiple(msr_table_get(table, pos), chunk, link)) { link_down(link); return 0; @@ -281,13 +281,13 @@ static int read_args(struct app * app, int argc, char * const argv[]) } } - // Адрес не задан + /* Адрес не задан */ if(app->netcfg.port == 0) { printf("please enter gateway's address\n\n"); return 0; } - // Параметры не заданы + /* Параметры не заданы */ if(msr_table_size(&app->table) == 0) { printf("please enter parameters to read\n\n"); return 0; @@ -306,19 +306,19 @@ void print(struct msr * self, void * data) size_t remain = sizeof(buffer); char * ptr = buffer; - // Добавить адрес шлюза + /* Добавить адрес шлюза */ int result = snprintf(ptr, remain, "%"PRIu8":",self->gateway); assert(result > 0); ptr += result; remain -= result; - // Добавить адрес устройства + /* Добавить адрес устройства */ result = snprintf(ptr, remain, "%"PRIu8":",self->device); assert(result > 0); ptr += result; remain -= result; - // Добавить адрес параметра + /* Добавить адрес параметра */ result = self->hex ? snprintf(ptr, remain, "0x%x:", self->address) : snprintf(ptr, remain, "%"PRIu16":", self->address); @@ -326,14 +326,13 @@ void print(struct msr * self, void * data) ptr += result; remain -= result; - // Добавить индекс параметра result = snprintf(ptr, remain, "%"PRIu16" ", self->index); assert(result > 0); ptr += result; remain -= result; - // Добавить значение + /* Добавить значение */ switch(self->type) { case TEKON_PARAM_RAW: result = snprintf(ptr, remain, "R 0x%02x%02x%02x%02x ",self->value.byte[0], self->value.byte[1], self->value.byte[2], self->value.byte[3]); @@ -367,7 +366,7 @@ void print(struct msr * self, void * data) ptr += result; remain -= result; - // Добавить качество + /* Добавить качество */ switch(self->qual) { case Q_INVALID: result = snprintf(ptr, remain, "INV "); @@ -386,17 +385,17 @@ void print(struct msr * self, void * data) ptr += result; remain -= result; - // Добавить метку времени + /* Добавить метку времени */ result = snprintf(ptr, remain, "%"PRIi64" ", self->timestamp); assert(result > 0); ptr += result; remain -= result; - // Добавить информацию о сдвиге часового пояса + /* Добавить информацию о сдвиге часового пояса */ result = snprintf(ptr, remain, "%"PRIi32, app->tzoffset); assert(result > 0); - // Вывести + /* Вывести */ printf("%s\n", buffer); } diff --git a/utils/msr/msr.h b/utils/msr/msr.h index a2b470f..af6f94a 100644 --- a/utils/msr/msr.h +++ b/utils/msr/msr.h @@ -14,8 +14,8 @@ extern "C" { #include "tekon/proto.h" #include "utils/base/types.h" -// Макс. кол-вол измерений, которое может быть запрошено -// за один сеанс. +/* Макс. кол-вол измерений, которое может быть запрошено + * за один сеанс. */ #define MEASURMENT_MAX_TABLE_SIZE 1024 struct msr { diff --git a/utils/sync/check.c b/utils/sync/check.c index 47e8191..11081cb 100644 --- a/utils/sync/check.c +++ b/utils/sync/check.c @@ -56,8 +56,8 @@ static int check_indexes(const struct tm * newtime, const struct tm * devtime) assert(newtime); assert(devtime); - //Последовательно проверяем индексы и убеждаемся, что они не будут сдвинуты - //при перестановке времени + /*Последовательно проверяем индексы и убеждаемся, что они не будут сдвинуты + *при перестановке времени */ struct tekon_date devd; struct tekon_time devt; diff --git a/utils/sync/main.c b/utils/sync/main.c index e76942d..444492d 100644 --- a/utils/sync/main.c +++ b/utils/sync/main.c @@ -30,7 +30,7 @@ struct app { struct dtaddr dtaddr; struct checks checks; uint8_t password[TEKON_PASSWD_LEN]; - int64_t newtime; // Устанавливаемое время (UTC) + int64_t newtime; /* Устанавливаемое время (UTC) */ int allow_diff; int timeout; }; @@ -407,14 +407,14 @@ static int read_args(struct app * app, int argc, char * const argv[]) } } - // Пароль не задан + /* Пароль не задан */ if(!passread) { printf("please enter password\n\n"); return 0; } - // Адрес не задан + /* Адрес не задан */ if(app->netcfg.port == 0) { printf("please enter gateway's address\n\n"); return 0; @@ -422,12 +422,13 @@ static int read_args(struct app * app, int argc, char * const argv[]) app->dtaddr.gateway = app->netcfg.gateway; - // Адрес не задан + /* Адрес не задан */ if(app->dtaddr.date == 0) { printf("please enter date's address\n\n"); return 0; } - // Адрес не задан + + /* Адрес не задан */ if(app->dtaddr.time == 0) { printf("please enter time's address\n\n"); return 0; diff --git a/utils/sync/test/unit_check.c b/utils/sync/test/unit_check.c index c1e0bf2..5e3c9d7 100644 --- a/utils/sync/test/unit_check.c +++ b/utils/sync/test/unit_check.c @@ -210,14 +210,14 @@ MU_TEST(test_checks_run_indexes) result = checks_run(&checks, &newtime, &devtime); mu_assert_int_eq(1, result); - // Сдвиг часового индекса + /* Сдвиг часового индекса */ newtime.tm_hour++; result = checks_run(&checks, &newtime, &devtime); mu_assert_int_eq(0, result); mu_assert_int_eq(TIME_CHECK_INDEX, checks.fail); checks.fail = TIME_CHECK_NONE; - // Сдвиг суточного индекса + /* Сдвиг суточного индекса */ memcpy(&newtime, &devtime, sizeof(devtime)); newtime.tm_mday++; result = checks_run(&checks, &newtime, &devtime); @@ -225,7 +225,7 @@ MU_TEST(test_checks_run_indexes) mu_assert_int_eq(TIME_CHECK_INDEX, checks.fail); checks.fail = TIME_CHECK_NONE; - // Сдвиг месячного индекса + /* Сдвиг месячного индекса */ memcpy(&newtime, &devtime, sizeof(devtime)); newtime.tm_mon++; result = checks_run(&checks, &newtime, &devtime); @@ -233,7 +233,7 @@ MU_TEST(test_checks_run_indexes) mu_assert_int_eq(TIME_CHECK_INDEX, checks.fail); checks.fail = TIME_CHECK_NONE; - // Сдвиг интервального индекса (5 мин) + /* Сдвиг интервального индекса (5 мин) */ memcpy(&newtime, &devtime, sizeof(devtime)); newtime.tm_min += 7; result = checks_run(&checks, &newtime, &devtime);