IEC60601-1-8 Audible Alert Generator

Dependencies:   mbed

See here for more info.

IEC60601-1-8.h

Committer:
wim
Date:
2012-05-18
Revision:
0:07767204347b

File content as of revision 0:07767204347b:

/****************************************************************
 *  IEC601601-1-8 
 *
 *   This modules provides the IEC Medical Alert tones.
 *
 *
 *   Copyright(C) 2007, NXP Semiconductor
 *   All rights reserved.
 *
 *   Port to mbed 2012 (WH)
 ****************************************************************/
 
#ifndef _IEC60601_1_8_H
#define _IEC60601_1_8_H

enum Note_Type  {C4=0,D4=1,E4=2,F4=3,Fsharp4=4,G4=5,A4=6,B4=7,C5=8};      // Can address array rows with notes

enum Alarm_Type {GENERAL=0, CARDIOVASCULAR=1, PERFUSION=2, VENTILATION=3,  
                 TEMPERATURE=4, OXYGEN=5, DRUG_DELIVERY=6, POWER_FAIL=7, LOW_ALARM=8}; // Can tone_seq array rows with alarms

enum Prio_Type  {HIGH, MEDIUM, LOW, TEST};

struct wave  {                  // struct for Sine Wave Generator Signal   
  short coef;                      // IIR filter coefficient                
  long y1;                         // y[-1] value                            
  long y2;                         // y[-2] value      
};  


class IEC60601 {

public:
  IEC60601();
  void TurnOnAlarm(Prio_Type priority, Alarm_Type alarm_type);
  void TurnOffAlarm(void); 
  void TestAlarm(Note_Type active_note, int w0, int w1, int w2, int w3, int w4);           

private:  
  void _InitSequencer(void);
  void _InitDAC(void);   
  void _InitToneCoefArray(void);
  void _TimerInteruptHandler (void);      

  void _GenerateMultiTone (struct wave *t);
//  void _OutputTones(Note_Type note, unsigned char level);
  void _TurnOnNote(void);
  void _TurnOffNote(void);
  void _EnvelopeControl(void);    
  void _HighPriSequence (void);
  void _MedPriSequence (void);
  void _LowPriSequence (void);
  void _TestSequence (void);
    
  Alarm_Type _alarm_type;
  Prio_Type _priority;
  unsigned int _sequence;
  unsigned int _mscount;
  
  int _envelope;
  Note_Type _active_note;
  bool _note_on;
  int _note_level;  
  bool _envelope_on;    
  bool _envelope_off;
  
  Ticker _ticker;
  
};
#endif