diff options
Diffstat (limited to 'mcast/tool/.svn/text-base/netcvdiag.c.svn-base')
-rw-r--r-- | mcast/tool/.svn/text-base/netcvdiag.c.svn-base | 433 |
1 files changed, 0 insertions, 433 deletions
diff --git a/mcast/tool/.svn/text-base/netcvdiag.c.svn-base b/mcast/tool/.svn/text-base/netcvdiag.c.svn-base deleted file mode 100644 index 5b6e490..0000000 --- a/mcast/tool/.svn/text-base/netcvdiag.c.svn-base +++ /dev/null @@ -1,433 +0,0 @@ -/*------------------------------------------------------------------------ - * netcvdiag - NetCeiver diagnosis tool - * - *------------------------------------------------------------------------*/ - -#include "headers.h" - -#ifdef __MINGW32__ -#include <getopt.h> -#endif - -#ifdef API_SOCK - -/*------------------------------------------------------------------------*/ -#define API_WAIT_RESPONSE(cmd) { cmd->state=API_REQUEST; \ - send (sock_comm, &sock_cmd, sizeof(api_cmd_t), 0); \ - recv (sock_comm, &sock_cmd, sizeof(api_cmd_t), 0); \ - if (cmd->state == API_ERROR) warn ( "SHM parameter error\n");} - -int sock_comm; - -int nc_api_init(char *path) -{ - int sock_name_len = 0; - struct sockaddr_un sock_name; - sock_name.sun_family = AF_UNIX; - - strcpy(sock_name.sun_path, path); - sock_name_len = sizeof(struct sockaddr_un); - - if((sock_comm = socket(AF_UNIX, SOCK_STREAM, 0)) < 0) - { - warn ("socket create failure %d\n", errno); - return -1; - } - - if (connect(sock_comm, (struct sockaddr*)&sock_name, sock_name_len) < 0) { - warn ("connect failure to %s: %s\n",path, strerror(errno)); - return -1; - } - return 0; -} -#endif -#ifdef API_WIN -/*------------------------------------------------------------------------*/ -#define API_WAIT_RESPONSE(cmd) { cmd->state=API_REQUEST; \ - WriteFile( hPipe, &sock_cmd, sizeof(api_cmd_t), &cbWritten, NULL); \ - ReadFile( hPipe, &sock_cmd, sizeof(api_cmd_t), &cbRead, NULL); \ - if (cmd->state == API_ERROR) {warn ( "SHM parameter error, incompatible versions?\n"); exit(-1);}} - -HANDLE hPipe; -DWORD cbRead, cbWritten; - -int nc_api_init(char *path) -{ - hPipe = CreateFile( - TEXT("\\\\.\\pipe\\mcli"), // pipe name - GENERIC_READ | // read and write access - GENERIC_WRITE, - 0, // no sharing - NULL, // default security attributes - OPEN_EXISTING, // opens existing pipe - 0, // default attributes - NULL); // no template file - - if (hPipe == INVALID_HANDLE_VALUE) { - warn("CreatePipe failed"); - return -1; - } - return 0; -} -#endif -/*------------------------------------------------------------------------*/ -void usage(void) -{ - fprintf(stderr, - "netcvdiag - NetCeiver diagnosis tool, version " MCLI_VERSION_STR "\n" - "(c) BayCom GmbH\n" - "Usage: netcvdiag <options>\n" - "Options: -a Show all\n" - " -u Show UUIDs\n" - " -t Show tuners\n" - " -c Get NetCeiver count\n" - " -S Show satellite settings\n" - " -s Show tuner state\n" - " -r <n> Repeat every n seconds\n" - " -v Show HW/SW-versions\n" - " -P <path> Set API socket\n" - ); - exit(0); -} -/*------------------------------------------------------------------------*/ -void show_it(int show_count, int show_uuids, int show_tuners, int show_sats, int show_versions, int show_cams) -{ - int nc_num; - int i; - time_t now=time(0); - api_cmd_t sock_cmd; - api_cmd_t *api_cmd=&sock_cmd; - - api_cmd->cmd=API_GET_NC_NUM; - api_cmd->magic = MCLI_MAGIC; - api_cmd->version = MCLI_VERSION; - - API_WAIT_RESPONSE(api_cmd); - if(api_cmd->magic != MCLI_MAGIC || api_cmd->version != MCLI_VERSION) { - info("API version mismatch!\n"); - return; - } - if (show_count) - printf("Count: %i\n", api_cmd->parm[API_PARM_NC_NUM]); - nc_num=api_cmd->parm[API_PARM_NC_NUM]; - - for(i=0;i<nc_num;i++) { - api_cmd->cmd=API_GET_NC_INFO; - api_cmd->parm[API_PARM_NC_NUM]=i; - API_WAIT_RESPONSE(api_cmd); - if(api_cmd->u.nc_info.magic != MCLI_MAGIC || api_cmd->u.nc_info.version != MCLI_VERSION) { - err("API version mismatch!\n"); - } - if (show_uuids||show_versions) { - char buf[UUID_SIZE]; - if(strlen(api_cmd->u.nc_info.Description)) { - sprintf(buf, "%s, ", api_cmd->u.nc_info.Description); - } else { - buf[0]=0; - } - printf("NetCeiver %i:\n" - " UUID <%s>, %s%s, tuners %d\n", - i, - api_cmd->u.nc_info.uuid, - buf, - (unsigned int) api_cmd->u.nc_info.lastseen<(now-10)?"DEAD":"ALIVE", - api_cmd->u.nc_info.tuner_num); - } - if (show_versions) { - printf(" OS <%s>, App <%s>, FW <%s>, HW <%s>\n", - api_cmd->u.nc_info.OSVersion, api_cmd->u.nc_info.AppVersion, - api_cmd->u.nc_info.FirmwareVersion, api_cmd->u.nc_info.HardwareVersion - ); - printf(" Serial <%s>, Vendor <%s>, state %i\n", - api_cmd->u.nc_info.Serial, api_cmd->u.nc_info.Vendor, api_cmd->u.nc_info.DefCon); - printf(" SystemUptime %d, ProcessUptime %d\n", - (int)api_cmd->u.nc_info.SystemUptime, (int)api_cmd->u.nc_info.ProcessUptime); - printf(" TunerTimeout %d\n", - (int)api_cmd->u.nc_info.TunerTimeout); - } - if (show_cams) { - int i; - for (i = 0; i < api_cmd->u.nc_info.cam_num; i++) { - char *camstate=""; - char *cammode=""; - - switch(api_cmd->u.nc_info.cam[i].status) { - case DVBCA_CAMSTATE_MISSING: - camstate="MISSING"; break; - case DVBCA_CAMSTATE_INITIALISING: - camstate="INIT"; break; - case DVBCA_CAMSTATE_READY: - camstate="READY"; break; - } - switch(api_cmd->u.nc_info.cam[i].flags) { - case CA_SINGLE: - cammode="CA_SINGLE";break; - case CA_MULTI_SID: - cammode="CA_MULTI_SID";break; - case CA_MULTI_TRANSPONDER: - cammode="CA_MULTI_TRANSPONDER";break; - } - printf(" CI-Slot %d: State <%s>, Mode <%s>, CAPMT-Flag: %d, SIDs %d/%d, CAM <%s>\n", api_cmd->u.nc_info.cam[i].slot, camstate, cammode, api_cmd->u.nc_info.cam[i].capmt_flag, api_cmd->u.nc_info.cam[i].use_sids, api_cmd->u.nc_info.cam[i].max_sids, api_cmd->u.nc_info.cam[i].menu_string); - } - } - if (show_tuners) { - int j; - int tuner_num=api_cmd->u.nc_info.tuner_num; - for(j=0;j<tuner_num;j++) { - api_cmd->cmd=API_GET_TUNER_INFO; - api_cmd->parm[API_PARM_TUNER_NUM]=j; - API_WAIT_RESPONSE(api_cmd); - printf(" Tuner %i: <%s>, SatList: <%s>, Preference %i\n", - j, - api_cmd->u.tuner_info.fe_info.name, - api_cmd->u.tuner_info.SatelliteListName, - api_cmd->u.tuner_info.preference - ); - } - puts(""); - } - - if (show_sats) { - int sat_list_num=api_cmd->u.nc_info.sat_list_num; - int j; - for(j=0;j<sat_list_num;j++) { - api_cmd->cmd=API_GET_SAT_LIST_INFO; - api_cmd->parm[API_PARM_NC_NUM]=i; - api_cmd->parm[API_PARM_SAT_LIST_NUM]=j; - API_WAIT_RESPONSE(api_cmd); - if(api_cmd->u.sat_list.magic != MCLI_MAGIC || api_cmd->u.sat_list.version != MCLI_VERSION) { - err("API version mismatch!\n"); - } - - printf("NetCeiver %i: SatList <%s>, entries %d\n", - i, - api_cmd->u.sat_list.Name, - api_cmd->u.sat_list.sat_num); - - int sat_num=api_cmd->u.sat_list.sat_num; - int k; - for(k=0;k<sat_num;k++) { - api_cmd->cmd=API_GET_SAT_INFO; - api_cmd->parm[API_PARM_SAT_LIST_NUM]=j; - api_cmd->parm[API_PARM_SAT_NUM]=k; - API_WAIT_RESPONSE(api_cmd); - int comp_num=api_cmd->u.sat_info.comp_num; - float pos=(float)((api_cmd->u.sat_info.SatPos-1800.0)/10.0); - float minr=(float)((api_cmd->u.sat_info.SatPosMin-1800.0)/10.0); - float maxr=(float)((api_cmd->u.sat_info.SatPosMax-1800.0)/10.0); - float af=(float)((api_cmd->u.sat_info.AutoFocus)/10.0); - float longitude=(float)((api_cmd->u.sat_info.Longitude)/10.0); - float latitude=(float)((api_cmd->u.sat_info.Latitude)/10.0); - - printf(" Satname: <%s>, Position <%.1f%c>, entries %i\n", - api_cmd->u.sat_info.Name, - fabs(pos),pos<0?'W':'E', - comp_num); - - if (api_cmd->u.sat_info.type==SAT_SRC_ROTOR) - printf(" Rotor: Range <%.1f%c>-<%.1f%c>, AF <%.1f>, Long <%.1f%c>, Lat <%.1f%c>\n", - fabs(minr),minr<0?'W':'E', - fabs(maxr),maxr<0?'W':'E', - fabs(af), - fabs(longitude),longitude<0?'W':'E', - fabs(latitude),longitude<0?'S':'N'); - - int l; - for(l=0;l<comp_num;l++) { - api_cmd->cmd=API_GET_SAT_COMP_INFO; - api_cmd->parm[API_PARM_SAT_LIST_NUM]=j; - api_cmd->parm[API_PARM_SAT_NUM]=k; - api_cmd->parm[API_PARM_SAT_COMP_NUM]=l; - API_WAIT_RESPONSE(api_cmd); - int m=0,n; - char diseqc[256]; - char *ptr=diseqc; - struct dvb_diseqc_master_cmd *diseqc_cmd=&api_cmd->u.sat_comp.sec.diseqc_cmd; - - diseqc[0]=0; - - for(n=0;n<api_cmd->u.sat_comp.diseqc_cmd_num;n++) { - for(*ptr=0,m=0;m<diseqc_cmd->msg_len;m++) { - ptr+=sprintf(ptr, "%02X ", diseqc_cmd->msg[m]); - } - ptr+=sprintf(ptr, ", "); - diseqc_cmd=api_cmd->u.sat_comp.diseqc_cmd+n; - } - if(m>0) { - *(ptr-3)=0; - } - char *mini="MINI_OFF"; - switch(api_cmd->u.sat_comp.sec.mini_cmd) { - case SEC_MINI_A:mini="MINI_A ";break; - case SEC_MINI_B:mini="MINI_B ";break; - } - printf(" Entry %i: Polarisation %c, Min% 6d, " - "Max% 6d, LOF% 6d %s %s %s DiSEqC <%s>\n", - l, - api_cmd->u.sat_comp.Polarisation?'H':'V', - api_cmd->u.sat_comp.RangeMin, - api_cmd->u.sat_comp.RangeMax, - api_cmd->u.sat_comp.LOF, - mini, - api_cmd->u.sat_comp.sec.tone_mode==SEC_TONE_ON ?"TONE_ON ":"TONE_OFF", - api_cmd->u.sat_comp.sec.voltage==SEC_VOLTAGE_18?"VOLTAGE_18":"VOLTAGE_13", - diseqc - ); - } - } - } - } - } - puts(""); -} -/*------------------------------------------------------------------------*/ -void show_stats(void) -{ - api_cmd_t sock_cmd; - api_cmd_t *api_cmd=&sock_cmd; - int i; - char *types[]={"DVB-S","DVB-C","DVB-T", "?", "DVB-S2"}; - int type; - - api_cmd->cmd=API_GET_TRA_NUM; - api_cmd->magic = MCLI_MAGIC; - api_cmd->version = MCLI_VERSION; - API_WAIT_RESPONSE(api_cmd); - -// printf("tra_num: %d\n", api_cmd->parm[API_PARM_TRA_NUM]); - int tra_num=api_cmd->parm[API_PARM_TRA_NUM]; - for(i=0;i<tra_num;i++) { - char uuid[256]; - char *p; - - api_cmd->cmd=API_GET_TRA_INFO; - api_cmd->parm[API_PARM_TRA_NUM]=i; - API_WAIT_RESPONSE(api_cmd); - char host[INET6_ADDRSTRLEN]; - inet_ntop (AF_INET6, &api_cmd->u.tra.mcg, (char *) host, INET6_ADDRSTRLEN); - type=api_cmd->u.tra.fe_type; - if (type<0 || type>4) - type=3; - - strncpy(uuid,api_cmd->u.tra.uuid,255); - uuid[255]=0; - p=strrchr(uuid,':'); - if (p) - *p=0; - - fe_type_t t; - recv_sec_t sec; - int satpos; - struct dvb_frontend_parameters fep; - - if(mcg_to_fe_parms(&api_cmd->u.tra.mcg, &t, &sec, &fep, NULL)<0) { - memset(&fep,0,sizeof(struct dvb_frontend_parameters)); - } - - mcg_get_satpos(&api_cmd->u.tra.mcg, &satpos); - float pos=(float)((satpos-1800.0)/10.0); - char pos_str[256]; - if(satpos != 0xfff) { - sprintf(pos_str, ", position <%.1f%c>", fabs(pos), pos<0?'W':'E'); - } else { - pos_str[0]=0; - } - - printf("UUID <%s>:\n" - " slot %s%d.%d, type %s, used: % 3d\n" - " %s, frequency %d%s (%.1f%s)%s\n" - " strength %04x, snr %04x, ber %04x, unc %04x\n" - " NIMCurrent %d\n" - " RotorStatus %i, RotorDiff %.1f\n", - uuid, - (time(0)-api_cmd->u.tra.lastseen)>15?"-":"", - api_cmd->u.tra.slot/2,api_cmd->u.tra.slot%2, - types[type], api_cmd->u.tra.InUse, - api_cmd->u.tra.s.st==0x1f?"LOCK ":"NO LOCK", - fep.frequency, (type==1||type==2)?"Hz":"kHz", api_cmd->u.tra.fep.frequency/1000.0, - (type==1||type==2)?"kHz":"MHz",pos_str, - api_cmd->u.tra.s.strength, - api_cmd->u.tra.s.snr, api_cmd->u.tra.s.ber, api_cmd->u.tra.s.ucblocks, - api_cmd->u.tra.NIMCurrent, - api_cmd->u.tra.rotor_status, - api_cmd->u.tra.rotor_diff/10.0 - ); - - } -} -/*------------------------------------------------------------------------*/ -int main(int argc, char **argv) -{ - int repeat=0; - int show_uuids=0,show_tuners=0,show_sats=0,show_state=0,show_cams=0; - int show_count=0, show_versions=0; -#ifdef API_SOCK - char path[256]=API_SOCK_NAMESPACE; -#endif -#ifdef API_WIN - char path[256]="\\\\.\\pipe\\mcli"; -#endif - while(1) { - int ret = getopt(argc,argv, "aucCtsSvr:P:"); - if (ret==-1) - break; - - char c=(char)ret; - - switch (c) { - case 'a': - show_uuids=1; - show_tuners=1; - show_sats=1; - show_state=1; - show_count=1; - show_versions=1; - show_cams=1; - break; - case 'u': - show_uuids=1; - break; - case 'c': - show_count=1; - break; - case 'C': - show_cams=1; - break; - case 't': - show_tuners=1; - break; - case 's': - show_state=1; - break; - case 'r': - repeat=abs(atoi(optarg)); - break; - case 'S': - show_sats=1; - break; - case 'v': - show_versions=1; - break; - case 'P': - strncpy(path,optarg,255); - path[255]=0; - break; - default: - usage(); - break; - } - } - if (nc_api_init(path)==-1) { - exit(-1); - } - - do { - show_it(show_count, show_uuids, show_tuners, show_sats, show_versions, show_cams); - if (show_state) - show_stats(); - sleep(repeat); - } while(repeat); - - exit(0); -} - |