📄 parameters.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 + -