📄 gen_usrp_dbid.py
字号:
#!/usr/bin/env pythonimport sysimport osimport os.pathimport refrom optparse import OptionParserdef write_header(f, comment_char): f.write(comment_char); f.write('\n') f.write(comment_char); f.write(' Machine generated by gen_usrp_dbid.py from usrp_dbid.dat\n') f.write(comment_char); f.write(' Do not edit by hand. All edits will be overwritten.\n') f.write(comment_char); f.write('\n') f.write('\n')def gen_dbid_py(r): f = open('usrp_dbid.py', 'w') comment_char = '#' write_header(f, comment_char) f.write(comment_char); f.write('\n') f.write(comment_char); f.write(" USRP Daughterboard ID's\n") f.write(comment_char); f.write('\n') f.write('\n') for x in r: f.write('%-16s = %s\n' % (x[1], x[2]))def gen_dbid_h(r): f = open('usrp_dbid.h', 'w') comment_char = '//' write_header(f, comment_char) f.write(comment_char); f.write('\n') f.write(comment_char); f.write(" USRP Daughterboard ID's\n") f.write(comment_char); f.write('\n') f.write('\n') f.write('#ifndef INCLUDED_USRP_DBID_H\n') f.write('#define INCLUDED_USRP_DBID_H\n') f.write('\n') for x in r: f.write('#define %-25s %s\n' % ('USRP_DBID_' + x[1], x[2])) f.write('\n') f.write('#endif /* INCLUDED_USRP_DBID_H */\n')def gen_dbid_cc(r): f = open('usrp_dbid.cc', 'w') write_header(f, '//') head = '''/* * Copyright 2005 Free Software Foundation, Inc. * * This file is part of GNU Radio * * GNU Radio 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, or (at your option) * any later version. * * GNU Radio 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 GNU Radio; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 51 Franklin Street, * Boston, MA 02110-1301, USA. */#include <usrp_prims.h>#include <usrp_dbid.h>#include <stdio.h>#define NELEM(x) sizeof(x)/sizeof(x[0])static struct { unsigned short dbid; const char *name;} dbid_map[] = {''' tail = '''};const std::stringusrp_dbid_to_string (int dbid){ if (dbid == -1) return "<none>"; if (dbid == -2) return "<invalid EEPROM contents>"; for (unsigned i = 0; i < NELEM (dbid_map); i++) if (dbid == dbid_map[i].dbid) return dbid_map[i].name; char tmp[64]; snprintf (tmp, sizeof (tmp), "Unknown (0x%04x)", dbid); return tmp;}''' f.write(head) for x in r: f.write(' { %-27s "%s" },\n' % ( 'USRP_DBID_' + x[1] + ',', x[0])) f.write(tail)def gen_all(src_filename): src_file = open(src_filename, 'r') r = [] for line in src_file: line = line.strip() line = re.sub(r'\s*#.*$','', line) if len(line) == 0: continue mo = re.match('"([^"]+)"\s*(0x[0-9a-fA-F]+)', line) if mo: str_name = mo.group(1) id_name = str_name.upper().replace(' ', '_') id_val = mo.group(2) r.append((str_name, id_name, id_val)) #sys.stdout.write('%-16s\t%-16s\t%s\n' % ('"'+str_name+'"', id_name, id_val)) gen_dbid_h(r) gen_dbid_py(r) gen_dbid_cc(r) def main(): usage = "usage: %prog [options] usrp_dbid.dat" parser = OptionParser(usage=usage) (options, args) = parser.parse_args() if len(args) != 1: parser.print_help() sys.exit(1) gen_all(args[0])if __name__ == '__main__': main()
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -