diff --git a/HSFW_management/CMakeLists.txt b/HSFW_management/CMakeLists.txt index 49bfefe..ba16cbd 100644 --- a/HSFW_management/CMakeLists.txt +++ b/HSFW_management/CMakeLists.txt @@ -76,6 +76,7 @@ target_link_libraries(${PROJ} ${${PROJ}_LIBRARIES} ${USB_LIBRARIES}) # Installation of the program INSTALL(FILES ${MO_FILE} DESTINATION "share/locale/ru/LC_MESSAGES") +INSTALL(FILES "99-edmund_hsfw.rules" DESTINATION "/etc/udev/rules.d") INSTALL(TARGETS ${PROJ} DESTINATION "bin") ###### gettext ###### diff --git a/HSFW_management/cmdlnopts.c b/HSFW_management/cmdlnopts.c index da25c2e..eddaf09 100644 --- a/HSFW_management/cmdlnopts.c +++ b/HSFW_management/cmdlnopts.c @@ -39,6 +39,7 @@ glob_pars G; int listNms = 0 // list names ,gohome = 0 // first go home ,reName = 0 // rename wheels/positions + ,showpos = 0 // show current position (if none args) ; @@ -47,6 +48,7 @@ int listNms = 0 // list names glob_pars const Gdefault = { NULL // wheelID ,NULL // wheelName + ,NULL // serial ,0 // filterPos ( 0 - get current position) ,NULL // filterName ,NULL // filterId @@ -63,6 +65,8 @@ myoption cmdlnopts[] = { {"wheel-id",NEED_ARG, NULL, 'W', arg_string, APTR(&G.wheelID), N_("letter wheel identificator")}, /// "название колеса" {"wheel-name",NEED_ARG, NULL, 'N', arg_string, APTR(&G.wheelName), N_("wheel name")}, + /// "серийный номер турели (с начальными нулями)" + {"serial", NEED_ARG, NULL, 's', arg_string, APTR(&G.serial), N_("turret serial (with leading zeros)")}, /// "номер позиции фильтра" {"f-position",NEED_ARG, NULL, 'p', arg_int, APTR(&G.filterPos), N_("filter position number")}, /// "название фильтра" @@ -125,10 +129,7 @@ glob_pars *parse_args(int argc, char **argv){ } } if(argc == oldargc){ // no parameters given or given only wrong parameters - listNms = LIST_PRES; - /// "Не передано никаких аргументов, вывожу список подключенных устройств!" - WARNX(_("No arguments given, list all devices connected!")); - return &G; + showpos = 1; } return &G; } diff --git a/HSFW_management/cmdlnopts.h b/HSFW_management/cmdlnopts.h index d5b794b..29a27c6 100644 --- a/HSFW_management/cmdlnopts.h +++ b/HSFW_management/cmdlnopts.h @@ -31,6 +31,7 @@ typedef struct{ char *wheelID; // ID of wheel to work with char *wheelName; // and/or its name + char *serial; // turret's serial (string description) int filterPos; // position of filter char *filterName; // and/or its name char *filterId; // or full ID like "A2" @@ -42,7 +43,7 @@ typedef struct{ // default & global parameters extern glob_pars const Gdefault; -extern int listNms, gohome, reName; +extern int listNms, gohome, reName, showpos; extern glob_pars G; diff --git a/HSFW_management/hsfw.c b/HSFW_management/hsfw.c index e22086c..b8e70ff 100644 --- a/HSFW_management/hsfw.c +++ b/HSFW_management/hsfw.c @@ -83,12 +83,11 @@ void check_args(){ set_cur_wheel(i); } } - if(G.wheelName){ // find wheel by name given + if(!reName && G.wheelName){ // find wheel by name given if(G.wheelID){ /// "Заданы и идентификатор, и имя колеса; попробуйте что-то одно!" ERRX(_("You give both wheel ID and wheel name, try something one!")); } - wheel_fd = -1; for(i = 0; i < HW_found; ++i){ if(strcmp(wheels[i].name, G.wheelName) == 0){ set_cur_wheel(i); @@ -96,18 +95,37 @@ void check_args(){ } } } + char oldid = wheel_id; + void setWid(){ + if(oldid > 0) wheel_id = oldid; + if(!G.wheelID){ + G.wheelID = calloc(2, 1); + *G.wheelID = wheel_id; + } + } // if there's only one turret, fill wheel_id - if(wheel_id < 0 && HW_found == 1) + if(HW_found == 1 && (wheel_id < 0 || (wheel_fd < 0 && reName))){ set_cur_wheel(0); + if(reName) setWid(); + }else if(G.serial){ /// HW given by its serial + for(i = 0; i < HW_found; ++i){ + if(strcmp(wheels[i].serial, G.serial) == 0){ + set_cur_wheel(i); + if(reName) setWid(); + break; + } + } + } if(wheel_fd < 0 || !wheel_chosen){ /// "Заданное колесо не обнаружено!" ERRX(_("Given wheel not found!")); } - if(gohome) return; + if(showpos || gohome) return; if(G.filterId){ // filter given by its id like "B3" char *fid = G.filterId; /// "Идентификатор фильтра состоит из буквы (колесо) и цифры (позиция)" if(strlen(G.filterId) != 2 || fid[1] > '9' || fid[1] < '0') + /// "Идентификатор фильтра - буква (колесо) и число (позиция)" ERRX(_("Filter ID is letter (wheel) and number (position)")); filter_pos = fid[1] - '0'; }else if(G.filterPos){ // filter given by numerical position @@ -125,6 +143,7 @@ void check_args(){ ERRX(_("Filter %s not found!"), G.filterName); } }else{ + if(reName) return; /// "Не задано никакого действия" ERRX("No action given"); } @@ -216,6 +235,8 @@ void check_and_clear_err(int fd){ /** * poll status register until moving stops + * @param fd - turret file descriptor + * @param msg - ==1 to show message * @return current position */ int poll_regstatus(int fd, int msg){ @@ -274,7 +295,7 @@ char *get_filter_name(wheel_descr *wheel, int pos){ * list properties of wheels & fill remain fields of struct wheel_descr */ void list_props(_U_ int verblevl, wheel_descr *wheel){ - uint8_t buf[REG_NAME_LEN]; + uint8_t buf[REG_NAME_LEN+1]; int fd = wheel->fd; if(fd < 0){ /// "Не могу открыть устройство" @@ -311,16 +332,22 @@ void list_props(_U_ int verblevl, wheel_descr *wheel){ strncpy(wheel->name, nm, 9); if(verblevl) printf(", name '%s'", wheel->name); } - if(verblevl) printf("\n\tFilters:\n"); + if(wheel->serial && verblevl){ + printf(", serial '%s'", wheel->serial); + } + if(verblevl) printf(", %d filters:\n", wheel->maxpos); else return; int i, m = wheel->maxpos + 1; // now get filter names for(i = 1; i < m; ++i){ nm = get_filter_name(wheel, i); - printf("\t\tPOS %d", i); - if(nm) printf(" -- '%s'", nm); + printf("\t%d", i); + if(nm) printf(": '%s'", nm); printf("\n"); } + if(verblevl){ + printf("current position: %d\n", poll_regstatus(wheel->fd, 0)); + } } if(verblevl != LIST_ALL) return; // now list all things stored in memory of turret driver @@ -330,12 +357,13 @@ void list_props(_U_ int verblevl, wheel_descr *wheel){ wheel_descr wl; wl.fd = fd; wl.maxpos = ABS_MAX_POS; + if(wheel->serial) printf("Turret with serial '%s'\n", wheel->serial); for(w = 'A'; w < 'I'; ++w){ char *nm = getwname(w); int f; printf("Wheel ID '%c'", w); - if(nm) printf(" with name '%s'", nm); - printf("; filters:\n"); + if(nm) printf(", name '%s'", nm); + printf(", filters:\n"); wl.ID = w; for(f = 1; f <= ABS_MAX_POS; ++f){ nm = get_filter_name(&wl, f); @@ -347,7 +375,7 @@ void list_props(_U_ int verblevl, wheel_descr *wheel){ readreg(fd, buf, REG_NAME, REG_NAME_LEN); break; } - printf("\tPOS %d -- '%s'\n", f, nm); + printf("\t%d: '%s'\n", f, nm); } } } @@ -377,9 +405,62 @@ void list_hw(int show){ } } +/** + * Rename wheels or filters + */ void rename_hw(){ FNAME(); check_and_clear_err(wheel_fd); + char *newname = NULL; + size_t L = 0; + uint8_t buf[REG_NAME_LEN]; + void checknm(char *nm){ + newname = nm; + /// "Название не должно превышать восьми символов" + if((L = strlen(nm)) > 8) ERRX(_("Name should be not longer than 8 symbols")); + } + memset(buf, 0, sizeof(buf)); + uint8_t cmd = 0; + // now check what user wants to rename + if(G.filterName && (G.filterId || G.filterPos)){ // user wants to rename filter + checknm(G.filterName); + DBG("Rename filter %d to %s", filter_pos, newname); + cmd = RENAME_FILTER; + }else if(G.wheelName && (G.wheelID || G.filterId)){ // rename wheel + checknm(G.wheelName); + DBG("Rename wheel '%c' to %s", wheel_id, newname); + cmd = RENAME_WHEEL; + } + if(!cmd){ + /// "Чтобы переименовать, необходимо указать новое название фильтра/колеса и его позицию/идентификатор!" + ERRX(_("You should give new filter/wheel name and its POS/ID to rename!")); + } + + int i, stat = 1; + for(i = 0; i < 10 && stat; ++i){ + buf[0] = REG_NAME; + buf[1] = cmd; + buf[2] = wheel_id; + if(cmd == RENAME_FILTER) buf[3] = filter_pos; + memcpy(&buf[4], newname, L); + if((stat = writereg(wheel_fd, buf, REG_NAME_LEN))) continue; + if((stat = readreg(wheel_fd, buf, REG_NAME, REG_NAME_LEN))) continue; + if(buf[2]){ // err not empty + DBG("ER: %d", buf[2]); + check_and_clear_err(wheel_fd); + stat = 1; continue; + } + if(memcmp(&buf[6], newname, L)){ + DBG("Names not match!"); + stat = 1; + continue; + } + break; + } + /// "Не удалось переименовать" + if(i == 10) ERRX(_("Can't rename")); + /// "Переименовано удачно!" + green(_("Succesfully renamed!\n")); } /** @@ -446,6 +527,9 @@ void move_wheel(){ void process_args(){ FNAME(); if(wheel_id < 0) return; + if(showpos){ + printf("%d\n", poll_regstatus(wheel_fd, 0)); + } if(gohome){ go_home(wheel_fd); return; diff --git a/HSFW_management/hsfw.h b/HSFW_management/hsfw.h index 6f6f6d5..4a50a47 100644 --- a/HSFW_management/hsfw.h +++ b/HSFW_management/hsfw.h @@ -48,5 +48,4 @@ enum name_cmd{ void check_args(); void process_args(); - #endif // __HSFW_H__ diff --git a/HSFW_management/locale/ru/LC_MESSAGES/HSFW_manage.mo b/HSFW_management/locale/ru/LC_MESSAGES/HSFW_manage.mo index b91c3b4..b280291 100644 Binary files a/HSFW_management/locale/ru/LC_MESSAGES/HSFW_manage.mo and b/HSFW_management/locale/ru/LC_MESSAGES/HSFW_manage.mo differ diff --git a/HSFW_management/locale/ru/messages.po b/HSFW_management/locale/ru/messages.po index 232b898..6882029 100644 --- a/HSFW_management/locale/ru/messages.po +++ b/HSFW_management/locale/ru/messages.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-05-13 20:47+0300\n" +"POT-Creation-Date: 2016-05-14 16:45+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -46,42 +46,51 @@ msgstr "" msgid "Wrong argument \"%s\" of parameter \"%s\"" msgstr "" -#: /Big/Data/SAO/edmund_opt/HSFW_management/usefull_macros.c:173 +#. / "Не задано имя файла!" +#: /Big/Data/SAO/edmund_opt/HSFW_management/usefull_macros.c:174 msgid "No filename given!" msgstr "" -#: /Big/Data/SAO/edmund_opt/HSFW_management/usefull_macros.c:175 +#. / "Не могу открыть %s для чтения" +#: /Big/Data/SAO/edmund_opt/HSFW_management/usefull_macros.c:177 #, c-format msgid "Can't open %s for reading" msgstr "" -#: /Big/Data/SAO/edmund_opt/HSFW_management/usefull_macros.c:177 +#. / "Не могу выполнить stat %s" +#: /Big/Data/SAO/edmund_opt/HSFW_management/usefull_macros.c:180 #, c-format msgid "Can't stat %s" msgstr "" -#: /Big/Data/SAO/edmund_opt/HSFW_management/usefull_macros.c:180 +#. / "Ошибка mmap" +#: /Big/Data/SAO/edmund_opt/HSFW_management/usefull_macros.c:184 msgid "Mmap error for input" msgstr "" -#: /Big/Data/SAO/edmund_opt/HSFW_management/usefull_macros.c:181 +#. / "Не могу закрыть mmap'нутый файл" +#: /Big/Data/SAO/edmund_opt/HSFW_management/usefull_macros.c:186 msgid "Can't close mmap'ed file" msgstr "" -#: /Big/Data/SAO/edmund_opt/HSFW_management/usefull_macros.c:190 +#. / "Не могу munmap" +#: /Big/Data/SAO/edmund_opt/HSFW_management/usefull_macros.c:196 msgid "Can't munmap" msgstr "" -#: /Big/Data/SAO/edmund_opt/HSFW_management/usefull_macros.c:214 +#. / "Не могу настроить консоль" +#: /Big/Data/SAO/edmund_opt/HSFW_management/usefull_macros.c:221 msgid "Can't setup console" msgstr "" #. Get settings -#: /Big/Data/SAO/edmund_opt/HSFW_management/usefull_macros.c:283 +#. / "Не могу получить настройки" +#: /Big/Data/SAO/edmund_opt/HSFW_management/usefull_macros.c:291 msgid "Can't get settings" msgstr "" -#: /Big/Data/SAO/edmund_opt/HSFW_management/usefull_macros.c:293 +#. / "Не могу установить настройки" +#: /Big/Data/SAO/edmund_opt/HSFW_management/usefull_macros.c:302 msgid "Can't set settings" msgstr "" @@ -92,70 +101,70 @@ msgid "Can't open %s" msgstr "" #. / "отобразить эту справку" -#: /Big/Data/SAO/edmund_opt/HSFW_management/cmdlnopts.c:61 +#: /Big/Data/SAO/edmund_opt/HSFW_management/cmdlnopts.c:63 msgid "show this help" msgstr "" #. / "буквенный идентификатор колеса" -#: /Big/Data/SAO/edmund_opt/HSFW_management/cmdlnopts.c:63 +#: /Big/Data/SAO/edmund_opt/HSFW_management/cmdlnopts.c:65 msgid "letter wheel identificator" msgstr "" #. / "название колеса" -#: /Big/Data/SAO/edmund_opt/HSFW_management/cmdlnopts.c:65 +#: /Big/Data/SAO/edmund_opt/HSFW_management/cmdlnopts.c:67 msgid "wheel name" msgstr "" +#. / "серийный номер турели (с начальными нулями)" +#: /Big/Data/SAO/edmund_opt/HSFW_management/cmdlnopts.c:69 +msgid "turret serial (with leading zeros)" +msgstr "" + #. / "номер позиции фильтра" -#: /Big/Data/SAO/edmund_opt/HSFW_management/cmdlnopts.c:67 +#: /Big/Data/SAO/edmund_opt/HSFW_management/cmdlnopts.c:71 msgid "filter position number" msgstr "" #. / "название фильтра" -#: /Big/Data/SAO/edmund_opt/HSFW_management/cmdlnopts.c:69 +#: /Big/Data/SAO/edmund_opt/HSFW_management/cmdlnopts.c:73 msgid "filter name" msgstr "" #. / "идентификатор фильтра, например, \"A3\"" -#: /Big/Data/SAO/edmund_opt/HSFW_management/cmdlnopts.c:71 +#: /Big/Data/SAO/edmund_opt/HSFW_management/cmdlnopts.c:75 msgid "filter identificator like \"A3\"" msgstr "" #. / "список всех сохраненных имен" -#: /Big/Data/SAO/edmund_opt/HSFW_management/cmdlnopts.c:73 +#: /Big/Data/SAO/edmund_opt/HSFW_management/cmdlnopts.c:77 msgid "list all stored names" msgstr "" #. / "список имен только присутствующих устройств" -#: /Big/Data/SAO/edmund_opt/HSFW_management/cmdlnopts.c:75 +#: /Big/Data/SAO/edmund_opt/HSFW_management/cmdlnopts.c:79 msgid "list only present devices' names" msgstr "" #. / "переместиться в стартовую позицию" -#: /Big/Data/SAO/edmund_opt/HSFW_management/cmdlnopts.c:77 +#: /Big/Data/SAO/edmund_opt/HSFW_management/cmdlnopts.c:81 msgid "move to home position" msgstr "" #. / "переименовать сохраненные имена колес/фильтров" -#: /Big/Data/SAO/edmund_opt/HSFW_management/cmdlnopts.c:79 +#: /Big/Data/SAO/edmund_opt/HSFW_management/cmdlnopts.c:83 msgid "rename stored wheels/filters names" msgstr "" #. / "Неправильный формат числа double!" -#: /Big/Data/SAO/edmund_opt/HSFW_management/cmdlnopts.c:97 +#: /Big/Data/SAO/edmund_opt/HSFW_management/cmdlnopts.c:101 msgid "Wrong double number format!" msgstr "" #. / "Игнорируются параметры: " -#: /Big/Data/SAO/edmund_opt/HSFW_management/cmdlnopts.c:122 +#: /Big/Data/SAO/edmund_opt/HSFW_management/cmdlnopts.c:126 msgid "Ignore parameters:" msgstr "" -#. / "Не передано никаких аргументов, вывожу список подключенных устройств!" -#: /Big/Data/SAO/edmund_opt/HSFW_management/cmdlnopts.c:130 -msgid "No arguments given, list all devices connected!" -msgstr "" - #. / "Идентификатор колеса должен быть буквой от \"A\" до \"H\"!" #: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:77 msgid "Wheel ID should be a letter from \"A\" to \"H\"!" @@ -167,99 +176,120 @@ msgid "You give both wheel ID and wheel name, try something one!" msgstr "" #. / "Заданное колесо не обнаружено!" -#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:104 +#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:121 msgid "Given wheel not found!" msgstr "" -#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:111 +#. / "Идентификатор фильтра - буква (колесо) и число (позиция)" +#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:129 msgid "Filter ID is letter (wheel) and number (position)" msgstr "" #. / "Фильтр %s не обнаружен" -#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:125 +#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:143 #, c-format msgid "Filter %s not found!" msgstr "" #. / "Позиция фильтра должна быть числом от 1 до %d!" -#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:133 +#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:152 #, c-format msgid "Filter position should be a number from 1 to %d!" msgstr "" #. / "Ошибка отправки данных" -#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:153 +#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:172 msgid "Error sending data" msgstr "" #. / "Ошибка чтения данных" -#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:168 +#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:187 msgid "Error reading data" msgstr "" #. / "Ошибка, количество попыток истекло" -#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:192 +#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:211 msgid "Error, tries amount exceed" msgstr "" #. / "Турель не инициализирована, движение в \"дом\"" -#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:210 +#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:229 msgid "Turret isn't initialized, move home..." msgstr "" #. / "Ожидание окончания движения" -#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:225 +#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:246 #, c-format msgid "Wait for end of moving " msgstr "" #. / "Произошла ошибка, повторите запуск" -#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:234 +#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:255 msgid "Error ocured, repeat again" msgstr "" #. / "Заданная позиция вне диапазона 1..%d" -#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:254 +#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:275 #, c-format msgid "Given position out of range 1..%d" msgstr "" #. / "Не могу открыть устройство" -#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:281 +#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:302 msgid "Can't open device" msgstr "" #. / "\nСвойства подключенного колеса\n" -#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:307 +#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:328 msgid "" "\n" "Connected wheel properties\n" msgstr "" #. / "\nВсе записи EEPROM\n" -#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:329 +#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:356 msgid "" "\n" "All records from EEPROM\n" msgstr "" #. / "Турели не обнаружены" -#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:366 +#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:394 msgid "No turrets found" msgstr "" #. / "Обнаружено %d турелей, но ни к одной нет прав доступа" -#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:372 +#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:400 #, c-format msgid "Found %d turrets but have no access rights to any" msgstr "" +#. / "Название не должно превышать восьми символов" +#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:420 +msgid "Name should be not longer than 8 symbols" +msgstr "" + +#. / "Чтобы переименовать, необходимо указать новое название фильтра/колеса и его позицию/идентификатор!" +#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:436 +msgid "You should give new filter/wheel name and its POS/ID to rename!" +msgstr "" + +#. / "Не удалось переименовать" +#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:461 +msgid "Can't rename" +msgstr "" + +#. / "Переименовано удачно!" +#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:463 +msgid "Succesfully renamed!\n" +msgstr "" + #. / "Зацикливание, попробуйте еще раз" -#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:391 +#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:472 msgid "Cycling detected, try again" msgstr "" #. / "Уже в заданной позиции" -#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:420 +#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:501 msgid "Already at position" msgstr "" diff --git a/HSFW_management/locale/ru/ru.po b/HSFW_management/locale/ru/ru.po index 99ae10f..3c4c5ae 100644 --- a/HSFW_management/locale/ru/ru.po +++ b/HSFW_management/locale/ru/ru.po @@ -7,7 +7,7 @@ msgid "" msgstr "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" - "POT-Creation-Date: 2016-05-13 20:47+0300\n" + "POT-Creation-Date: 2016-05-14 16:45+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,246 +17,278 @@ msgstr "Project-Id-Version: PACKAGE VERSION\n" "Content-Transfer-Encoding: 8bit\n" #. / "\nВсе записи EEPROM\n" -#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:329 +#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:356 msgid "\n" "All records from EEPROM\n" -msgstr "" +msgstr "\n" + "Все записи EEPROM\n" #. / "\nСвойства подключенного колеса\n" -#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:307 +#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:328 msgid "\n" "Connected wheel properties\n" -msgstr "" +msgstr "\n" + "Свойства подключенного колеса\n" #. / "%s: необходим аргумент!" #: /Big/Data/SAO/edmund_opt/HSFW_management/parseargs.c:485 #, c-format msgid "%s: argument needed!" -msgstr "" +msgstr "%s: необходим аргумент!" #. / "Уже в заданной позиции" -#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:420 +#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:501 msgid "Already at position" -msgstr "" +msgstr "Уже в заданной позиции" -#: /Big/Data/SAO/edmund_opt/HSFW_management/usefull_macros.c:181 +#. / "Не могу закрыть mmap'нутый файл" +#: /Big/Data/SAO/edmund_opt/HSFW_management/usefull_macros.c:186 msgid "Can't close mmap'ed file" -msgstr "" +msgstr "Не могу закрыть mmap'нутый файл" #. Get settings -#: /Big/Data/SAO/edmund_opt/HSFW_management/usefull_macros.c:283 +#. / "Не могу получить настройки" +#: /Big/Data/SAO/edmund_opt/HSFW_management/usefull_macros.c:291 msgid "Can't get settings" -msgstr "" +msgstr "Не могу получить настройки" -#: /Big/Data/SAO/edmund_opt/HSFW_management/usefull_macros.c:190 +#. / "Не могу munmap" +#: /Big/Data/SAO/edmund_opt/HSFW_management/usefull_macros.c:196 msgid "Can't munmap" -msgstr "" +msgstr "Не могу munmap" #. / "Не могу открыть %s" #: /Big/Data/SAO/edmund_opt/HSFW_management/hidmanage.c:80 #, c-format msgid "Can't open %s" -msgstr "" - -#: /Big/Data/SAO/edmund_opt/HSFW_management/usefull_macros.c:175 -#, c-format -msgid "Can't open %s for reading" -msgstr "" - -#. / "Не могу открыть устройство" -#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:281 -msgid "Can't open device" -msgstr "" - -#: /Big/Data/SAO/edmund_opt/HSFW_management/usefull_macros.c:293 -msgid "Can't set settings" -msgstr "" - -#: /Big/Data/SAO/edmund_opt/HSFW_management/usefull_macros.c:214 -msgid "Can't setup console" -msgstr "" +msgstr "Не могу открыть %s" +#. / "Не могу открыть %s для чтения" #: /Big/Data/SAO/edmund_opt/HSFW_management/usefull_macros.c:177 #, c-format +msgid "Can't open %s for reading" +msgstr "Не могу открыть %s для чтения" + +#. / "Не могу открыть устройство" +#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:302 +msgid "Can't open device" +msgstr "Не могу открыть устройство" + +#. / "Не удалось переименовать" +#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:461 +msgid "Can't rename" +msgstr "Не удалось переименовать" + +#. / "Не могу установить настройки" +#: /Big/Data/SAO/edmund_opt/HSFW_management/usefull_macros.c:302 +msgid "Can't set settings" +msgstr "Не могу установить настройки" + +#. / "Не могу настроить консоль" +#: /Big/Data/SAO/edmund_opt/HSFW_management/usefull_macros.c:221 +msgid "Can't setup console" +msgstr "Не могу настроить консоль" + +#. / "Не могу выполнить stat %s" +#: /Big/Data/SAO/edmund_opt/HSFW_management/usefull_macros.c:180 +#, c-format msgid "Can't stat %s" -msgstr "" +msgstr "Не могу выполнить stat %s" #. / "Зацикливание, попробуйте еще раз" -#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:391 +#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:472 msgid "Cycling detected, try again" -msgstr "" +msgstr "Зацикливание, попробуйте еще раз" #. / "Произошла ошибка, повторите запуск" -#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:234 +#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:255 msgid "Error ocured, repeat again" -msgstr "" +msgstr "Произошла ошибка, повторите запуск" #. / "Ошибка чтения данных" -#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:168 +#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:187 msgid "Error reading data" -msgstr "" +msgstr "Ошибка чтения данных" #. / "Ошибка отправки данных" -#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:153 +#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:172 msgid "Error sending data" -msgstr "" +msgstr "Ошибка отправки данных" #. / "Ошибка, количество попыток истекло" -#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:192 +#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:211 msgid "Error, tries amount exceed" -msgstr "" +msgstr "Ошибка, количество попыток истекло" #. / "Фильтр %s не обнаружен" -#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:125 +#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:143 #, c-format msgid "Filter %s not found!" -msgstr "" +msgstr "Фильтр %s не обнаружен" -#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:111 +#. / "Идентификатор фильтра - буква (колесо) и число (позиция)" +#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:129 msgid "Filter ID is letter (wheel) and number (position)" -msgstr "" +msgstr "Идентификатор фильтра - буква (колесо) и число (позиция)" #. / "Позиция фильтра должна быть числом от 1 до %d!" -#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:133 +#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:152 #, c-format msgid "Filter position should be a number from 1 to %d!" -msgstr "" +msgstr "Позиция фильтра должна быть числом от 1 до %d!" #. / "Обнаружено %d турелей, но ни к одной нет прав доступа" -#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:372 +#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:400 #, c-format msgid "Found %d turrets but have no access rights to any" -msgstr "" +msgstr "Обнаружено %d турелей, но ни к одной нет прав доступа" #. / "Заданная позиция вне диапазона 1..%d" -#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:254 +#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:275 #, c-format msgid "Given position out of range 1..%d" -msgstr "" +msgstr "Заданная позиция вне диапазона 1..%d" #. / "Заданное колесо не обнаружено!" -#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:104 +#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:121 msgid "Given wheel not found!" -msgstr "" +msgstr "Заданное колесо не обнаружено!" #. / "Игнорируются параметры: " -#: /Big/Data/SAO/edmund_opt/HSFW_management/cmdlnopts.c:122 +#: /Big/Data/SAO/edmund_opt/HSFW_management/cmdlnopts.c:126 msgid "Ignore parameters:" -msgstr "" +msgstr "Игнорируются параметры:" #. / "Целое вне допустимого диапазона" #: /Big/Data/SAO/edmund_opt/HSFW_management/parseargs.c:86 msgid "Integer out of range" -msgstr "" +msgstr "Целое вне допустимого диапазона" -#: /Big/Data/SAO/edmund_opt/HSFW_management/usefull_macros.c:180 +#. / "Ошибка mmap" +#: /Big/Data/SAO/edmund_opt/HSFW_management/usefull_macros.c:184 msgid "Mmap error for input" -msgstr "" +msgstr "Ошибка mmap" -#. / "Не передано никаких аргументов, вывожу список подключенных устройств!" -#: /Big/Data/SAO/edmund_opt/HSFW_management/cmdlnopts.c:130 -msgid "No arguments given, list all devices connected!" -msgstr "" +#. / "Название не должно превышать восьми символов" +#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:420 +msgid "Name should be not longer than 8 symbols" +msgstr "Название не должно превышать восьми символов" -#: /Big/Data/SAO/edmund_opt/HSFW_management/usefull_macros.c:173 +#. / "Не задано имя файла!" +#: /Big/Data/SAO/edmund_opt/HSFW_management/usefull_macros.c:174 msgid "No filename given!" -msgstr "" +msgstr "Не задано имя файла!" #. / "Турели не обнаружены" -#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:366 +#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:394 msgid "No turrets found" -msgstr "" +msgstr "Турели не обнаружены" + +#. / "Переименовано удачно!" +#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:463 +msgid "Succesfully renamed!\n" +msgstr "Переименовано удачно!\n" #. / "Турель не инициализирована, движение в \"дом\"" -#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:210 +#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:229 msgid "Turret isn't initialized, move home..." -msgstr "" +msgstr "Турель не инициализирована, движение в \"дом\"" #. / "Ожидание окончания движения" -#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:225 +#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:246 #, c-format msgid "Wait for end of moving " -msgstr "" +msgstr "Ожидание окончания движения" #. / "Идентификатор колеса должен быть буквой от \"A\" до \"H\"!" #: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:77 msgid "Wheel ID should be a letter from \"A\" to \"H\"!" -msgstr "" +msgstr "Идентификатор колеса должен быть буквой от \"A\" до \"H\"!" #. / "Неправильный аргумент \"%s\" параметра \"%s\"" #: /Big/Data/SAO/edmund_opt/HSFW_management/parseargs.c:490 #, c-format msgid "Wrong argument \"%s\" of parameter \"%s\"" -msgstr "" +msgstr "Неправильный аргумент \"%s\" параметра \"%s\"" #. / "Неправильный формат числа double!" -#: /Big/Data/SAO/edmund_opt/HSFW_management/cmdlnopts.c:97 +#: /Big/Data/SAO/edmund_opt/HSFW_management/cmdlnopts.c:101 msgid "Wrong double number format!" -msgstr "" +msgstr "Неправильный формат числа double!" #. amount of pcount and/or scount wrong #. / "Неправильный формат строки помощи" #: /Big/Data/SAO/edmund_opt/HSFW_management/parseargs.c:56 msgid "Wrong helpstring!" -msgstr "" +msgstr "Неправильный формат строки помощи" #. / "Неправильный параметр: %s" #: /Big/Data/SAO/edmund_opt/HSFW_management/parseargs.c:480 #, c-format msgid "Wrong parameter: %s" -msgstr "" +msgstr "Неправильный параметр: %s" #. / "Заданы и идентификатор, и имя колеса; попробуйте что-то одно!" #: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:89 msgid "You give both wheel ID and wheel name, try something one!" -msgstr "" +msgstr "Заданы и идентификатор, и имя колеса; попробуйте что-то одно!" + +#. / "Чтобы переименовать, необходимо указать новое название фильтра/колеса и его позицию/идентификатор!" +#: /Big/Data/SAO/edmund_opt/HSFW_management/hsfw.c:436 +msgid "You should give new filter/wheel name and its POS/ID to rename!" +msgstr "Чтобы переименовать, необходимо указать новое название фильтра/колеса и его позицию/идентификатор!" #. / "идентификатор фильтра, например, \"A3\"" -#: /Big/Data/SAO/edmund_opt/HSFW_management/cmdlnopts.c:71 +#: /Big/Data/SAO/edmund_opt/HSFW_management/cmdlnopts.c:75 msgid "filter identificator like \"A3\"" -msgstr "" +msgstr "идентификатор фильтра, например, \"A3\"" #. / "название фильтра" -#: /Big/Data/SAO/edmund_opt/HSFW_management/cmdlnopts.c:69 +#: /Big/Data/SAO/edmund_opt/HSFW_management/cmdlnopts.c:73 msgid "filter name" -msgstr "" +msgstr "название фильтра" #. / "номер позиции фильтра" -#: /Big/Data/SAO/edmund_opt/HSFW_management/cmdlnopts.c:67 +#: /Big/Data/SAO/edmund_opt/HSFW_management/cmdlnopts.c:71 msgid "filter position number" -msgstr "" +msgstr "номер позиции фильтра" #. / "буквенный идентификатор колеса" -#: /Big/Data/SAO/edmund_opt/HSFW_management/cmdlnopts.c:63 +#: /Big/Data/SAO/edmund_opt/HSFW_management/cmdlnopts.c:65 msgid "letter wheel identificator" -msgstr "" +msgstr "буквенный идентификатор колеса" #. / "список всех сохраненных имен" -#: /Big/Data/SAO/edmund_opt/HSFW_management/cmdlnopts.c:73 +#: /Big/Data/SAO/edmund_opt/HSFW_management/cmdlnopts.c:77 msgid "list all stored names" -msgstr "" +msgstr "список всех сохраненных имен" #. / "список имен только присутствующих устройств" -#: /Big/Data/SAO/edmund_opt/HSFW_management/cmdlnopts.c:75 +#: /Big/Data/SAO/edmund_opt/HSFW_management/cmdlnopts.c:79 msgid "list only present devices' names" -msgstr "" +msgstr "список имен только присутствующих устройств" #. / "переместиться в стартовую позицию" -#: /Big/Data/SAO/edmund_opt/HSFW_management/cmdlnopts.c:77 +#: /Big/Data/SAO/edmund_opt/HSFW_management/cmdlnopts.c:81 msgid "move to home position" -msgstr "" +msgstr "переместиться в стартовую позицию" #. / "переименовать сохраненные имена колес/фильтров" -#: /Big/Data/SAO/edmund_opt/HSFW_management/cmdlnopts.c:79 +#: /Big/Data/SAO/edmund_opt/HSFW_management/cmdlnopts.c:83 msgid "rename stored wheels/filters names" -msgstr "" +msgstr "переименовать сохраненные имена колес/фильтров" #. / "отобразить эту справку" -#: /Big/Data/SAO/edmund_opt/HSFW_management/cmdlnopts.c:61 +#: /Big/Data/SAO/edmund_opt/HSFW_management/cmdlnopts.c:63 msgid "show this help" -msgstr "" +msgstr "отобразить эту справку" + +#. / "серийный номер турели (с начальными нулями)" +#: /Big/Data/SAO/edmund_opt/HSFW_management/cmdlnopts.c:69 +msgid "turret serial (with leading zeros)" +msgstr "серийный номер турели (с начальными нулями)" #. / "название колеса" -#: /Big/Data/SAO/edmund_opt/HSFW_management/cmdlnopts.c:65 +#: /Big/Data/SAO/edmund_opt/HSFW_management/cmdlnopts.c:67 msgid "wheel name" -msgstr "" +msgstr "название колеса" diff --git a/HSFW_management/usefull_macros.c b/HSFW_management/usefull_macros.c index f97c181..7f3d38b 100644 --- a/HSFW_management/usefull_macros.c +++ b/HSFW_management/usefull_macros.c @@ -170,14 +170,19 @@ mmapbuf *My_mmap(char *filename){ char *ptr; size_t Mlen; struct stat statbuf; + /// "Не задано имя файла!" if(!filename) ERRX(_("No filename given!")); if((fd = open(filename, O_RDONLY)) < 0) + /// "Не могу открыть %s для чтения" ERR(_("Can't open %s for reading"), filename); if(fstat (fd, &statbuf) < 0) + /// "Не могу выполнить stat %s" ERR(_("Can't stat %s"), filename); Mlen = statbuf.st_size; if((ptr = mmap (0, Mlen, PROT_READ, MAP_PRIVATE, fd, 0)) == MAP_FAILED) + /// "Ошибка mmap" ERR(_("Mmap error for input")); + /// "Не могу закрыть mmap'нутый файл" if(close(fd)) ERR(_("Can't close mmap'ed file")); mmapbuf *ret = MALLOC(mmapbuf, 1); ret->data = ptr; @@ -187,6 +192,7 @@ mmapbuf *My_mmap(char *filename){ void My_munmap(mmapbuf *b){ if(munmap(b->data, b->len)) + /// "Не могу munmap" ERR(_("Can't munmap")); FREE(b); } @@ -211,6 +217,7 @@ void setup_con(){ newt = oldt; newt.c_lflag &= ~(ICANON | ECHO); if(tcsetattr(STDIN_FILENO, TCSANOW, &newt) < 0){ + /// "Не могу настроить консоль" WARN(_("Can't setup console")); tcsetattr(STDIN_FILENO, TCSANOW, &oldt); signals(0); //quit? @@ -280,6 +287,7 @@ void tty_init(char *comdev){ } DBG(" OK\nGet current settings... "); if(ioctl(comfd,TCGETA,&oldtty) < 0){ // Get settings + /// "Не могу получить настройки" WARN(_("Can't get settings")); signals(0); } @@ -290,6 +298,7 @@ void tty_init(char *comdev){ tty.c_cc[VMIN] = 0; // non-canonical mode tty.c_cc[VTIME] = 5; if(ioctl(comfd,TCSETA,&tty) < 0){ + /// "Не могу установить настройки" WARN(_("Can't set settings")); signals(0); }