SkyTEM BMAG / Mbed 2 deprecated BMAGThrRev

Dependencies:   mbed WDT MODSERIAL BME280

Committer:
gert_lauritsen
Date:
Fri Jul 05 12:55:53 2019 +0000
Branch:
MbedBMAGThrRev
Revision:
61:52a6d0ffd8e5
dato rettel og ID i file lagt ind i version 5

Who changed what in which revision?

UserRevisionLine numberNew contents of line
gert_lauritsen 61:52a6d0ffd8e5 1 /* mbed USBHost Library
gert_lauritsen 61:52a6d0ffd8e5 2 * Copyright (c) 2006-2013 ARM Limited
gert_lauritsen 61:52a6d0ffd8e5 3 *
gert_lauritsen 61:52a6d0ffd8e5 4 * Licensed under the Apache License, Version 2.0 (the "License");
gert_lauritsen 61:52a6d0ffd8e5 5 * you may not use this file except in compliance with the License.
gert_lauritsen 61:52a6d0ffd8e5 6 * You may obtain a copy of the License at
gert_lauritsen 61:52a6d0ffd8e5 7 *
gert_lauritsen 61:52a6d0ffd8e5 8 * http://www.apache.org/licenses/LICENSE-2.0
gert_lauritsen 61:52a6d0ffd8e5 9 *
gert_lauritsen 61:52a6d0ffd8e5 10 * Unless required by applicable law or agreed to in writing, software
gert_lauritsen 61:52a6d0ffd8e5 11 * distributed under the License is distributed on an "AS IS" BASIS,
gert_lauritsen 61:52a6d0ffd8e5 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
gert_lauritsen 61:52a6d0ffd8e5 13 * See the License for the specific language governing permissions and
gert_lauritsen 61:52a6d0ffd8e5 14 * limitations under the License.
gert_lauritsen 61:52a6d0ffd8e5 15 */
gert_lauritsen 61:52a6d0ffd8e5 16
gert_lauritsen 61:52a6d0ffd8e5 17 #ifndef USBHOSTMSD_H
gert_lauritsen 61:52a6d0ffd8e5 18 #define USBHOSTMSD_H
gert_lauritsen 61:52a6d0ffd8e5 19
gert_lauritsen 61:52a6d0ffd8e5 20 #include "USBHostConf.h"
gert_lauritsen 61:52a6d0ffd8e5 21
gert_lauritsen 61:52a6d0ffd8e5 22 #if USBHOST_MSD
gert_lauritsen 61:52a6d0ffd8e5 23
gert_lauritsen 61:52a6d0ffd8e5 24 #include "USBHost.h"
gert_lauritsen 61:52a6d0ffd8e5 25 #include "FATFileSystem.h"
gert_lauritsen 61:52a6d0ffd8e5 26
gert_lauritsen 61:52a6d0ffd8e5 27 /**
gert_lauritsen 61:52a6d0ffd8e5 28 * A class to communicate a USB flash disk
gert_lauritsen 61:52a6d0ffd8e5 29 */
gert_lauritsen 61:52a6d0ffd8e5 30 class USBHostMSD : public IUSBEnumerator, public FATFileSystem {
gert_lauritsen 61:52a6d0ffd8e5 31 public:
gert_lauritsen 61:52a6d0ffd8e5 32 /**
gert_lauritsen 61:52a6d0ffd8e5 33 * Constructor
gert_lauritsen 61:52a6d0ffd8e5 34 *
gert_lauritsen 61:52a6d0ffd8e5 35 * @param rootdir mount name
gert_lauritsen 61:52a6d0ffd8e5 36 */
gert_lauritsen 61:52a6d0ffd8e5 37 USBHostMSD(const char * rootdir);
gert_lauritsen 61:52a6d0ffd8e5 38
gert_lauritsen 61:52a6d0ffd8e5 39 /**
gert_lauritsen 61:52a6d0ffd8e5 40 * Check if a MSD device is connected
gert_lauritsen 61:52a6d0ffd8e5 41 *
gert_lauritsen 61:52a6d0ffd8e5 42 * @return true if a MSD device is connected
gert_lauritsen 61:52a6d0ffd8e5 43 */
gert_lauritsen 61:52a6d0ffd8e5 44 bool connected();
gert_lauritsen 61:52a6d0ffd8e5 45
gert_lauritsen 61:52a6d0ffd8e5 46 /**
gert_lauritsen 61:52a6d0ffd8e5 47 * Try to connect to a MSD device
gert_lauritsen 61:52a6d0ffd8e5 48 *
gert_lauritsen 61:52a6d0ffd8e5 49 * @return true if connection was successful
gert_lauritsen 61:52a6d0ffd8e5 50 */
gert_lauritsen 61:52a6d0ffd8e5 51 bool connect();
gert_lauritsen 61:52a6d0ffd8e5 52
gert_lauritsen 61:52a6d0ffd8e5 53 protected:
gert_lauritsen 61:52a6d0ffd8e5 54 //From IUSBEnumerator
gert_lauritsen 61:52a6d0ffd8e5 55 virtual void setVidPid(uint16_t vid, uint16_t pid);
gert_lauritsen 61:52a6d0ffd8e5 56 virtual bool parseInterface(uint8_t intf_nb, uint8_t intf_class, uint8_t intf_subclass, uint8_t intf_protocol); //Must return true if the interface should be parsed
gert_lauritsen 61:52a6d0ffd8e5 57 virtual bool useEndpoint(uint8_t intf_nb, ENDPOINT_TYPE type, ENDPOINT_DIRECTION dir); //Must return true if the endpoint will be used
gert_lauritsen 61:52a6d0ffd8e5 58
gert_lauritsen 61:52a6d0ffd8e5 59 // From FATFileSystem
gert_lauritsen 61:52a6d0ffd8e5 60 virtual int disk_initialize();
gert_lauritsen 61:52a6d0ffd8e5 61 virtual int disk_status() {return 0;};
gert_lauritsen 61:52a6d0ffd8e5 62 virtual int disk_read(uint8_t* buffer, uint32_t sector, uint32_t count);
gert_lauritsen 61:52a6d0ffd8e5 63 virtual int disk_write(const uint8_t* buffer, uint32_t sector, uint32_t count);
gert_lauritsen 61:52a6d0ffd8e5 64 virtual int disk_sync() {return 0;};
gert_lauritsen 61:52a6d0ffd8e5 65 virtual uint32_t disk_sectors();
gert_lauritsen 61:52a6d0ffd8e5 66
gert_lauritsen 61:52a6d0ffd8e5 67 private:
gert_lauritsen 61:52a6d0ffd8e5 68 USBHost * host;
gert_lauritsen 61:52a6d0ffd8e5 69 USBDeviceConnected * dev;
gert_lauritsen 61:52a6d0ffd8e5 70 bool dev_connected;
gert_lauritsen 61:52a6d0ffd8e5 71 USBEndpoint * bulk_in;
gert_lauritsen 61:52a6d0ffd8e5 72 USBEndpoint * bulk_out;
gert_lauritsen 61:52a6d0ffd8e5 73 uint8_t nb_ep;
gert_lauritsen 61:52a6d0ffd8e5 74
gert_lauritsen 61:52a6d0ffd8e5 75 // Bulk-only CBW
gert_lauritsen 61:52a6d0ffd8e5 76 typedef struct {
gert_lauritsen 61:52a6d0ffd8e5 77 uint32_t Signature;
gert_lauritsen 61:52a6d0ffd8e5 78 uint32_t Tag;
gert_lauritsen 61:52a6d0ffd8e5 79 uint32_t DataLength;
gert_lauritsen 61:52a6d0ffd8e5 80 uint8_t Flags;
gert_lauritsen 61:52a6d0ffd8e5 81 uint8_t LUN;
gert_lauritsen 61:52a6d0ffd8e5 82 uint8_t CBLength;
gert_lauritsen 61:52a6d0ffd8e5 83 uint8_t CB[16];
gert_lauritsen 61:52a6d0ffd8e5 84 } PACKED CBW;
gert_lauritsen 61:52a6d0ffd8e5 85
gert_lauritsen 61:52a6d0ffd8e5 86 // Bulk-only CSW
gert_lauritsen 61:52a6d0ffd8e5 87 typedef struct {
gert_lauritsen 61:52a6d0ffd8e5 88 uint32_t Signature;
gert_lauritsen 61:52a6d0ffd8e5 89 uint32_t Tag;
gert_lauritsen 61:52a6d0ffd8e5 90 uint32_t DataResidue;
gert_lauritsen 61:52a6d0ffd8e5 91 uint8_t Status;
gert_lauritsen 61:52a6d0ffd8e5 92 } PACKED CSW;
gert_lauritsen 61:52a6d0ffd8e5 93
gert_lauritsen 61:52a6d0ffd8e5 94 CBW cbw;
gert_lauritsen 61:52a6d0ffd8e5 95 CSW csw;
gert_lauritsen 61:52a6d0ffd8e5 96
gert_lauritsen 61:52a6d0ffd8e5 97 int SCSITransfer(uint8_t * cmd, uint8_t cmd_len, int flags, uint8_t * data, uint32_t transfer_len);
gert_lauritsen 61:52a6d0ffd8e5 98 int testUnitReady();
gert_lauritsen 61:52a6d0ffd8e5 99 int readCapacity();
gert_lauritsen 61:52a6d0ffd8e5 100 int inquiry(uint8_t lun, uint8_t page_code);
gert_lauritsen 61:52a6d0ffd8e5 101 int SCSIRequestSense();
gert_lauritsen 61:52a6d0ffd8e5 102 int dataTransfer(uint8_t * buf, uint32_t block, uint8_t nbBlock, int direction);
gert_lauritsen 61:52a6d0ffd8e5 103 int checkResult(uint8_t res, USBEndpoint * ep);
gert_lauritsen 61:52a6d0ffd8e5 104 int getMaxLun();
gert_lauritsen 61:52a6d0ffd8e5 105
gert_lauritsen 61:52a6d0ffd8e5 106 int blockSize;
gert_lauritsen 61:52a6d0ffd8e5 107 uint32_t blockCount;
gert_lauritsen 61:52a6d0ffd8e5 108
gert_lauritsen 61:52a6d0ffd8e5 109 int msd_intf;
gert_lauritsen 61:52a6d0ffd8e5 110 bool msd_device_found;
gert_lauritsen 61:52a6d0ffd8e5 111 bool disk_init;
gert_lauritsen 61:52a6d0ffd8e5 112
gert_lauritsen 61:52a6d0ffd8e5 113 void init();
gert_lauritsen 61:52a6d0ffd8e5 114
gert_lauritsen 61:52a6d0ffd8e5 115 };
gert_lauritsen 61:52a6d0ffd8e5 116
gert_lauritsen 61:52a6d0ffd8e5 117 #endif
gert_lauritsen 61:52a6d0ffd8e5 118
gert_lauritsen 61:52a6d0ffd8e5 119 #endif