pce.c
author viric <viriketo@gmail.com>
Mon, 10 Jan 2011 19:07:49 +0100
changeset 15 06da811cdc27
parent 12 faac84f37171
child 17 021968512187
permissions -rw-r--r--
Fixing the month written into the file.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
5
8459d991779e Setting the license and authors, preparing for a release.
viric <viriketo@gmail.com>
parents: 4
diff changeset
     1
/*
8459d991779e Setting the license and authors, preparing for a release.
viric <viriketo@gmail.com>
parents: 4
diff changeset
     2
    PCE-HT71 programmer and data downloader for libusb
8459d991779e Setting the license and authors, preparing for a release.
viric <viriketo@gmail.com>
parents: 4
diff changeset
     3
    Copyright (C) 2010  LluĂ­s Batlle i Rossell
8459d991779e Setting the license and authors, preparing for a release.
viric <viriketo@gmail.com>
parents: 4
diff changeset
     4
8459d991779e Setting the license and authors, preparing for a release.
viric <viriketo@gmail.com>
parents: 4
diff changeset
     5
    This program is free software: you can redistribute it and/or modify
8459d991779e Setting the license and authors, preparing for a release.
viric <viriketo@gmail.com>
parents: 4
diff changeset
     6
    it under the terms of the GNU General Public License as published by
8459d991779e Setting the license and authors, preparing for a release.
viric <viriketo@gmail.com>
parents: 4
diff changeset
     7
    the Free Software Foundation, either version 3 of the License, or
8459d991779e Setting the license and authors, preparing for a release.
viric <viriketo@gmail.com>
parents: 4
diff changeset
     8
    (at your option) any later version.
8459d991779e Setting the license and authors, preparing for a release.
viric <viriketo@gmail.com>
parents: 4
diff changeset
     9
8459d991779e Setting the license and authors, preparing for a release.
viric <viriketo@gmail.com>
parents: 4
diff changeset
    10
    This program is distributed in the hope that it will be useful,
8459d991779e Setting the license and authors, preparing for a release.
viric <viriketo@gmail.com>
parents: 4
diff changeset
    11
    but WITHOUT ANY WARRANTY; without even the implied warranty of
8459d991779e Setting the license and authors, preparing for a release.
viric <viriketo@gmail.com>
parents: 4
diff changeset
    12
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
8459d991779e Setting the license and authors, preparing for a release.
viric <viriketo@gmail.com>
parents: 4
diff changeset
    13
    GNU General Public License for more details.
8459d991779e Setting the license and authors, preparing for a release.
viric <viriketo@gmail.com>
parents: 4
diff changeset
    14
8459d991779e Setting the license and authors, preparing for a release.
viric <viriketo@gmail.com>
parents: 4
diff changeset
    15
    You should have received a copy of the GNU General Public License
8459d991779e Setting the license and authors, preparing for a release.
viric <viriketo@gmail.com>
parents: 4
diff changeset
    16
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
8459d991779e Setting the license and authors, preparing for a release.
viric <viriketo@gmail.com>
parents: 4
diff changeset
    17
    */
0
bd9387ece36f Something.
viric@mandarina
parents:
diff changeset
    18
#include <usb.h>
bd9387ece36f Something.
viric@mandarina
parents:
diff changeset
    19
#include <stdio.h>
bd9387ece36f Something.
viric@mandarina
parents:
diff changeset
    20
#include <assert.h>
2
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
    21
#include <unistd.h>
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
    22
#include <string.h>
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
    23
#include <errno.h>
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
    24
#include <time.h>
0
bd9387ece36f Something.
viric@mandarina
parents:
diff changeset
    25
bd9387ece36f Something.
viric@mandarina
parents:
diff changeset
    26
const int vendor=0x10c4;
bd9387ece36f Something.
viric@mandarina
parents:
diff changeset
    27
const int product=0x0003;
bd9387ece36f Something.
viric@mandarina
parents:
diff changeset
    28
bd9387ece36f Something.
viric@mandarina
parents:
diff changeset
    29
usb_dev_handle *handle;
bd9387ece36f Something.
viric@mandarina
parents:
diff changeset
    30
struct usb_device *device;
bd9387ece36f Something.
viric@mandarina
parents:
diff changeset
    31
1
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
    32
int ep_in = 1;
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
    33
int ep_out = 2;
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
    34
2
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
    35
enum
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
    36
{
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
    37
    HELP,
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
    38
    SET,
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
    39
    DOWNLOAD
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
    40
} action;
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
    41
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
    42
struct
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
    43
{
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
    44
    int nsamples;
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
    45
    int time_per_sample;
4
5e6e113ebd92 Improvements
viric <viriketo@gmail.com>
parents: 3
diff changeset
    46
    int immediate;
2
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
    47
    char *download_file;
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
    48
} config;
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
    49
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
    50
FILE *outfile;
1
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
    51
0
bd9387ece36f Something.
viric@mandarina
parents:
diff changeset
    52
int connect()
bd9387ece36f Something.
viric@mandarina
parents:
diff changeset
    53
{
bd9387ece36f Something.
viric@mandarina
parents:
diff changeset
    54
    struct usb_bus *bus;
bd9387ece36f Something.
viric@mandarina
parents:
diff changeset
    55
    bus = usb_get_busses();
bd9387ece36f Something.
viric@mandarina
parents:
diff changeset
    56
bd9387ece36f Something.
viric@mandarina
parents:
diff changeset
    57
    while (bus != 0)
bd9387ece36f Something.
viric@mandarina
parents:
diff changeset
    58
    {
bd9387ece36f Something.
viric@mandarina
parents:
diff changeset
    59
        struct usb_device *dev;
bd9387ece36f Something.
viric@mandarina
parents:
diff changeset
    60
        dev = bus->devices;
bd9387ece36f Something.
viric@mandarina
parents:
diff changeset
    61
        while(dev != 0)
bd9387ece36f Something.
viric@mandarina
parents:
diff changeset
    62
        {
bd9387ece36f Something.
viric@mandarina
parents:
diff changeset
    63
            if (dev->descriptor.idVendor == vendor
bd9387ece36f Something.
viric@mandarina
parents:
diff changeset
    64
                && dev->descriptor.idProduct == product)
bd9387ece36f Something.
viric@mandarina
parents:
diff changeset
    65
            {
bd9387ece36f Something.
viric@mandarina
parents:
diff changeset
    66
                handle = usb_open(dev);
bd9387ece36f Something.
viric@mandarina
parents:
diff changeset
    67
                device = dev;
bd9387ece36f Something.
viric@mandarina
parents:
diff changeset
    68
                return 0;
bd9387ece36f Something.
viric@mandarina
parents:
diff changeset
    69
            }
bd9387ece36f Something.
viric@mandarina
parents:
diff changeset
    70
            dev = dev->next;
bd9387ece36f Something.
viric@mandarina
parents:
diff changeset
    71
        }
bd9387ece36f Something.
viric@mandarina
parents:
diff changeset
    72
        bus = bus->next;
bd9387ece36f Something.
viric@mandarina
parents:
diff changeset
    73
    }
bd9387ece36f Something.
viric@mandarina
parents:
diff changeset
    74
bd9387ece36f Something.
viric@mandarina
parents:
diff changeset
    75
    handle = 0;
bd9387ece36f Something.
viric@mandarina
parents:
diff changeset
    76
    return -1;
bd9387ece36f Something.
viric@mandarina
parents:
diff changeset
    77
}
bd9387ece36f Something.
viric@mandarina
parents:
diff changeset
    78
1
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
    79
int send_program()
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
    80
{
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
    81
    int res;
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
    82
    res = usb_bulk_write(handle, ep_out, "\x01\x40\x00", 3, 1000);
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
    83
    assert(res == 3);
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
    84
}
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
    85
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
    86
int send_config()
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
    87
{
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
    88
    int res;
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
    89
    char buf[64];
2
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
    90
    struct tm *t;
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
    91
    time_t tmp_time;
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
    92
    tmp_time = time(NULL);
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
    93
    t = localtime(&tmp_time);
1
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
    94
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
    95
    buf[0] = '\xce';
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
    96
    buf[1] = 0;
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
    97
    buf[2] = 0;
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
    98
    buf[3] = 0;
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
    99
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
   100
    // Samples
2
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   101
    *( (int *) &buf[4]) = config.nsamples;
1
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
   102
    // Samples got
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
   103
    *( (int *) &buf[8]) = 0;
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
   104
    // Sample rate
2
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   105
    *( (int *) &buf[12]) = config.time_per_sample;
1
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
   106
    // Year
3
5925ce9887c2 Fixing the year.
viric <viriketo@gmail.com>
parents: 2
diff changeset
   107
    *( (int *) &buf[16]) = t->tm_year + 1900;
1
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
   108
    // Mintemp
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
   109
    buf[20] = 0;
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
   110
    buf[21] = 0;
2
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   111
    *( (short int *) &buf[22]) = 0x4120;
1
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
   112
    // Maxtemp
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
   113
    buf[24] = 0;
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
   114
    buf[25] = 0;
2
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   115
    *( (short int *) &buf[26]) = 0x41a0;
1
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
   116
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
   117
    // Month
2
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   118
    buf[28] = t->tm_mon;
1
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
   119
    // Day
2
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   120
    buf[29] = t->tm_mday;
1
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
   121
    // hour
2
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   122
    buf[30] = t->tm_hour;
1
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
   123
    // Minute
2
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   124
    buf[31] = t->tm_min;
1
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
   125
    // second
2
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   126
    buf[32] = t->tm_sec;
1
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
   127
    // Celsius (1 F)
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
   128
    buf[33] = 0;
2
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   129
    // Pause between leds (300s)
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   130
    buf[34] = 0x1e;
1
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
   131
    // Name
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
   132
    buf[35] = 'A';
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
   133
    buf[36] = '0';
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
   134
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
   135
    // Immediate
4
5e6e113ebd92 Improvements
viric <viriketo@gmail.com>
parents: 3
diff changeset
   136
    buf[51] = config.immediate ? 2 : 1;
1
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
   137
    // Minhum
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
   138
    buf[52] = 0;
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
   139
    buf[53] = 0;
2
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   140
    *( (short int *) &buf[54]) = 0x410f;
1
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
   141
    // Maxhum
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
   142
    buf[56] = 0;
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
   143
    buf[57] = 0;
2
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   144
    *( (short int *) &buf[58]) = 0x4296;
1
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
   145
    // final
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
   146
    buf[60] = 0xce;
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
   147
    buf[61] = 0x0;
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
   148
    buf[62] = 0x0;
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
   149
    buf[63] = 0x0;
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
   150
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
   151
    res = usb_bulk_write(handle, ep_out, buf, 64, 1000);
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
   152
    assert(res == 64);
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
   153
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
   154
    res = usb_bulk_read(handle, ep_in, buf, 1, 1000);
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
   155
    assert(res == 1);
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
   156
}
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
   157
2
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   158
void parse_data(char *data)
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   159
{
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   160
    fprintf(outfile, "# Start: %hi-%hhi-%hhi %hhi:%hhi:%hhi\n",
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   161
            *((short int *) (data + 16)),
15
06da811cdc27 Fixing the month written into the file.
viric <viriketo@gmail.com>
parents: 12
diff changeset
   162
            *((unsigned char *) (data + 28))+1,
2
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   163
            *((unsigned char *) (data + 29)),
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   164
            *((unsigned char *) (data + 30)),
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   165
            *((unsigned char *) (data + 31)),
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   166
            *((unsigned char *) (data + 32)));
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   167
    fprintf(outfile, "# Num Samples: %hi\n",
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   168
            *((short int *) (data + 8))
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   169
            );
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   170
    fprintf(outfile, "# Time between samples: %hi s\n",
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   171
            *((short int *) (data + 12))
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   172
            );
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   173
}
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   174
1
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
   175
