commit-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Commit-gnuradio] r6922 - gnuradio/branches/developers/matt/u2f/firmware


From: eb
Subject: [Commit-gnuradio] r6922 - gnuradio/branches/developers/matt/u2f/firmware/lib
Date: Thu, 15 Nov 2007 09:49:26 -0700 (MST)

Author: eb
Date: 2007-11-15 09:49:24 -0700 (Thu, 15 Nov 2007)
New Revision: 6922

Added:
   gnuradio/branches/developers/matt/u2f/firmware/lib/printf.c
   gnuradio/branches/developers/matt/u2f/firmware/lib/stdio.h
   gnuradio/branches/developers/matt/u2f/firmware/lib/usrp2_i2c_addr.h
Modified:
   gnuradio/branches/developers/matt/u2f/firmware/lib/Makefile.am
Log:
work-in-progress

Modified: gnuradio/branches/developers/matt/u2f/firmware/lib/Makefile.am
===================================================================
--- gnuradio/branches/developers/matt/u2f/firmware/lib/Makefile.am      
2007-11-15 15:42:14 UTC (rev 6921)
+++ gnuradio/branches/developers/matt/u2f/firmware/lib/Makefile.am      
2007-11-15 16:49:24 UTC (rev 6922)
@@ -31,5 +31,6 @@
        hal_uart.c \
        i2c.c \
        pic.c \
+       printf.c \
        spi.c \
        u2_init.c       

Added: gnuradio/branches/developers/matt/u2f/firmware/lib/printf.c
===================================================================
--- gnuradio/branches/developers/matt/u2f/firmware/lib/printf.c                 
        (rev 0)
+++ gnuradio/branches/developers/matt/u2f/firmware/lib/printf.c 2007-11-15 
16:49:24 UTC (rev 6922)
@@ -0,0 +1,134 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2007 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 this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+/*
+ * Originally snatched from the SDCC z80 library ;)
+ */
+
+#include <stdarg.h>
+#include <stdio.h>
+#include <hal_io.h>            /* FIXME refactor into stdio */
+
+static void 
+_printn(unsigned u, unsigned base, char issigned,
+       volatile void (*emitter)(char, void *), void *pData)
+{
+  const char *_hex = "0123456789ABCDEF";
+  if (issigned && ((int)u < 0)) {
+    (*emitter)('-', pData);
+    u = (unsigned)-((int)u);
+  }
+  if (u >= base)
+    _printn(u/base, base, 0, emitter, pData);
+  (*emitter)(_hex[u%base], pData);
+}
+
+static void 
+_printf(const char *format, volatile void (*emitter)(char, void *),
+       void *pData, va_list va)
+{
+  while (*format) {
+    if (*format != '%')
+      (*emitter)(*format, pData);
+    else {
+      switch (*++format) {
+      case 0:                  /* hit end of format string */
+       return;
+      case 'c':
+       {
+         char c = (char)va_arg(va, int);
+         (*emitter)(c, pData);
+         break;
+       }
+      case 'u':
+       {
+         unsigned u = va_arg(va, unsigned);
+         _printn(u, 10, 0, emitter, pData);
+         break;
+       }
+      case 'd':
+       {
+         unsigned u = va_arg(va, unsigned);
+         _printn(u, 10, 1, emitter, pData);
+         break;
+       }
+      case 'x':
+      case 'p':
+       {
+         unsigned u = va_arg(va, unsigned);
+         _printn(u, 16, 0, emitter, pData);
+         break;
+       }
+      case 's':
+       {
+         char *s = va_arg(va, char *);
+         while (*s) {
+           (*emitter)(*s, pData);
+           s++;
+         }
+         break;
+       }
+      }
+    }
+    format++;
+  }
+}
+
+static void 
+_char_emitter(char c, void *pData __attribute__((unused)))
+{
+  hal_putc(c);
+}
+
+int 
+printf(const char *format, ...)
+{
+  va_list va;
+  va_start(va, format);
+
+  _printf(format, _char_emitter, NULL, va);
+
+  // wrong return value...
+  return 0;
+}
+
+
+#if 0
+
+// Totally dangerous.  Don't use
+static void 
+_buf_emitter(char c, void *pData)
+{
+  *((*((char **)pData)))++ = c;
+}
+
+int sprintf(char *pInto, const char *format, ...)
+{
+  va_list va;
+  va_start(va, format);
+
+  _printf(format, _buf_emitter, &pInto, va);
+  *pInto++ = '\0';
+
+  // FIXME wrong return value
+  return 0;
+}
+#endif


Property changes on: gnuradio/branches/developers/matt/u2f/firmware/lib/printf.c
___________________________________________________________________
Name: svn:eol-style
   + native

