This package contains a simple test of tests for various elements of the SmartBoard hardware, which is a simple baseboard designed for easy embedding. It is able to run both a semi-automatic test suite as well as allow interactive testing.
Dependencies: EthernetNetIf NTPClient_NetServices mbed
This program is most of what you need to test your SmartBoard baseboard hardware. It provides a means to test the following:
- Two channels of CAN (with a loopback cable)
- RS-232 Ports
- Analog inputs
- PWM outputs
- Ethernet port
- Real time clock
- micro SD
- USB Host port
MSCFileSystem.cpp
- Committer:
- WiredHome
- Date:
- 2011-04-04
- Revision:
- 5:42b456ce6f71
- Parent:
- 4:ca93a8d4874d
File content as of revision 5:42b456ce6f71:
/* USB Mass Storage device file system * Copyrigh (c) 2010, Igor Skochinsky * based on SDFileStorage * Copyright (c) 2008-2009, sford * * Added DEBUG_X to eliminate annoying print statements * Copyright (c) 2011, David Smart */ /* Introduction * ------------ * TODO: write one * we're basically using NXP's USBHotLite sample code, just plugging in our own FAT library */ #include "MSCFileSystem.h" #include "usbhost_inc.h" // Define this to print details //#define DEBUG_X MSCFileSystem::MSCFileSystem(const char* name) : FATFileSystem(name) { } void print_inquiry(USB_INT08U *inqReply) { // see USB Mass Storage Class � UFI Command Specification, // 4.2 INQUIRY Command printf("Inquiry reply:\n"); uint8_t tmp = inqReply[0]&0x1F; printf("Peripheral device type: %02Xh\n", tmp); if ( tmp == 0 ) printf("\t- Direct access (floppy)\n"); else if ( tmp == 0x1F ) printf("\t- none (no FDD connected)\n"); else printf("\t- unknown type\n"); tmp = inqReply[1] >> 7; printf("Removable Media Bit: %d\n", tmp); tmp = inqReply[2] & 3; printf("ANSI Version: %02Xh\n", tmp); if ( tmp != 0 ) printf("\t- warning! must be 0\n"); tmp = (inqReply[2]>>3) & 3; printf("ECMA Version: %02Xh\n", tmp); if ( tmp != 0 ) printf("\t- warning! should be 0\n"); tmp = inqReply[2]>>6; printf("ISO Version: %02Xh\n", tmp); if ( tmp != 0 ) printf("\t- warning! should be 0\n"); tmp = inqReply[3] & 0xF; printf("Response Data Format: %02Xh\n", tmp); if ( tmp != 1 ) printf("\t- warning! should be 1\n"); tmp = inqReply[4]; printf("Additional length: %02Xh\n", tmp); if ( tmp != 0x1F ) printf("\t- warning! should be 1Fh\n"); printf("Vendor Information: '%.8s'\n", &inqReply[8]); printf("Product Identification: '%.16s'\n", &inqReply[16]); printf("Product Revision: '%.4s'\n", &inqReply[32]); } int MSCFileSystem::initialise_msc() { USB_INT32S rc; USB_INT08U inquiryResult[INQUIRY_LENGTH]; //print_clock(); Host_Init(); /* Initialize the host controller */ rc = Host_EnumDev(); /* Enumerate the device connected */ if (rc != OK) { fprintf(stderr, "Could not enumerate device: %d\n", rc); return rc; } /* Initialize the mass storage and scsi interfaces */ rc = MS_Init( &_blkSize, &_numBlks, inquiryResult ); if (rc != OK) { fprintf(stderr, "Could not initialize mass storage interface: %d\n", rc); return rc; } #ifdef DEBUG_X printf("Successfully initialized mass storage interface; %d blocks of size %d\n", _numBlks, _blkSize); print_inquiry(inquiryResult); #endif // FATFileSystem supports only 512-byte blocks return _blkSize == 512 ? OK : 1; } int MSCFileSystem::disk_initialize() { if ( initialise_msc() != OK ) return 1; return 0; } int MSCFileSystem::disk_write(const char *buffer, int block_number) { if ( OK == MS_BulkSend(block_number, 1, (USB_INT08U *)buffer) ) return 0; return 1; } int MSCFileSystem::disk_read(char *buffer, int block_number) { if ( OK == MS_BulkRecv(block_number, 1, (USB_INT08U *)buffer) ) return 0; return 1; } int MSCFileSystem::disk_status() { return 0; } int MSCFileSystem::disk_sync() { return 0; } int MSCFileSystem::disk_sectors() { return _numBlks; }