⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 parameters.cc

📁 tinyos2.0版本驱动
💻 CC
字号:
/* -*- mode:c++; indent-tabs-mode:nil -*- * Copyright (c) 2007, Technische Universitaet Berlin * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * - Redistributions of source code must retain the above copyright notice, *   this list of conditions and the following disclaimer. * - Redistributions in binary form must reproduce the above copyright *   notice, this list of conditions and the following disclaimer in the *   documentation and/or other materials provided with the distribution. * - Neither the name of the Technische Universitaet Berlin nor the names *   of its contributors may be used to endorse or promote products derived *   from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */#include <stdio.h>#include <stdlib.h>#include <errno.h>#include <iostream>#include <popt.h>#include "Parameters.h"using namespace std;Parameters::Parameters(int argc, char **argv) {    int c;    action = NONE;    device = 0;    verbose = false;    action = NONE;    image = 0;    telosb = false;    chunksize = 250;        poptOption optionsTable[] = {        {"debug",'D', 0, 0, 'd', "print many statements on progress"},        {"f1x",'1', 0, 0, '1', "Specify CPU family, in case autodetect fails"},        {"invert-reset",'R', 0, 0, 'R', "RESET pin is inverted"},        {"invert-test",'T', 0, 0, 'T', "TEST pin is inverted"},        {"telosb",'b', 0, 0, 'b', "Assume a TelosB node"},        {"tmote",'b', 0, 0, 'b', "Assume a Tmote node"},        {"intelhex",'I', 0, 0, 'I', "force fileformat to be  IntelHex"},        {"erase",'e', 0, 0, 'e', "erase device"},        {"reset",'r', 0, 0, 'r', "reset device"},        {"send-chunk-size",'s', POPT_ARG_INT | POPT_ARGFLAG_SHOW_DEFAULT,         &chunksize, 0, "program msp430 using chunks of this size", ""},        {"program",'p', POPT_ARG_STRING, &image, 0,         "Program file", ""},        {"comport",'c', POPT_ARG_STRING, &device, 0,         "communicate with MSP430 using this device", ""},        POPT_AUTOHELP        POPT_TABLEEND    };        poptContext optCon;   /* context for parsing command-line options */    optCon = poptGetContext(NULL, argc, (const char**)argv, optionsTable, 0);    /* Now do options processing */    while((c = poptGetNextOpt(optCon)) >= 0) {        switch(c) {            case 'R':                invertReset = true;                break;            case 'T':                invertTest = true;                break;            case 'd':                verbose = true;                break;            case 'r':                if(action < RESET) {                    action = RESET;                }                break;            case 'e':                if(action < ERASE) {                    action = ERASE;                }                break;            case 'b':                telosb = true;                break;            default:                break;        }    }    if (c < -1) {        /* an error occurred during option processing */        fprintf(stderr, "%s: %s\n",                poptBadOption(optCon, POPT_BADOPTION_NOALIAS),                poptStrerror(c));        exit(1);    }    if(telosb) {        invertReset = false;        invertTest = false;    }    if(image != 0) {        action = FLASH;    }    if(device != 0) {        dev = device;    }    else {        exit(1);    }    if(image != 0) {        img = image;    }    else if(action == FLASH) {        exit(1);    }    // force sane chunk size    if(chunksize < 150) {        chunksize = 150;    }    else if(chunksize > 250) {        chunksize = 250;    }    // must be even!    chunksize /= 2;     chunksize *= 2;    poptFreeContext(optCon);};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -