source for demo Book And Plug

Dependencies:   APA102

Dependents:   BookAndPlug

BNP_Ctrl.h

Committer:
vrou44
Date:
2018-05-17
Revision:
1:8c2e60bafc91
Parent:
0:5648c217e527

File content as of revision 1:8c2e60bafc91:

/*
 * BNP_Ctrl.h
 *
 *  Created on: 23 mars 2018
 *      Author: hd01073
 */

#ifndef BNP_CTRL_H_
#define BNP_CTRL_H_

#include "mbed.h"
#include "mbed_events.h"

extern EventQueue *mainQueueP ;

class BNP_Ctrl {

public:
	enum Evt {
		irisInitDone,
		irisPositionReached,
		irisPositionTimeOut,
		oprTerminalReserve,
		oprPlugSelection,
		oprTerminalRelease,
		currentDetected,
		currentInterrupted,
		oprResumptionRequest,
		timeoutFired,
		delayExpired
	};

	enum IrisPosition {
		irisNoPostion = -1 ,
		irisAtStopPosition = 0 ,
		irisAtPlugCPosition = 1 ,
		irisAtPlugEPosition = 3 ,
		irisAtShieldPosition = 5 ,
		irisAtCameraPostion = 7 ,
		irisBeyondCamera = 8
	};

	enum AudioTrack {
		noTrack = 0 ,
		trackPlugE = 1 ,
		trackPlugC = 2 ,
		trackResumption = 3
	};

public:
	static BNP_Ctrl *singleInstP ;
	static BNP_Ctrl &getInst(void) {
		if (!singleInstP) {
			singleInstP = new BNP_Ctrl() ;
		}
		return *singleInstP ;
	} ;

	static void deleteInst(void) {
		if (!singleInstP) delete singleInstP ;
	};

	void init(void) ;
	static void signalEvent(Evt evt) ;


private :
	BNP_Ctrl(void) :
		state(noState),
		autoRepeatTimerId(0),
		timeoutId(0),
		delayId(0)
	{
	} ;

	~BNP_Ctrl()
	{
	} ;

	static void instanceFeedFsm(Evt evt)
	{
		singleInstP->feedFsm(evt) ;
	} ;
	static void plugConnectDetect(void) ;
	static void plugDisconnectDetect(void) ;
	static void plugConnectTimeoutHdlr(void) ;
	static void internalDelayExpiredHdlr(void) ;
	void feedFsm(Evt evt) ;

private :
	enum State {
		noState,
		initInProgress,
		idleNoLed,
		idleWithLed,
		terminalSelected,
		plugPresentationInProgress,
		plugPresented,
		waitingPlugConnection,
		chargingInProgress,
		shieldPresentationInProgress,
		chargingSuspended
	};

	State state ;
	int autoRepeatTimerId ;
	int timeoutId ;
	int delayId ;
};



#endif /* BNP_CTRL_H_ */