/* * This file is part of the stepper project. * Copyright 2020 Edward V. Emelianov . * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include // for NULL #include "pusirobot.h" // we should init constants here! #undef DICENTRY #define DICENTRY(name, idx, sidx, sz, s, n) const SDO_dic_entry name = {idx, sidx, sz, s, n}; #include "dicentries.in" // now init array with all dictionary #undef DICENTRY #define nnn(nm) nm #define lnk(nm) & ## nnn(nm) #define DICENTRY(name, idx, sidx, sz, s, n) &name, const SDO_dic_entry* allrecords[] = { #include "dicentries.in" }; const int DEsz = sizeof(allrecords) / sizeof(SDO_dic_entry*); // controller status for bits static const char *DevStatus[] = { "External stop 1", "External stop 2", "Stall state", "Busy state", "External stop 3", "The FIFO of PVT Mode 3 is empty", "FIFO Lower bound of PVT Mode 3", "FIFO upper limit of PVT mode 3" }; // controller error statuses static const char *DevError[] = { "TSD, over temperature shutdown", "AERR, coil A error", "BERR, coil B error", "AOC, A over current", "BOC, B over current", "UVLO, low voltage fault" }; // return status message for given bit in status const char *devstatus(uint8_t status, uint8_t bit){ if(bit > 7) return NULL; if(status & (1< 5) return NULL; if(error & (1<index == index && entry->subindex == subindex) return (SDO_dic_entry*)entry; } return NULL; }