~ubuntu-branches/ubuntu/saucy/dahdi-tools/saucy

« back to all changes in this revision

Viewing changes to xpp/astribank_tool.c

  • Committer: Bazaar Package Importer
  • Author(s): Jean-Michel Dault, Tzafrir Cohen
  • Date: 2010-02-16 13:44:09 UTC
  • mfrom: (1.1.2 upstream) (2.1.1 squeeze)
  • Revision ID: james.westby@ubuntu.com-20100216134409-4y4k26mgzyra537o
Tags: 1:2.2.1-0ubuntu1
* Merge from Debian pkg-voip.
  * Changes from Debian:
  - debian/control: Change Maintainer
  - debian/control: Removed Uploaders field.
  - debian/control: Removed Debian Vcs-Svn entry and replaced with
      ubuntu-voip Vcs-Bzr, to reflect divergence in packages.
  - debian/control: Package dahdi Depends on  dahdi-dkms | dahdi-source

* From Debian pkg-voip:
[ Tzafrir Cohen ]
* New upstream release (Closes: #536257, #564381).
* Patch 'bashism' dropped: merged upstream. 
* Patch xpp_no_extra_at dropped: merged upstream. 
* Add an example genconf_parameters.
* Compat level 7.
* Bump standars version to 3.8.3.0 (no change needed)
* Udev rules are now in dahdi-linux.
* Patches perl_fix_noserial, perl_fix_transportdir: Fixes for some
  minor perl issues.
* Add the missing ${misc:Depends}, as per lintian. 
* Patch astribank_allow_ignoreend: an extra missing patch from upstream. 
* Patches init_unload_modules and init_unload_oslec: also unload OSLEC
  when unloading all modules.

Show diffs side-by-side

added added

removed removed

Lines of Context:
41
41
 
42
42
static void usage()
43
43
{
44
 
        fprintf(stderr, "Usage: %s [options...] -D {/proc/bus/usb|/dev/bus/usb}/<bus>/<dev>\n", progname);
45
 
        fprintf(stderr, "\tOptions: {-n|-r kind}\n");
 
44
        fprintf(stderr, "Usage: %s [options] -D {/proc/bus/usb|/dev/bus/usb}/<bus>/<dev> [operation...]\n", progname);
 
45
        fprintf(stderr, "\tOptions:\n");
 
46
        fprintf(stderr, "\t\t[-v]               # Increase verbosity\n");
 
47
        fprintf(stderr, "\t\t[-d mask]          # Debug mask (0xFF for everything)\n");
 
48
        fprintf(stderr, "\tOperations:\n");
46
49
        fprintf(stderr, "\t\t[-n]               # Renumerate device\n");
47
50
        fprintf(stderr, "\t\t[-r kind]          # Reset: kind = {half|full}\n");
48
51
        fprintf(stderr, "\t\t[-p port]          # TwinStar: USB port number [0, 1]\n");
49
52
        fprintf(stderr, "\t\t[-w (0|1)]         # TwinStar: Watchdog off or on guard\n");
50
 
        fprintf(stderr, "\t\t[-v]               # Increase verbosity\n");
51
 
        fprintf(stderr, "\t\t[-d mask]          # Debug mask (0xFF for everything)\n");
 
53
        fprintf(stderr, "\t\t[-Q]               # Query device properties\n");
52
54
        exit(1);
53
55
}
54
56
 
82
84
        struct capabilities     capabilities;
83
85
        struct extrainfo        extrainfo;
84
86
 
85
 
        show_astribank_info(astribank);
86
87
        ret = mpp_caps_get(astribank, &eeprom_table, &capabilities, NULL);
87
88
        if(ret < 0)
88
89
                return ret;
145
146
{
146
147
        char                    *devpath = NULL;
147
148
        struct astribank_device *astribank;
148
 
        const char              options[] = "vd:D:nr:p:w:";
 
149
        const char              options[] = "vd:D:nr:p:w:Q";
149
150
        int                     opt_renumerate = 0;
150
151
        char                    *opt_port = NULL;
151
152
        char                    *opt_watchdog = NULL;
152
153
        char                    *opt_reset = NULL;
153
 
        int                     tws_portnum;
154
 
        int                     full_reset;
 
154
        int                     opt_query = 0;
155
155
        int                     ret;
156
156
 
157
157
        progname = argv[0];
177
177
                                break;
178
178
                        case 'r':
179
179
                                opt_reset = optarg;
180
 
                                if((full_reset = reset_kind(opt_reset)) < 0)
 
180
                                /*
 
181
                                 * Sanity check so we can reject bad
 
182
                                 * arguments before device access.
 
183
                                 */
 
184
                                if(reset_kind(opt_reset) < 0)
181
185
                                        usage();
182
186
                                break;
 
187
                        case 'Q':
 
188
                                opt_query = 1;
 
189
                                break;
183
190
                        case 'v':
184
191
                                verbose++;
185
192
                                break;
200
207
        if((astribank = mpp_init(devpath)) == NULL) {
201
208
                ERR("Failed initializing MPP\n");
202
209
#ifdef SUPPORT_OLD_RESET
203
 
                INFO("opt_reset = %s\n", opt_reset);
 
210
                DBG("opt_reset = %s\n", opt_reset);
204
211
                if (opt_reset) {
205
 
                        INFO("Trying old reset method\n");
 
212
                        DBG("Trying old reset method\n");
206
213
                        if ((ret = old_reset(devpath)) != 0) {
207
214
                                ERR("Old reset method failed as well: %d\n", ret);
208
215
                        }
211
218
 
212
219
                return 1;
213
220
        }
214
 
        show_hardware(astribank);
 
221
        /*
 
222
         * First process reset options. We want to be able
 
223
         * to reset minimal USB firmwares even if they don't
 
224
         * implement the full MPP protocol (e.g: EEPROM_BURN)
 
225
         */
215
226
        if(opt_reset) {
 
227
                int     full_reset;
 
228
 
 
229
                if((full_reset = reset_kind(opt_reset)) < 0) {
 
230
                        ERR("Bad reset kind '%s'\n", opt_reset);
 
231
                        return 1;
 
232
                }
 
233
                DBG("Reseting (%s)\n", opt_reset);
216
234
                if((ret = mpp_reset(astribank, full_reset)) < 0) {
217
235
                        ERR("%s Reseting astribank failed: %d\n",
218
236
                                (full_reset) ? "Full" : "Half", ret);
219
237
                }
 
238
                goto out;
 
239
        }
 
240
        show_astribank_info(astribank);
 
241
        if(opt_query) {
 
242
                show_hardware(astribank);
220
243
        } else if(opt_renumerate) {
 
244
                DBG("Renumerate\n");
221
245
                if((ret = mpp_renumerate(astribank)) < 0) {
222
246
                        ERR("Renumerating astribank failed: %d\n", ret);
223
247
                }
224
248
        } else if(opt_watchdog) {
225
249
                int     watchdogstate = strtoul(opt_watchdog, NULL, 0);
226
250
 
227
 
                INFO("TWINSTAR: Setting watchdog %s-guard\n",
 
251
                DBG("TWINSTAR: Setting watchdog %s-guard\n",
228
252
                        (watchdogstate) ? "on" : "off");
229
253
                if((ret = mpp_tws_setwatchdog(astribank, watchdogstate)) < 0) {
230
254
                        ERR("Failed to set watchdog to %d\n", watchdogstate);
232
256
                }
233
257
        } else if(opt_port) {
234
258
                int     new_portnum = strtoul(opt_port, NULL, 0);
 
259
                int     tws_portnum = mpp_tws_portnum(astribank);
235
260
                char    *msg = (new_portnum == tws_portnum)
236
261
                                        ? " Same same, never mind..."
237
262
                                        : "";
238
263
 
239
 
                INFO("TWINSTAR: Setting portnum to %d.%s\n", new_portnum, msg);
 
264
                DBG("TWINSTAR: Setting portnum to %d.%s\n", new_portnum, msg);
240
265
                if((ret = mpp_tws_setportnum(astribank, new_portnum)) < 0) {
241
266
                        ERR("Failed to set USB portnum to %d\n", new_portnum);
242
267
                        return 1;
243
268
                }
244
269
        }
 
270
out:
245
271
        mpp_exit(astribank);
246
272
        return 0;
247
273
}