int
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
   176
start_download()
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
   177
{
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
   178
    int res;
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
   179
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
   180
    res = usb_bulk_write(handle, ep_out, "\x00\x10\x01", 3, 1000);
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
   181
    assert(res == 3);
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
   182
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
   183
    char data[100];
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
   184
    res = usb_bulk_read(handle, ep_in, data, 3, 1000);
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
   185
    assert(res == 3);
4
5e6e113ebd92 Improvements
viric <viriketo@gmail.com>
parents: 3
diff changeset
   186
    fprintf(stderr, "Debug: %02hhx%02hhx%02hhx\n", data[0], data[1], data[2]);
5e6e113ebd92 Improvements
viric <viriketo@gmail.com>
parents: 3
diff changeset
   187
    assert(data[0] == 2);
2
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   188
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   189
    int num = *((short int*) &data[1]);
4
5e6e113ebd92 Improvements
viric <viriketo@gmail.com>
parents: 3
diff changeset
   190
    fprintf(stderr, "Found %i bytes = %i samples\n", num, num/4);
2
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   191
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   192
    if (num > 0)
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   193
    {
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   194
        int num_frames = (num + 63) / 64;
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   195
        fprintf(stderr, "%i frames\n", num_frames);
1
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
   196
2
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   197
        /*
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   198
        res = usb_bulk_write(handle, ep_out, "\x00\x00\x01", 3, 1000);
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   199
        assert(res == 3);
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   200
        */
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   201
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   202
        res = usb_bulk_read(handle, ep_in, data, 64, 1000);
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   203
        assert(res == 64);
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   204
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   205
        parse_data(data);
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   206
10
fc8a8cfe680a Fixing a bug, when it had to download more than 0x40 frames.
viric <viriketo@gmail.com>
parents: 8
diff changeset
   207
        int sec = 0;
11
0a821b9bdc80 Fixing the download of many samples.
viric <viriketo@gmail.com>
parents: 10
diff changeset
   208
        int block = 0;
10
fc8a8cfe680a Fixing a bug, when it had to download more than 0x40 frames.
viric <viriketo@gmail.com>
parents: 8
diff changeset
   209
        do
fc8a8cfe680a Fixing a bug, when it had to download more than 0x40 frames.
viric <viriketo@gmail.com>
parents: 8
diff changeset
   210
        {
fc8a8cfe680a Fixing a bug, when it had to download more than 0x40 frames.
viric <viriketo@gmail.com>
parents: 8
diff changeset
   211
            char frame[3];
fc8a8cfe680a Fixing a bug, when it had to download more than 0x40 frames.
viric <viriketo@gmail.com>
parents: 8
diff changeset
   212
            int step_frames = num_frames >= 0x40 ? 0x40 : num_frames;
fc8a8cfe680a Fixing a bug, when it had to download more than 0x40 frames.
viric <viriketo@gmail.com>
parents: 8
diff changeset
   213
            frame[0] = 0;
11
0a821b9bdc80 Fixing the download of many samples.
viric <viriketo@gmail.com>
parents: 10
diff changeset
   214
            frame[1] = block;
10
fc8a8cfe680a Fixing a bug, when it had to download more than 0x40 frames.
viric <viriketo@gmail.com>
parents: 8
diff changeset
   215
            frame[2] = step_frames;
1
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
   216
10
fc8a8cfe680a Fixing a bug, when it had to download more than 0x40 frames.
viric <viriketo@gmail.com>
parents: 8
diff changeset
   217
            res = usb_bulk_write(handle, ep_out, frame, 3, 1000);
fc8a8cfe680a Fixing a bug, when it had to download more than 0x40 frames.
viric <viriketo@gmail.com>
parents: 8
diff changeset
   218
            assert(res == 3);
2
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   219
10
fc8a8cfe680a Fixing a bug, when it had to download more than 0x40 frames.
viric <viriketo@gmail.com>
parents: 8
diff changeset
   220
            res = usb_bulk_read(handle, ep_in, data, 3, 1000);
fc8a8cfe680a Fixing a bug, when it had to download more than 0x40 frames.
viric <viriketo@gmail.com>
parents: 8
diff changeset
   221
            assert(res == 3);
fc8a8cfe680a Fixing a bug, when it had to download more than 0x40 frames.
viric <viriketo@gmail.com>
parents: 8
diff changeset
   222
            fprintf(stderr, "Debug: %02hhx%02hhx%02hhx\n", data[0], data[1], data[2]);
fc8a8cfe680a Fixing a bug, when it had to download more than 0x40 frames.
viric <viriketo@gmail.com>
parents: 8
diff changeset
   223
            assert(data[0] == 2);
1
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
   224
10
fc8a8cfe680a Fixing a bug, when it had to download more than 0x40 frames.
viric <viriketo@gmail.com>
parents: 8
diff changeset
   225
            int i;
fc8a8cfe680a Fixing a bug, when it had to download more than 0x40 frames.
viric <viriketo@gmail.com>
parents: 8
diff changeset
   226
            for(i=0; i < step_frames; ++i)
fc8a8cfe680a Fixing a bug, when it had to download more than 0x40 frames.
viric <viriketo@gmail.com>
parents: 8
diff changeset
   227
            {
fc8a8cfe680a Fixing a bug, when it had to download more than 0x40 frames.
viric <viriketo@gmail.com>
parents: 8
diff changeset
   228
                res = usb_bulk_read(handle, ep_in, data, 64, 5000);
fc8a8cfe680a Fixing a bug, when it had to download more than 0x40 frames.
viric <viriketo@gmail.com>
parents: 8
diff changeset
   229
                assert(res == 64);
fc8a8cfe680a Fixing a bug, when it had to download more than 0x40 frames.
viric <viriketo@gmail.com>
parents: 8
diff changeset
   230
                int take = (num >= 64) ? 64 : num;
2
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   231
10
fc8a8cfe680a Fixing a bug, when it had to download more than 0x40 frames.
viric <viriketo@gmail.com>
parents: 8
diff changeset
   232
                int j;
fc8a8cfe680a Fixing a bug, when it had to download more than 0x40 frames.
viric <viriketo@gmail.com>
parents: 8
diff changeset
   233
                for(j=0; j<take; j+=4)
fc8a8cfe680a Fixing a bug, when it had to download more than 0x40 frames.
viric <viriketo@gmail.com>
parents: 8
diff changeset
   234
                {
fc8a8cfe680a Fixing a bug, when it had to download more than 0x40 frames.
viric <viriketo@gmail.com>
parents: 8
diff changeset
   235
                    float temp = *((short int *) (data + j)) / 10.;
fc8a8cfe680a Fixing a bug, when it had to download more than 0x40 frames.
viric <viriketo@gmail.com>
parents: 8
diff changeset
   236
                    float hum = *((short int *) (data + j + 2)) / 10.;
fc8a8cfe680a Fixing a bug, when it had to download more than 0x40 frames.
viric <viriketo@gmail.com>
parents: 8
diff changeset
   237
                    fprintf(outfile, "%i %g %g\n", sec, temp, hum);
fc8a8cfe680a Fixing a bug, when it had to download more than 0x40 frames.
viric <viriketo@gmail.com>
parents: 8
diff changeset
   238
                    sec++;
fc8a8cfe680a Fixing a bug, when it had to download more than 0x40 frames.
viric <viriketo@gmail.com>
parents: 8
diff changeset
   239
                }
fc8a8cfe680a Fixing a bug, when it had to download more than 0x40 frames.
viric <viriketo@gmail.com>
parents: 8
diff changeset
   240
                num -= 64;
fc8a8cfe680a Fixing a bug, when it had to download more than 0x40 frames.
viric <viriketo@gmail.com>
parents: 8
diff changeset
   241
                num_frames -= 1;
2
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   242
            }
11
0a821b9bdc80 Fixing the download of many samples.
viric <viriketo@gmail.com>
parents: 10
diff changeset
   243
            ++block;
2
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   244
        }
10
fc8a8cfe680a Fixing a bug, when it had to download more than 0x40 frames.
viric <viriketo@gmail.com>
parents: 8
diff changeset
   245
        while(num_frames > 0);
2
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   246
    }
1
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
   247
}
fdce143cc82c It works a bit. I reverse enginered part.
viric <viriketo@gmail.com>
parents: 0
diff changeset
   248
