pi1541/uspi/include/uspios.h
2018-05-20 14:53:34 +10:00

124 lines
3.3 KiB
C

//
// uspios.h
//
// External functions used by the USPi library
//
// USPi - An USB driver for Raspberry Pi written in C
// Copyright (C) 2014-2016 R. Stange <rsta2@o2online.de>
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
//
#ifndef _uspios_h
#define _uspios_h
#ifdef __cplusplus
extern "C" {
#endif
//
// System configuration
//
// (Change this before you build the USPi library!)
//
#define GPU_L2_CACHE_ENABLED // normally enabled (can be disabled in config.txt)
#define HZ 100 // timer ticks / second (set this to your timer interrupt frequency)
// Default keyboard map (enable only one)
//#define USPI_DEFAULT_KEYMAP_DE
//#define USPI_DEFAULT_KEYMAP_ES
//#define USPI_DEFAULT_KEYMAP_FR
//#define USPI_DEFAULT_KEYMAP_IT
#define USPI_DEFAULT_KEYMAP_UK
//#define USPI_DEFAULT_KEYMAP_US
// Undefine this if you want to use your own implementation of the functions in uspi/util.h
#define USPI_PROVIDE_MEM_FUNCTIONS // mem*()
#define USPI_PROVIDE_STR_FUNCTIONS // str*()
//
// Memory allocation
//
// (Must work from interrupt context)
//
void *malloc (unsigned nSize); // result must be 4-byte aligned
void free (void *pBlock);
//
// Timer
//
void MsDelay (unsigned nMilliSeconds);
void usDelay (unsigned nMicroSeconds);
typedef void TKernelTimerHandler (unsigned hTimer, void *pParam, void *pContext);
// returns the timer handle (hTimer)
unsigned StartKernelTimer (unsigned nHzDelay, // in HZ units (see "system configuration" above)
TKernelTimerHandler *pHandler,
void *pParam, void *pContext); // handed over to the timer handler
void CancelKernelTimer (unsigned hTimer);
//
// Interrupt handling
//
typedef void TInterruptHandler (void *pParam);
// USPi uses USB IRQ 9
void ConnectInterrupt (unsigned nIRQ, TInterruptHandler *pHandler, void *pParam);
//
// Property tags (ARM -> VC)
//
// See: https://github.com/raspberrypi/firmware/wiki/Mailboxes
//
// returns 0 on failure
int SetPowerStateOn (unsigned nDeviceId); // "set power state" to "on", wait until completed
// returns 0 on failure
int GetMACAddress (unsigned char Buffer[6]); // "get board MAC address"
//
// Logging
//
// Severity (change this before building if you want different values)
#define LOG_ERROR 1
#define LOG_WARNING 2
#define LOG_NOTICE 3
#define LOG_DEBUG 4
void LogWrite (const char *pSource, // short name of module
unsigned Severity, // see above
const char *pMessage, ...); // uses printf format options
//
// Debug support
//
#ifndef NDEBUG
// display "assertion failed" message and halt
void uspi_assertion_failed (const char *pExpr, const char *pFile, unsigned nLine);
// display hex dump (pSource can be 0)
void DebugHexdump (const void *pBuffer, unsigned nBufLen, const char *pSource /* = 0 */);
#endif
#ifdef __cplusplus
}
#endif
#endif