SccChipPrimatives.h [plain text]
#ifndef scc_chip_primatives_h
#define scc_chip_primatives_h
#include "Z85C30.h"
#include "PPCSerialPort.h"
#include "SccQueuePrimatives.h"
#define MIN_BAUD (50 <<1)
enum {
R0, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15
};
void programChip(PortInfo_t *port);
void initChip(PortInfo_t *port);
void FixZeroBug(SccChannel *Channel);
bool ProbeSccDevice( PortInfo_t *Port);
bool OpenScc(PortInfo_t *Port);
void SccCloseChannel(SccChannel *Channel);
bool SccSetBaud(SccChannel *Channel, UInt32 NewBaud);
bool SccConfigureForMIDI(SccChannel *Channel, UInt32 ClockMode);
void SccChannelReset(SccChannel *Channel);
bool SccWriteByte(SccChannel *Channel, UInt8 Value);
UInt8 SccReadReg(SccChannel *Channel, UInt8 sccRegister);
bool SccWriteData(SccChannel *Channel, UInt8 Data);
UInt8 SccReadData(SccChannel *Channel);
void SccWriteIntSafe(SccChannel *Channel, UInt8 sccRegister, UInt8 control );
bool SccWriteReg(SccChannel *Channel, UInt8 sccRegister, UInt8 Value);
UInt8 SccReadByte(SccChannel *Channel);
bool SccSetParity(SccChannel *Channel, ParityType ParitySetting);
bool SccSetStopBits(SccChannel *Channel, UInt32 otSymbolic );
void SendNextChar(SccChannel *Channel);
bool SccSetDataBits(SccChannel *Channel, UInt32 numDataBits );
bool SetUpTransmit(SccChannel *Channel);
bool SuspendTX(SccChannel *Channel);
bool SccGetCTS( SccChannel *Channel );
bool SccGetDCD( SccChannel *Channel );
void SccSetCTSFlowControlEnable(SccChannel *Channel, bool enableCTS );
void SccSetDTR(SccChannel *Channel, bool assertDTR );
void PPCSerialISR(OSObject *identity, void *istate, SccChannel *Channel);
void PPCSerialTxDMAISR(void *identity, void *istate, SccChannel *Channel);
void PPCSerialRxDMAISR(void *identity, void *istate, SccChannel *Channel);
bool SccHandleExtInterrupt(OSObject *target, void *refCon,SccChannel *Channel);
void SccHandleExtErrors(SccChannel *Channel);
void SccEnableInterrupts(SccChannel *Channel, UInt32 WhichInts , InterruptState previousState);
InterruptState SccDisableInterrupts(SccChannel *Channel, UInt32 WhichInts);
void SccSetDMARegisters(SccChannel *Channel, IOService *provider);
void SccEnableDMAInterruptSources(SccChannel *Channel, bool onOff);
void SccSetupReceptionChannel(SccChannel *Channel);
void SccFreeReceptionChannel(SccChannel *Channel);
void SccdbdmaDefineReceptionCommands(SccChannel *Channel);
void SccdbdmaStartReception(SccChannel *Channel);
void SccdbdmaEndReception(SccChannel *Channel);
void SccdbdmaRxHandleCurrentPosition(SccChannel *Channel);
void SccSetupTansmissionChannel(SccChannel *Channel);
void SccFreeTansmissionChannel(SccChannel *Channel);
void SccdbdmaDefineTansmissionCommands(SccChannel *Channel);
void SccdbdmaStartTransmission(SccChannel *Channel);
void SccdbdmaEndTransmission(SccChannel *Channel);
void SccCurrentPositionDelayedHandler( thread_call_param_t arg, thread_call_param_t );
void SccStartTransmissionDelayedHandler ( thread_call_param_t self, thread_call_param_t );
void HandleRxIntTimeout(SccChannel *Channel);
void rxTimeoutHandler(OSObject *owner, IOTimerEventSource *sender);
#endif