working pedometer code using tickers

Dependencies:   mbed PulseSensor2 SCP1000 4DGL-uLCD-SE LSM9DS1_Library_cal PinDetect FatFileSystemCpp GP-20U7

Committer:
memig3
Date:
Tue Apr 21 22:56:01 2020 +0000
Revision:
1:3b016acc5c55
Parent:
0:bcfec522ef98
working pedometer code using tickers;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
memig3 0:bcfec522ef98 1 /* USB Mass Storage device file system
memig3 0:bcfec522ef98 2 * Copyrigh (c) 2010, Igor Skochinsky
memig3 0:bcfec522ef98 3 * based on SDFileStorage
memig3 0:bcfec522ef98 4 * Copyright (c) 2008-2009, sford
memig3 0:bcfec522ef98 5 */
memig3 0:bcfec522ef98 6
memig3 0:bcfec522ef98 7 /* Introduction
memig3 0:bcfec522ef98 8 * ------------
memig3 0:bcfec522ef98 9 * TODO: write one
memig3 0:bcfec522ef98 10 * we're basically using NXP's USBHotLite sample code, just plugging in our own FAT library
memig3 0:bcfec522ef98 11 */
memig3 0:bcfec522ef98 12
memig3 0:bcfec522ef98 13 #include "MSCFileSystem.h"
memig3 0:bcfec522ef98 14 #include "usbhost_inc.h"
memig3 0:bcfec522ef98 15
memig3 0:bcfec522ef98 16 MSCFileSystem::MSCFileSystem(const char* name) :
memig3 0:bcfec522ef98 17 FATFileSystem(name)
memig3 0:bcfec522ef98 18 {
memig3 0:bcfec522ef98 19 }
memig3 0:bcfec522ef98 20
memig3 0:bcfec522ef98 21 void print_inquiry(USB_INT08U *inqReply)
memig3 0:bcfec522ef98 22 {
memig3 0:bcfec522ef98 23 // see USB Mass Storage Class – UFI Command Specification,
memig3 0:bcfec522ef98 24 // 4.2 INQUIRY Command
memig3 0:bcfec522ef98 25 printf("Inquiry reply:\n");
memig3 0:bcfec522ef98 26 uint8_t tmp = inqReply[0]&0x1F;
memig3 0:bcfec522ef98 27 printf("Peripheral device type: %02Xh\n", tmp);
memig3 0:bcfec522ef98 28 if ( tmp == 0 )
memig3 0:bcfec522ef98 29 printf("\t- Direct access (floppy)\n");
memig3 0:bcfec522ef98 30 else if ( tmp == 0x1F )
memig3 0:bcfec522ef98 31 printf("\t- none (no FDD connected)\n");
memig3 0:bcfec522ef98 32 else
memig3 0:bcfec522ef98 33 printf("\t- unknown type\n");
memig3 0:bcfec522ef98 34 tmp = inqReply[1] >> 7;
memig3 0:bcfec522ef98 35 printf("Removable Media Bit: %d\n", tmp);
memig3 0:bcfec522ef98 36 tmp = inqReply[2] & 3;
memig3 0:bcfec522ef98 37 printf("ANSI Version: %02Xh\n", tmp);
memig3 0:bcfec522ef98 38 if ( tmp != 0 )
memig3 0:bcfec522ef98 39 printf("\t- warning! must be 0\n");
memig3 0:bcfec522ef98 40 tmp = (inqReply[2]>>3) & 3;
memig3 0:bcfec522ef98 41 printf("ECMA Version: %02Xh\n", tmp);
memig3 0:bcfec522ef98 42 if ( tmp != 0 )
memig3 0:bcfec522ef98 43 printf("\t- warning! should be 0\n");
memig3 0:bcfec522ef98 44 tmp = inqReply[2]>>6;
memig3 0:bcfec522ef98 45 printf("ISO Version: %02Xh\n", tmp);
memig3 0:bcfec522ef98 46 if ( tmp != 0 )
memig3 0:bcfec522ef98 47 printf("\t- warning! should be 0\n");
memig3 0:bcfec522ef98 48 tmp = inqReply[3] & 0xF;
memig3 0:bcfec522ef98 49 printf("Response Data Format: %02Xh\n", tmp);
memig3 0:bcfec522ef98 50 if ( tmp != 1 )
memig3 0:bcfec522ef98 51 printf("\t- warning! should be 1\n");
memig3 0:bcfec522ef98 52 tmp = inqReply[4];
memig3 0:bcfec522ef98 53 printf("Additional length: %02Xh\n", tmp);
memig3 0:bcfec522ef98 54 if ( tmp != 0x1F )
memig3 0:bcfec522ef98 55 printf("\t- warning! should be 1Fh\n");
memig3 0:bcfec522ef98 56 printf("Vendor Information: '%.8s'\n", &inqReply[8]);
memig3 0:bcfec522ef98 57 printf("Product Identification: '%.16s'\n", &inqReply[16]);
memig3 0:bcfec522ef98 58 printf("Product Revision: '%.4s'\n", &inqReply[32]);
memig3 0:bcfec522ef98 59 }
memig3 0:bcfec522ef98 60
memig3 0:bcfec522ef98 61 int MSCFileSystem::initialise_msc()
memig3 0:bcfec522ef98 62 {
memig3 0:bcfec522ef98 63 USB_INT32S rc;
memig3 0:bcfec522ef98 64 USB_INT08U inquiryResult[INQUIRY_LENGTH];
memig3 0:bcfec522ef98 65
memig3 0:bcfec522ef98 66 //print_clock();
memig3 0:bcfec522ef98 67 Host_Init(); /* Initialize the host controller */
memig3 0:bcfec522ef98 68 rc = Host_EnumDev(); /* Enumerate the device connected */
memig3 0:bcfec522ef98 69 if (rc != OK)
memig3 0:bcfec522ef98 70 {
memig3 0:bcfec522ef98 71 fprintf(stderr, "Could not enumerate device: %d\n", rc);
memig3 0:bcfec522ef98 72 return rc;
memig3 0:bcfec522ef98 73 }
memig3 0:bcfec522ef98 74
memig3 0:bcfec522ef98 75
memig3 0:bcfec522ef98 76 /* Initialize the mass storage and scsi interfaces */
memig3 0:bcfec522ef98 77 rc = MS_Init( &_blkSize, &_numBlks, inquiryResult );
memig3 0:bcfec522ef98 78 if (rc != OK)
memig3 0:bcfec522ef98 79 {
memig3 0:bcfec522ef98 80 fprintf(stderr, "Could not initialize mass storage interface: %d\n", rc);
memig3 0:bcfec522ef98 81 return rc;
memig3 0:bcfec522ef98 82 }
memig3 0:bcfec522ef98 83 printf("Successfully initialized mass storage interface; %d blocks of size %d\n", _numBlks, _blkSize);
memig3 0:bcfec522ef98 84 print_inquiry(inquiryResult);
memig3 0:bcfec522ef98 85 // FATFileSystem supports only 512-byte blocks
memig3 0:bcfec522ef98 86 return _blkSize == 512 ? OK : 1;
memig3 0:bcfec522ef98 87 }
memig3 0:bcfec522ef98 88
memig3 0:bcfec522ef98 89 int MSCFileSystem::disk_initialize()
memig3 0:bcfec522ef98 90 {
memig3 0:bcfec522ef98 91 if ( initialise_msc() != OK )
memig3 0:bcfec522ef98 92 return 1;
memig3 0:bcfec522ef98 93
memig3 0:bcfec522ef98 94 return 0;
memig3 0:bcfec522ef98 95 }
memig3 0:bcfec522ef98 96
memig3 0:bcfec522ef98 97 int MSCFileSystem::disk_write(const char *buffer, int block_number)
memig3 0:bcfec522ef98 98 {
memig3 0:bcfec522ef98 99 if ( OK == MS_BulkSend(block_number, 1, (USB_INT08U *)buffer) )
memig3 0:bcfec522ef98 100 return 0;
memig3 0:bcfec522ef98 101 return 1;
memig3 0:bcfec522ef98 102 }
memig3 0:bcfec522ef98 103
memig3 0:bcfec522ef98 104 int MSCFileSystem::disk_read(char *buffer, int block_number)
memig3 0:bcfec522ef98 105 {
memig3 0:bcfec522ef98 106 if ( OK == MS_BulkRecv(block_number, 1, (USB_INT08U *)buffer) )
memig3 0:bcfec522ef98 107 return 0;
memig3 0:bcfec522ef98 108 return 1;
memig3 0:bcfec522ef98 109 }
memig3 0:bcfec522ef98 110
memig3 0:bcfec522ef98 111 int MSCFileSystem::disk_status() { return 0; }
memig3 0:bcfec522ef98 112 int MSCFileSystem::disk_sync() { return 0; }
memig3 0:bcfec522ef98 113 int MSCFileSystem::disk_sectors() { return _numBlks; }