2
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   249
void
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   250
usage()
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   251
{
12
faac84f37171 Towards v0.2
viric <viriketo@gmail.com>
parents: 11
diff changeset
   252
    fprintf(stderr, "pce v0.2 - PCE-HT71 programmer and data downloader\n");
7
daa76fbc50aa Adding about the license and the version in the program.
viric <viriketo@gmail.com>
parents: 5
diff changeset
   253
    fprintf(stderr, "Copyright (C) 2010  Lluis Batlle i Rossell\n");
8
897b154201f8 More about the license, shown at program usage show.
viric <viriketo@gmail.com>
parents: 7
diff changeset
   254
    fprintf(stderr, "This program comes with ABSOLUTELY NO WARRANTY.\n");
897b154201f8 More about the license, shown at program usage show.
viric <viriketo@gmail.com>
parents: 7
diff changeset
   255
    fprintf(stderr, "This is free software, and you are welcome to redistribute it\n");
897b154201f8 More about the license, shown at program usage show.
viric <viriketo@gmail.com>
parents: 7
diff changeset
   256
    fprintf(stderr, "under certain conditions; type `show c' for details.\n");
897b154201f8 More about the license, shown at program usage show.
viric <viriketo@gmail.com>
parents: 7
diff changeset
   257
    fprintf(stderr, "\nusage: pce [-n maxsamples] [-t timepersample] [-i] <-d downloadfile | -s>\n");
2
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   258
}
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   259
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   260
int main(int argc, char **argv)
0
bd9387ece36f Something.
viric@mandarina
parents:
diff changeset
   261
{
bd9387ece36f Something.
viric@mandarina
parents:
diff changeset
   262
    int res;
2
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   263
    int opt;
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   264
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   265
    config.nsamples = 16000;
4
5e6e113ebd92 Improvements
viric <viriketo@gmail.com>
parents: 3
diff changeset
   266
    config.immediate = 0;
2
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   267
    config.time_per_sample = 2;
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   268
    config.download_file = 0;
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   269
    action = HELP;
4
5e6e113ebd92 Improvements
viric <viriketo@gmail.com>
parents: 3
diff changeset
   270
    while  ((opt = getopt(argc, argv, "n:d:t:si")) != -1) {
2
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   271
        switch (opt) {
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   272
            case 'n':
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   273
                config.nsamples = atoi(optarg);
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   274
                break;
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   275
            case 't':
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   276
                config.time_per_sample = atoi(optarg);
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   277
                break;
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   278
            case 'd':
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   279
                config.download_file = optarg;
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   280
                action = DOWNLOAD;
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   281
                break;
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   282
            case 's':
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   283
                action = SET;
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   284
                break;
4
5e6e113ebd92 Improvements
viric <viriketo@gmail.com>
parents: 3
diff changeset
   285
            case 'i':
5e6e113ebd92 Improvements
viric <viriketo@gmail.com>
parents: 3
diff changeset
   286
                config.immediate = 1;
5e6e113ebd92 Improvements
viric <viriketo@gmail.com>
parents: 3
diff changeset
   287
                break;
2
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   288
            default:
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   289
                usage();
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   290
                return 1;
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   291
        }
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   292
    }
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   293
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   294
    if (action == HELP)
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   295
    {
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   296
        usage();
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   297
        return 0;
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   298
    }
0
bd9387ece36f Something.
viric@mandarina
parents:
diff changeset
   299
bd9387ece36f Something.
viric@mandarina
parents:
diff changeset
   300
    usb_init();
bd9387ece36f Something.
viric@mandarina
parents:
diff changeset
   301
bd9387ece36f Something.
viric@mandarina
parents:
diff changeset
   302
    usb_find_busses();
bd9387ece36f Something.
viric@mandarina
parents:
diff changeset
   303
    usb_find_devices();
bd9387ece36f Something.
viric@mandarina
parents:
diff changeset
   304
    
bd9387ece36f Something.
viric@mandarina
parents:
diff changeset
   305
    connect();
bd9387ece36f Something.
viric@mandarina
parents:
diff changeset
   306
    if (handle == 0)
bd9387ece36f Something.
viric@mandarina
parents:
diff changeset
   307
    {
bd9387ece36f Something.
viric@mandarina
parents:
diff changeset
   308
        fprintf(stderr, "Cannot find the PCE-HT71\n");
bd9387ece36f Something.
viric@mandarina
parents:
diff changeset
   309
        return -1;
bd9387ece36f Something.
viric@mandarina
parents:
diff changeset
   310
    }
bd9387ece36f Something.
viric@mandarina
parents:
diff changeset
   311
bd9387ece36f Something.
viric@mandarina
parents:
diff changeset
   312
    res = usb_claim_interface(handle,
bd9387ece36f Something.
viric@mandarina
parents:
diff changeset
   313
        device->config->interface->altsetting->bInterfaceNumber);
bd9387ece36f Something.
viric@mandarina
parents:
diff changeset
   314
    assert(res == 0 && "claim_interface");
bd9387ece36f Something.
viric@mandarina
parents:
diff changeset
   315
4
5e6e113ebd92 Improvements
viric <viriketo@gmail.com>
parents: 3
diff changeset
   316
    if (action == SET)
2
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   317
    {
4
5e6e113ebd92 Improvements
viric <viriketo@gmail.com>
parents: 3
diff changeset
   318
        fprintf(stderr, "Settings: \n");
5e6e113ebd92 Improvements
viric <viriketo@gmail.com>
parents: 3
diff changeset
   319
        fprintf(stderr, " Max samples: %i\n", config.nsamples);
5e6e113ebd92 Improvements
viric <viriketo@gmail.com>
parents: 3
diff changeset
   320
        fprintf(stderr, " Time between samples: %i\n", config.time_per_sample);
5e6e113ebd92 Improvements
viric <viriketo@gmail.com>
parents: 3
diff changeset
   321
        fprintf(stderr, " Mode: %s\n", config.immediate ? "immediate" : "manual");
2
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   322
        send_program();
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   323
        send_config();
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   324
    }
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   325
    else
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   326
    {
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   327
        outfile = fopen(config.download_file, "w");
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   328
        if (outfile != NULL)
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   329
        {
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   330
            start_download();
4
5e6e113ebd92 Improvements
viric <viriketo@gmail.com>
parents: 3
diff changeset
   331
            fprintf(stderr, "File \"%s\" written\n", config.download_file);
2
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   332
            fclose(outfile);
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   333
        }
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   334
        else
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   335
        {
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   336
            fprintf(stderr, "Error opening file: %s", strerror(errno));
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   337
        }
884635f4a24f First working a bit version, with usage()
viric <viriketo@gmail.com>
parents: 1
diff changeset
   338
    }
0
bd9387ece36f Something.
viric@mandarina
parents:
diff changeset
   339
bd9387ece36f Something.
viric@mandarina
parents:
diff changeset
   340
    res = usb_release_interface(handle,
bd9387ece36f Something.
viric@mandarina
parents:
diff changeset
   341
        device->config->interface->altsetting->bInterfaceNumber);
bd9387ece36f Something.
viric@mandarina
parents:
diff changeset
   342
    assert(res == 0 && "release_interface");
bd9387ece36f Something.
viric@mandarina
parents:
diff changeset
   343
    usb_close(handle);
bd9387ece36f Something.
viric@mandarina
parents:
diff changeset
   344
    handle = 0;
bd9387ece36f Something.
viric@mandarina
parents:
diff changeset
   345
    return 0;
bd9387ece36f Something.
viric@mandarina
parents:
diff changeset
   346
}