Added: gnuradio/branches/developers/matt/u2f/firmware/lib/stdio.h
===================================================================
--- gnuradio/branches/developers/matt/u2f/firmware/lib/stdio.h                  
        (rev 0)
+++ gnuradio/branches/developers/matt/u2f/firmware/lib/stdio.h  2007-11-15 
16:49:24 UTC (rev 6922)
@@ -0,0 +1,33 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2007 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 this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#ifndef INCLUDED_STDIO_H
+#define INCLUDED_STDIO_H
+
+#ifndef NULL
+#define NULL 0
+#endif
+
+int putchar(int c);
+int puts(const char *s);
+int printf(const char *format, ...);
+
+#endif /* INCLUDED_STDIO_H */


Property changes on: gnuradio/branches/developers/matt/u2f/firmware/lib/stdio.h
___________________________________________________________________
Name: svn:eol-style
   + native

Copied: gnuradio/branches/developers/matt/u2f/firmware/lib/usrp2_i2c_addr.h 
(from rev 6868, gnuradio/trunk/usrp/firmware/include/usrp_i2c_addr.h)
===================================================================
--- gnuradio/branches/developers/matt/u2f/firmware/lib/usrp2_i2c_addr.h         
                (rev 0)
+++ gnuradio/branches/developers/matt/u2f/firmware/lib/usrp2_i2c_addr.h 
2007-11-15 16:49:24 UTC (rev 6922)
@@ -0,0 +1,77 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2004,7 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.
+ */
+#ifndef INCLUDED_USRP2_I2C_ADDR_H
+#define INCLUDED_USRP2_I2C_ADDR_H
+
+// I2C addresses
+
+#define I2C_DEV_EEPROM 0x50            // 24LC02[45]:  7-bits 1010xxx
+
+#define        I2C_ADDR_BOOT   (I2C_DEV_EEPROM | 0x0)
+#define        I2C_ADDR_TX_A   (I2C_DEV_EEPROM | 0x4)
+#define        I2C_ADDR_RX_A   (I2C_DEV_EEPROM | 0x5)
+
+// FIXME the BOOT EEPROM is not yet defined for the U2
+
+// format of FX2 BOOT EEPROM
+//     00: 0xC0        code for ``Read IDs from EEPROM''
+//     01: 0xFE        USB Vendor ID (LSB)
+//     02: 0xFF        USB Vendor ID (MSB)
+//     03: 0x02        USB Product ID (LSB)
+//     04: 0x00        USB Product ID (MSB)
+//     05: 0x01        USB Device ID (LSB)     // rev1
+//     06: 0x00        USB Device ID (MSB)     // 0 = unconfig'd (no firmware)
+//     07: 0x00        option byte
+
+
+// format of daughterboard EEPROM
+//     00: 0xDB        code for ``I'm a daughterboard''
+//     01:   ..        Daughterboard ID (LSB)
+//     02:   ..        Daughterboard ID (MSB)
+//     03:   ..        io bits  7-0 direction (bit set if it's an output from 
m'board)
+//     04:   ..        io bits 15-8 direction (bit set if it's an output from 
m'board)
+//     05:   ..        ADC0 DC offset correction (LSB)
+//     06:   ..        ADC0 DC offset correction (MSB)
+//     07:   ..        ADC1 DC offset correction (LSB)
+//     08:   ..        ADC1 DC offset correction (MSB)
+//     ...
+//     1f:   ..        negative of the sum of bytes [0x00, 0x1e]
+
+#define        DB_EEPROM_MAGIC         0x00
+#define          DB_EEPROM_MAGIC_VALUE                 0xDB
+#define        DB_EEPROM_ID_LSB                0x01
+#define        DB_EEPROM_ID_MSB                0x02
+#define        DB_EEPROM_OE_LSB                0x03
+#define        DB_EEPROM_OE_MSB                0x04
+#define        DB_EEPROM_OFFSET_0_LSB          0x05    // offset correction 
for ADC or DAC 0
+#define        DB_EEPROM_OFFSET_0_MSB          0x06
+#define        DB_EEPROM_OFFSET_1_LSB          0x07    // offset correction 
for ADC or DAC 1
+#define        DB_EEPROM_OFFSET_1_MSB          0x08
+#define        DB_EEPROM_CHKSUM                0x1f
+
+#define        DB_EEPROM_CLEN                  0x20    // length of common 
portion of eeprom
+
+#define        DB_EEPROM_CUSTOM_BASE           DB_EEPROM_CLEN  // first avail 
offset for
+                                                       //   daughterboard 
specific use
+
+#endif /* INCLUDED_USRP2_I2C_ADDR_H */
+





reply via email to

[Prev in Thread] Current Thread [Next in Thread]