Skip to content

Modification of ArduinoCore-avr to use API #329

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 7 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Port USB to API
Move CDC and MSC classes to own files.
Fix all u8/u32 entries to stantard types.
  • Loading branch information
giulcioffi authored and facchinm committed Apr 10, 2020
commit ca222ceb243c7060a89b2643a97718525b6265b8
28 changes: 16 additions & 12 deletions cores/arduino/CDC.cpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@


/* Copyright (c) 2011, Peter Barrett
**
** Permission to use, copy, modify, and/or distribute this software for
Expand All @@ -16,25 +14,31 @@
** SOFTWARE.
*/

#include "USBAPI.h"
#define RINGBUFFER_FORCE_SMALL_SIZE

#include <avr/wdt.h>
#include <util/atomic.h>
#include <avr/pgmspace.h>
#include "CDC.h"
#include "api/USBAPI.h"
#include "USBCore.h"
#include "api/Common.h"

#if defined(USBCON)

typedef struct
{
u32 dwDTERate;
u8 bCharFormat;
u8 bParityType;
u8 bDataBits;
u8 lineState;
uint32_t dwDTERate;
uint8_t bCharFormat;
uint8_t bParityType;
uint8_t bDataBits;
uint8_t lineState;
} LineInfo;

static volatile LineInfo _usbLineInfo = { 57600, 0x00, 0x00, 0x00, 0x00 };
static volatile int32_t breakValue = -1;

static u8 wdtcsr_save;
static uint8_t wdtcsr_save;

#define WEAK __attribute__ ((weak))

Expand Down Expand Up @@ -62,16 +66,16 @@ bool isLUFAbootloader()
return pgm_read_word(FLASHEND - 1) == NEW_LUFA_SIGNATURE;
}

int CDC_GetInterface(u8* interfaceNum)
int CDC_GetInterface(uint8_t* interfaceNum)
{
interfaceNum[0] += 2; // uses 2
return USB_SendControl(TRANSFER_PGM,&_cdcInterface,sizeof(_cdcInterface));
}

bool CDC_Setup(USBSetup& setup)
{
u8 r = setup.bRequest;
u8 requestType = setup.bmRequestType;
uint8_t r = setup.bRequest;
uint8_t requestType = setup.bmRequestType;

if (REQUEST_DEVICETOHOST_CLASS_INTERFACE == requestType)
{
Expand Down
104 changes: 104 additions & 0 deletions cores/arduino/CDC.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
#ifndef __CDC_H__
#define __CDC_H__

#include "Arduino.h"
#include "api/Stream.h"
#include "api/USBAPI.h"

#if defined (USBCON)

//================================================================================
//================================================================================
// Serial over CDC (Serial1 is the physical port)

#define RINGBUFFER_FORCE_SMALL_SIZE
#include "api/RingBuffer.h"

#ifndef SERIAL_BUFFER_SIZE
#if ((RAMEND - RAMSTART) < 1023)
#define SERIAL_BUFFER_SIZE 16
#else
#define SERIAL_BUFFER_SIZE 64
#endif
#endif
#if (SERIAL_BUFFER_SIZE > 256)
#error Please lower the CDC Buffer size
#endif

class Serial_ : public Stream
{
private:
int peek_buffer;
public:
Serial_() { peek_buffer = -1; };
void begin(unsigned long);
void begin(unsigned long, uint8_t);
void end(void);

virtual int available(void);
virtual int peek(void);
virtual int read(void);
virtual int availableForWrite(void);
virtual void flush(void);
virtual size_t write(uint8_t);
virtual size_t write(const uint8_t*, size_t);
using Print::write; // pull in write(str) and write(buf, size) from Print
operator bool();

//RingBuffer _rx_buffer(SERIAL_BUFFER_SIZE);

// This method allows processing "SEND_BREAK" requests sent by
// the USB host. Those requests indicate that the host wants to
// send a BREAK signal and are accompanied by a single uint16_t
// value, specifying the duration of the break. The value 0
// means to end any current break, while the value 0xffff means
// to start an indefinite break.
// readBreak() will return the value of the most recent break
// request, but will return it at most once, returning -1 when
// readBreak() is called again (until another break request is
// received, which is again returned once).
// This also mean that if two break requests are received
// without readBreak() being called in between, the value of the
// first request is lost.
// Note that the value returned is a long, so it can return
// 0-0xffff as well as -1.
int32_t readBreak();

// These return the settings specified by the USB host for the
// serial port. These aren't really used, but are offered here
// in case a sketch wants to act on these settings.
uint32_t baud();
uint8_t stopbits();
uint8_t paritytype();
uint8_t numbits();
bool dtr();
bool rts();
enum {
ONE_STOP_BIT = 0,
ONE_AND_HALF_STOP_BIT = 1,
TWO_STOP_BITS = 2,
};
enum {
NO_PARITY = 0,
ODD_PARITY = 1,
EVEN_PARITY = 2,
MARK_PARITY = 3,
SPACE_PARITY = 4,
};

};
extern Serial_ Serial;

#define HAVE_CDCSERIAL

//================================================================================
//================================================================================
// CSC 'Driver'

int CDC_GetInterface(uint8_t* interfaceNum);
int CDC_GetDescriptor(int i);
bool CDC_Setup(USBSetup& setup);

#endif

#endif
19 changes: 19 additions & 0 deletions cores/arduino/MSC.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
#if defined (USBCON)

#ifndef __MSC_H__
#define __MSC_H__

#include "api/USBAPI.h"

//================================================================================
//================================================================================
// MSC 'Driver'

int MSC_GetInterface(uint8_t* interfaceNum);
int MSC_GetDescriptor(int i);
bool MSC_Setup(USBSetup& setup);
bool MSC_Data(uint8_t rx,uint8_t tx);

#endif

#endif
115 changes: 0 additions & 115 deletions cores/arduino/PluggableUSB.cpp

This file was deleted.

74 changes: 0 additions & 74 deletions cores/arduino/PluggableUSB.h

This file was deleted.

Loading