/*
 *	clipleds.h
 *
 *	LED僔乕働儞僒
 *
 *	CLiP - Common Library for P/ECE
 *	Copyright (C) 2015-2017 Naoyuki Sawa
 *
 *	* Sat Feb 28 21:13:50 JST 2015 Naoyuki Sawa
 *	- 1st 儕儕乕僗丅
 *	- clipleds.h,clipleds.c傪戝暆偵曄峏偟傑偟偨丅
 *	  曄峏慜偺clipleds.h,clipleds.c偼傕偆巊梡偟傑偣傫偑丄偙傟傑偱埨掕偟偰摦嶌偟偰偄偨偺偱丄
 *	  崱屻偺嶲峫偺偨傔偵丄乽keep/16_LED僔乕働儞僒曄峏慜曐懚.20150228/乿偵曐懚偟偰偍偔偙偲偵偟傑偟偨丅
 *	* Sun Mar 01 08:36:08 JST 2015 Naoyuki Sawa
 *	- dLedSeqC.exe傪曄峏偟偰僀儞僩儘晹暘偺埑弅僨乕僞僒僀僘傪奿擺偟側偔側偭偨帠偵敽偄丄摉儌僕儏乕儖偺張棟傕曄峏偟傑偟偨丅
 *	- 傗傗戝暆側曄峏偵側偭偨偺偱丄曄峏慜偺僐乕僪偼摉儌僕儏乕儖撪偵偼巆偟偰偁傝傑偣傫丅
 *	  曄峏慜偺張棟偱傕摦嶌妋擣嵪傒偩偭偨偺偱丄崱屻曄峏慜偺僐乕僪傪嶲峫偵偡傞応崌偼丄慜夞偺傾乕僇僀僽傪嶲徠偟偰偔偩偝偄丅
 *	* Tue May 05 17:15:43 JST 2015 Naoyuki Sawa
 *	- LedSeqCh_PlayNo()傪捛壛偟傑偟偨丅
 *	* Mon Jun 01 21:03:49 JST 2015 Naoyuki Sawa
 *	- LedSeq_Exec()偑揥奐僶僢僼傽傪1(徚摂)偱僋儕傾偡傞張棟傪嶍彍偟傑偟偨丅
 *	  崱屻偼丄傾僾儕働乕僔儑儞偑LedSeq_Exec()傪屇傃弌偡慜偵揥奐僶僢僼傽傪僋儕傾偟偰壓偝偄丅
 *	  1(徚摂)埲奜偺抣偱僋儕傾偟偨傝丄LED枅偵堎側傞抣偱僋儕傾偡傞帠傕壜擻偱偡丅
 *	  偦偆偡傞帠偵傛偭偰丄僨乕僞嵞惗拞偱側偄LED偺僨僼僅儖僩婸搙傪LED枅偵屄暿偵愝掕弌棃傑偡丅
 *	* Fri Jun 05 21:32:39 JST 2015 Naoyuki Sawa
 *	- dLedSeqC.exe偺弌椡僨乕僞宍幃傪曄峏偟偨帠偵敽偄丄摉儌僕儏乕儖偺張棟傕曄峏偟傑偟偨丅
 *	  徻嵶偼丄clip/tool/dLedSeqC/winapp.h 偺摨擔偺僐儊儞僩傪嶲徠偟偰偔偩偝偄丅
 *	* Sun Jun 07 19:29:17 JST 2015 Naoyuki Sawa
 *	- LedSeqCh_GetStat()偑掆巭拞傪敾抐偡傞僞僀儈儞僌偑1僼儗乕儉抶傟偰偄偨栤戣傪廋惓偟傑偟偨丅
 *	  劆仩廋惓慜偺栤戣揰
 *	  劆- LedSeq_Exec()偼嵟廔僼儗乕儉傪嵞惗偟偨捈屻偵pLedSeqCh->pSeq=NULL偵偼側傝傑偣傫丅
 *	  劆  師夞偵LedSeq_Exec()偑屇偽傟偰廔抂晞崌傪撉傒弌偟偨帪偵pLedSeqCh->pSeq=NULL偵側傝傑偡丅
 *	  劆  LedSeqCh_GetStat()偼pLedSeqCh->pSeq=NULL偐偳偆偐偩偗傪尒偰(嵞惗拞/掆巭拞)傪曉偟偰偄傑偟偨丅
 *	  劆  偮傑傝丄LedSeqCh_GetStat()偑掆巭拞傪敾抐偡傞僞僀儈儞僌偑1僼儗乕儉抶傟偰偄傑偟偨丅
 *	  劆- 晛抜偼忋婰偺嫇摦偑戝偒側栤戣偵側傞帠偼柍偄偺偱偡偑丄壓婰偺働乕僗偵偍偄偰栤戣偵側傞帠偑敪惗偟傑偟偨丅
 *	  劆  傾僾儕働乕僔儑儞偑LedSeqCh_GetStat()偱摿掕偺僔乕働儞僒僠儍僱儖傪億乕儕儞僌偟丄掆巭偟偨傜師偺僨乕僞傪嵞惗奐巒偡傞傛偆側働乕僗偱偡丅
 *	  劆  (埲壓偺傛偆側扨弮側梫審側傜偽億乕儕儞僌偣偢偲傕僨乕僞偱儖乕僾偝偣傟偽椙偄偺偱偡偑丄偁偔傑偱愢柧偺偨傔偺僒儞僾儖偲峫偊偰偔偩偝偄丅)
 *	  劆  劆//--- LedDef.txt ---
 *	  劆  劆Test1
 *	  劆  劆  play  Data1
 *	  劆  劆  end
 *	  劆  劆Data1
 *	  劆  劆  data  31
 *	  劆  劆  data  31
 *	  劆  劆  data  31
 *	  劆  劆  end
 *	  劆  劆//--- app.c ---
 *	  劆  劆void app_main() {
 *	  劆  劆  ST_LedSeq* pLedSeq=LedSeq_New((LedCh_Max+1),1);	//{{2016/03/04曄峏:娭悢柤傪丄媽:LedSeq_Init()佀怴:LedSeq_New()丄媽:LedSeq_InitStatic()佀怴:LedSeq_Init() 偵曄峏偟傑偟偨丅}}
 *	  劆  劆  for(;;){
 *	  劆  劆    uint8_t Buffer[(LedCh_Max+1)];
 *	  劆  劆    schedule();
 *	  劆  劆    if(!LedSeqCh_GetStat(pLedSeq,0)){LedSeqCh_PlayNo(pLedSeq,0,TBL_LedSeqNo,LedSeqNo_Test1);}
 *	  劆  劆    memset(Buffer,1,(LedCh_Max+1));//1=徚摂
 *	  劆  劆    LedSeq_Exec(pLedSeq,Buffer);
 *	  劆  劆    printf("%d ",Buffer[0]);
 *	  劆  劆  }
 *	  劆  劆}
 *	  劆  劆//--- 寢壥 ---
 *	  劆  劆31 31 31 1 31 31 31 1 31 31 31 1 31 31 31 1
 *	  劆  劆         ~          ~          ~          ~ 掆巭拞偺敾抐偑1僼儗乕儉抶傟偰丄惓偟偄楢懕嵞惗偵側偭偰偄側偄丅
 *	  劆仩廋惓偟偨曽朄
 *	  劆- LedSeq_Exec()偺摦嶌偼丄廋惓慜偲曄偊偰偄傑偣傫丅
 *	  劆  LedSeqCh_GetStat()偺摦嶌傪曄偊傞帠偱丄廋惓偟傑偟偨丅嬶懱揑偵偼丄埲壓偺捠傝偱偡丅
 *	  劆- LedSeqCh_GetStat()偼丄摉奩僔乕働儞僒僠儍僱儖偑嵞惗拞側傜偽丄師偺1僼儗乕儉傪僨僐乕僪偟偰傒偰丄僨僐乕僪偱偒側偗傟偽掆巭拞偲敾抐偡傞傛偆偵偟傑偟偨丅
 *	  劆  尩枾偵偼丄師偺1僼儗乕儉傪慡晹僨僐乕僪偡傞昁梫偼柍偔丄愭摢晹暘偑僨僐乕僪偱偒傟偽僼儗乕儉慡懱偑僨僐乕僪壜擻偲敾抐弌棃傑偡丅
 *	  劆  忋婰偺傛偆偵曄峏偟偨寢壥偼丄埲壓偺捠傝偱偡丅
 *	  劆  劆//--- 寢壥 ---
 *	  劆  劆31 31 31 31 31 31 31 31 31 31 31 31
 *	  劆仩廋惓偵傛傞僨儊儕僢僩偲丄傾僾儕働乕僔儑儞偺拲堄揰
 *	  劆- 嵞惗拞偺僔乕働儞僒僠儍僱儖偵懳偡傞LedSeqCh_GetStat()屇傃弌偟偺張棟帪娫偑丄挿偔偐偐傞傛偆偵側傝傑偟偨丅
 *	  劆  廋惓慜偼扨偵pLedSeqCh->pSeq偑NULL偐偳偆偐傪尒傞偩偗偩偭偨偺偑丄廋惓屻偼師偺1僼儗乕儉偺愭摢晹暘傪僨僐乕僪偟偰傒傞帪娫偑妡偐傞偐傜偱偡丅
 *	  劆  彯丄掆巭拞偺僔乕働儞僒僠儍僱儖偵懳偡傞LedSeqCh_GetStat()屇傃弌偟偱偼丄忋婰偺張棟偼峴傢偢偵掆巭拞偲敾抐偱偒傞偺偱丄帪娫偼妡偐傝傑偣傫丅
 *	  劆- LedSeqCh_GetStat()偺屇傃弌偟僐僗僩偑彮偟崅偔側偭偨偺偱丄傾僾儕働乕僔儑儞偼柍埮偵LedSeqCh_GetStat()傪屇傃弌偝側偄傛偆拲堄偟偰偔偩偝偄丅
 *	  劆  嬌抂偵旔偗傞昁梫偼桳傝傑偣傫偑丄慡僔乕働儞僒僠儍僱儖偵懳偟偰昁梫偺柍偄億乕儕儞僌傪峴偆傛偆側丄柍懯側張棟偼峴傢側偄傛偆偵偟偰偔偩偝偄丅
 *	* Tue Aug 25 21:51:09 JST 2015 Naoyuki Sawa
 *	- LedSeqCh_SetHide()傪捛壛偟傑偟偨丅
 *	  旕昞帵偵愝掕偝傟偨僠儍僱儖偼丄LedSeq_Exec()偑屇偽傟偨帪偵丄嵞惗張棟偼恑峴偟傑偡偑丄揥奐僶僢僼傽偵奿擺偟傑偣傫丅
 *	- '摿掕偺僠儍僱儖傪堦帪揑偵旕昞帵(=姰慡摟柧)偵偟偨偄'偲偄偆梫審偑惗偠偨偨傔偵丄捛壛偟偨娭悢偱偡丅
 *	  彯丄偙偺梫審偼丄LedSeqCh_SetAtt()偱偼幚尰弌棃傑偣傫丅
 *	  尭悐検傪嵟戝偵偟偰傕丄婸搙1(晄摟柧崟)傑偱偟偐曄壔偣偢丄婸搙0(摟柧)偵偼側傜側偄偐傜偱偡丅
 *	* Wed Nov 18 21:37:53 JST 2015 Naoyuki Sawa
 *	- 'extern "C" {'乣'}'偱埻傒傑偟偨丅.cpp傪娷傓Win32僾儘僕僃僋僩偐傜傕僀儞僋儖乕僪弌棃傞傛偆偵偡傞偨傔偱偡丅
 *	* Fri Mar 04 21:22:19 JST 2016 Naoyuki Sawa
 *	- 娭悢柤傪丄媽:LedSeq_Init()佀怴:LedSeq_New()丄媽:LedSeq_InitStatic()佀怴:LedSeq_Init() 偵曄峏偟傑偟偨丅
 *	  嵟嬤嶌惉偟偰偄傞懠偺儌僕儏乕儖偺娭悢柤偵崌傢偣傞偨傔偱偡丅
 *	* Wed Aug 03 21:50:35 JST 2016 Naoyuki Sawa
 *	- clipleds.c偺LedSeqCh_ExecDat()偵偍偄偰丄儖乕僾晹暘偺傾僪儗僗傪庢摼偡傞張棟傪丄BytePairEncodingDecoder_GetEndPtr()傪棙梡偡傞傛偆偵曄峏偟傑偟偨丅
 *	  偙傟傑偱偼丄ST_BytePairEncodingDecoder峔憿懱偺僼傿乕儖僪傪捈愙嶲徠偟偰寁嶼偟偰偄傑偟偨偑丄
 *	  2016/04/28偵frambpe.c儌僕儏乕儖偵BytePairEncodingDecoder_GetEndPtr()傪捛壛偟偰偄偨帠偵敽偄丄BytePairEncodingDecoder_GetEndPtr()傪棙梡偡傞傛偆偵曄峏偟傑偟偨丅
 *	  張棟偺寢壥偼曄傢傝傑偣傫丅
 *	* Sun Oct 09 21:21:44 JST 2016 Naoyuki Sawa
 *	- LedSeqCh_SetHide()傪攑巭偟丄LedSeqCh_SetMode()傪捛壛偟傑偟偨丅
 *	  曄峏慜偺LedSeqCh_SetHide(乣,1)偵憡摉偡傞婡擻偼丄曄峏屻偼LedSeqCh_SetMode(乣,LedSeq_Mode_Hide)偲側傝傑偡丅
 *	  曄峏慜偺LedSeqCh_SetHide(乣,0)偵憡摉偡傞婡擻偼丄曄峏屻偼LedSeqCh_SetMode(乣,LedSeq_Mode_Normal)偲側傝傑偡丅
 *	* Sat Feb 25 22:50:01 JST 2017 Naoyuki Sawa
 *	- LedSeq_Exec()偵堷悢fnFilter傪捛壛偟傑偟偨丅
 *	  捛壛偟偨棟桼偼丄埲壓偺捠傝偱偡丅
 *	  偙傟傑偱傕丄LedSeq_Exec()傪幚峴偟偨寢壥偺僶僢僼傽偺撪梕偵懳偟偰丄傾僾儕働乕僔儑儞懁偱婸搙傪曄姺偡傞帠偼壜擻偱偟偨丅
 *	  埥偄偼丄摿掕偺LED僔乕働儞僒僠儍僱儖傪堦帪揑偵摟柧偵偟偨偄応崌偼丄LedSeqCh_SetMode(乣,LedSeq_Mode_Hide)傪巜掕偡傞帠傕壜擻偱偟偨丅
 *	  偟偐偟丄慜幰偼LED僠儍僱儖扨埵偺曄姺偱偁傝丄暋悢偺LED僨乕僞偑摨堦偺LED僠儍僱儖傪岝傜偣偰偄偨応崌丄曅曽偺LED僨乕僞偺婸搙偩偗傪曄姺偡傞帠偼弌棃傑偣傫偱偟偨丅
 *	  傑偨丄屻幰偼LED僔乕働儞僒僠儍僱儖扨埵偺愝掕偱偁傝丄偁傞LED僨乕僞偺堦晹暘偩偗偺婸搙傪曄姺偡傞帠偼弌棃傑偣傫偱偟偨丅
 *	  崱夞丄傾僾儕働乕僔儑儞嶌惉拞偵丄偁傞LED僨乕僞偺摿掕偺晹暘偺婸搙偩偗傪慖戰揑偵桳岠偵偟偨偄丄偲偄偆梫朷偑惗偠偨偺偱丄僼傿儖僞娭悢傪捛壛偟偰幚尰偡傞帠偵偟傑偟偨丅
 *	  LedSeq_Exec()偺張棟僆乕僶乕僿僢僪偑懡彮憹偊傑偡偑丄尦乆偺僨僐乕僪晧壸偵妑傋傟偽偝傎偳戝偒偔側偄偺偱偼側偄偐偲巚偄傑偡丅(傾僾儕働乕僔儑儞掕媊偺僼傿儖僞娭悢偺張棟晧壸師戞偱偡偑乧)
 *	  彯丄僼傿儖僞娭悢偵偼丄LED僔乕働儞僒僠儍僱儖斣崋偲LED僠儍僱儖斣崋偼搉偝傟傑偡偑丄偳偺LED僨乕僞偑嵞惗拞偐偼搉偝傟傑偣傫丅(尦乆丄嵞惗奐巒偟偰偟傑偊偽丄奐巒揰偑偳偺LED僨乕僞偩偭偨偐傪幆暿偡傞忣曬偼曐帩偟偰偄側偄偺偱)
 *	  搉偝傟偨LED僔乕働儞僒僠儍僱儖斣崋偲LED僠儍僱儖斣崋偵懳偟偰丄婸搙曄姺偑昁梫偐偳偆偐傪敾抐偡傞忣曬偼丄傾僾儕働乕僔儑儞懁偱曐帩偟偰壓偝偄丅
 *	- 傾僾儕働乕僔儑儞掕媊偺僼傿儖僞娭悢偼丄堷悢Dimmer(0=摟柧,1=徚摂,2乣LedSeq_Dimmer_Max)傪丄堷悢pLedSeq,iLedSeqCh,iLedCh傗丄傾僾儕働乕僔儑儞懁偱曐帩偟偰偄傞忣曬傪嶲徠偟偰婸搙傪曄姺偟丄曄姺屻偺婸搙(0=摟柧,1=徚摂,2乣LedSeq_Dimmer_Max)傪曉偟偰壓偝偄丅
 *	  仩傾僾儕働乕僔儑儞掕媊偺僼傿儖僞娭悢偺幚憰椺:
 *	  劆static int fnFilter(ST_LedSeq* pLedSeq, int iLedSeqCh, int iLedCh, int Dimmer) {
 *	  劆  if(bSpecialFlag) { //壗傜偐偺摿庩墘弌拞側傜偽乧
 *	  劆    if(iLedSeqCh == LedSeqCh_Dir) { //墘弌梡偺LED僔乕働儞僒僠儍僱儖側傜偽乧
 *	  劆      if((iLedCh >= LedCh_Up1) && (iLedCh <= LedCh_Up2)) { Dimmer = 0; }	//忋晹LED側傜偽摟柧偵偡傞丅
 *	  劆      if((iLedCh >= LedCh_Dn1) && (iLedCh <= LedCh_Dn2)) { if((Dimmer >= 2) ( Dimmer = max(((Dimmer - 1) * 2) + 1, LedSeq_Dimmer_Max); }	//壓晹LED側傜偽丄婸搙傪擇攞偵偡傞丅
 *	  劆    }
 *	  劆  }
 *	  劆  return Dimmer;
 *	  劆}
 *	- 傾僾儕働乕僔儑儞掕媊偺僼傿儖僞娭悢偼丄(0=摟柧,1=徚摂,2乣LedSeq_Dimmer_Max)偺斖埻奜偺婸搙傪曉偟偰偼偄偗傑偣傫丅
 *	  傾僾儕働乕僔儑儞掕媊偺僼傿儖僞娭悢偑忋婰偺斖埻奜偺婸搙傪曉偡偲丄LedSeqCh_ExecDat()撪偺専嵏偱僄儔乕掆巭偟傑偡丅
 */
#ifndef __CLIP_LEDS_H__
#define __CLIP_LEDS_H__
#ifdef  __cplusplus
extern "C" {
#endif//__cplusplus
/****************************************************************************
 *	掕悢丄峔憿懱
 ****************************************************************************/
#define LedSeq_Dimmer_Max		31		//婸搙偺嵟戝抣			2乣255偺斖埻偱挷惍壜擻丅0(摟夁)偲1(徚摂)偼屌掕側偺偱丄嵟戝婸搙偼2埲忋偱側偔偰偼側傜側偄丅
/*--------------------------------------------------------------------------*/
//{{2016/10/09捛壛:LedSeqCh_SetHide()傪攑巭偟丄LedSeqCh_SetMode()傪捛壛偟傑偟偨丅
//ST_LedSeqCh.Mode
#define LedSeq_Mode_Hide		0		//旕昞帵
#define LedSeq_Mode_Normal		1		//捠忢(忋彂偒)			LedSeq_New(),枖偼,LedSeq_Init()偱弶婜壔偟偨捈屻偺僨僼僅儖僩抣偼偙傟偱偡丅
#define LedSeq_Mode_Add			2		//壛嶼
#define LedSeq_Mode_Sub			3		//尭嶼
#define LedSeq_Mode_Max			3
//}}2016/10/09捛壛:LedSeqCh_SetHide()傪攑巭偟丄LedSeqCh_SetMode()傪捛壛偟傑偟偨丅
/*--------------------------------------------------------------------------*/
//{{2015/06/05曄峏:dLedSeqC.exe偺弌椡僨乕僞宍幃傪曄峏偟偨帠偵敽偄丄摉儌僕儏乕儖偺張棟傕曄峏偟傑偟偨丅徻嵶偼丄clip/tool/dLedSeqC/winapp.h 偺摨擔偺僐儊儞僩傪嶲徠偟偰偔偩偝偄丅
////LED僔乕働儞僒僠儍僱儖
//typedef struct _ST_LedSeqCh {
//	const unsigned char*		pSeq;		//+ 0, 4 嵞惗拞偺LED僔乕働儞僗(NULL=掆巭)
//	const unsigned char*		pDatLoop;	//+ 4, 4 嵞惗拞偺LED僨乕僞偺儖乕僾晹暘偺傾僪儗僗丅僀儞僩儘晹暘傪嵞惗姰椆偟偨帪偵奿擺偡傞丅(NULL=僀儞僩儘晹暘傪嵞惗拞)
//	unsigned char			Att;		//+ 8, 1 尭悐検
//	unsigned char			resv[3];	//+ 9, 3 (僷僨傿儞僌)
//	ST_BytePairEncodingDecoder	Decoder;	//+12,16 揥奐僗僩儕乕儉
//} ST_LedSeqCh;					//=28
//伀2015/06/05曄峏:dLedSeqC.exe偺弌椡僨乕僞宍幃傪曄峏偟偨帠偵敽偄丄摉儌僕儏乕儖偺張棟傕曄峏偟傑偟偨丅徻嵶偼丄clip/tool/dLedSeqC/winapp.h 偺摨擔偺僐儊儞僩傪嶲徠偟偰偔偩偝偄丅
//LED僔乕働儞僒僠儍僱儖
typedef struct _ST_LedSeqCh {
	const unsigned char*		pSeq;		//+ 0, 4 嵞惗拞偺LED僔乕働儞僗(NULL=掆巭)
	const unsigned char*		pDatLoop;	//+ 4, 4 嵞惗拞偺LED僨乕僞偺儖乕僾晹暘偺傾僪儗僗丅僀儞僩儘晹暘傪嵞惗姰椆偟偨帪偵奿擺偡傞丅(NULL=僀儞僩儘晹暘傪嵞惗拞)
	unsigned short			iLedCh_Lo;	//+ 8, 2 晄摟柧側婸搙僨乕僞偑懚嵼偡傞LED僠儍僱儖斣崋偺壓尷
	unsigned short			iLedCh_Hi;	//+10, 2 晄摟柧側婸搙僨乕僞偑懚嵼偡傞LED僠儍僱儖斣崋偺忋尷
	ST_BytePairEncodingDecoder	Decoder;	//+12,16 揥奐僗僩儕乕儉
	unsigned char			Att;		//+28, 1 尭悐検		仼劍LedSeqCh_Play(),LedSeq_Stop()偱偼曄壔偣偢偵慜偺忬懺傪堷偒宲偓傑偡丅
//{{2016/10/09曄峏:LedSeqCh_SetHide()傪攑巭偟丄LedSeqCh_SetMode()傪捛壛偟傑偟偨丅 劆
//	unsigned char			Hide;		//+29, 1 旕昞帵僼儔僌	仼劎	//{{2015/08/25捛壛:LedSeqCh_SetHide()傪捛壛偟傑偟偨丅}}
//伀2016/10/09曄峏:LedSeqCh_SetHide()傪攑巭偟丄LedSeqCh_SetMode()傪捛壛偟傑偟偨丅 劆
	unsigned char			Mode;		//+29, 1 儌乕僪		仼劊	//{{2016/10/09捛壛:LedSeqCh_SetHide()傪攑巭偟丄LedSeqCh_SetMode()傪捛壛偟傑偟偨丅}}
//}}2016/10/09曄峏:LedSeqCh_SetHide()傪攑巭偟丄LedSeqCh_SetMode()傪捛壛偟傑偟偨丅
							//+30, 2 (僷僨傿儞僌)
} ST_LedSeqCh;						//=32
//}}2015/06/05曄峏:dLedSeqC.exe偺弌椡僨乕僞宍幃傪曄峏偟偨帠偵敽偄丄摉儌僕儏乕儖偺張棟傕曄峏偟傑偟偨丅徻嵶偼丄clip/tool/dLedSeqC/winapp.h 偺摨擔偺僐儊儞僩傪嶲徠偟偰偔偩偝偄丅
/*--------------------------------------------------------------------------*/
//LED僔乕働儞僒
typedef struct _ST_LedSeq {
	unsigned short			nLedCh;
	unsigned short			nLedSeqCh;
    //	unsigned char			TBL_Dimmer[(nLedCh+3)&~3];
    //	ST_LedSeqCh			TBL_LedSeqCh[nLedSeqCh];
} ST_LedSeq;
/****************************************************************************
 *	傾僾儕働乕僔儑儞梡娭悢
 ****************************************************************************/
ST_LedSeq* LedSeq_New(int nLedCh, int nLedSeqCh);
void LedSeq_Init(ST_LedSeq* pLedSeq, int nLedCh, int nLedSeqCh);
//{{2017/02/25曄峏:LedSeq_Exec()偵堷悢fnFilter傪捛壛偟傑偟偨丅
//void LedSeq_Exec(ST_LedSeq* pLedSeq, unsigned char Buffer[/*nLedCh*/]);
//伀2017/02/25曄峏:LedSeq_Exec()偵堷悢fnFilter傪捛壛偟傑偟偨丅
void LedSeq_Exec(ST_LedSeq* pLedSeq, unsigned char Buffer[/*nLedCh*/], int (*fnFilter/*NULL壜*/)(ST_LedSeq* pLedSeq, int iLedSeqCh, int iLedCh, int Dimmer));
//}}2017/02/25曄峏:LedSeq_Exec()偵堷悢fnFilter傪捛壛偟傑偟偨丅
void LedSeqCh_Play(ST_LedSeq* pLedSeq, int iLedSeqCh, const void* pSeq);
void LedSeqCh_Stop(ST_LedSeq* pLedSeq, int iLedSeqCh);
void LedSeq_Stop(ST_LedSeq* pLedSeq);
int LedSeqCh_GetStat(ST_LedSeq* pLedSeq, int iLedSeqCh);
void LedSeqCh_SetAtt(ST_LedSeq* pLedSeq, int iLedSeqCh, int Att);
//{{2016/10/09曄峏:LedSeqCh_SetHide()傪攑巭偟丄LedSeqCh_SetMode()傪捛壛偟傑偟偨丅
//void LedSeqCh_SetHide(ST_LedSeq* pLedSeq, int iLedSeqCh, int Hide);	//{{2015/08/25捛壛:LedSeqCh_SetHide()傪捛壛偟傑偟偨丅}}
//伀2016/10/09曄峏:LedSeqCh_SetHide()傪攑巭偟丄LedSeqCh_SetMode()傪捛壛偟傑偟偨丅
void LedSeqCh_SetMode(ST_LedSeq* pLedSeq, int iLedSeqCh, int Mode);	//{{2016/10/09捛壛:LedSeqCh_SetHide()傪攑巭偟丄LedSeqCh_SetMode()傪捛壛偟傑偟偨丅}}
//}}2016/10/09曄峏:LedSeqCh_SetHide()傪攑巭偟丄LedSeqCh_SetMode()傪捛壛偟傑偟偨丅
void LedSeq_SetDimmer(ST_LedSeq* pLedSeq, int iLedCh, int Dimmer);
void LedSeq_SetDimmerNum(ST_LedSeq* pLedSeq, int iLedCh, int nLedCh, int Dimmer);
void LedSeq_SetDimmerAll(ST_LedSeq* pLedSeq, int Dimmer);
/****************************************************************************
 *	dLedSeqC.exe偑弌椡偟偨僶僀僫儕宍幃傪埖偆偨傔偺儐乕僥傿儕僥傿娭悢
 ****************************************************************************/
#define USE_LEDDEF_BIN	//儐乕僥傿儕僥傿娭悢偑晄梫側傜偽偙偺僔儞儃儖掕媊傪僐儊儞僩傾僂僩偟偰偔偩偝偄丅
#ifdef  USE_LEDDEF_BIN
void LedSeqCh_PlayNo(ST_LedSeq* pLedSeq, int iLedSeqCh, const void* pLedDefBin, int iLedSeqNo);
#endif//USE_LEDDEF_BIN
/****************************************************************************
 *	尭悐慜偺婸搙偲丄尭悐検偲丄尭悐屻偺婸搙偺娭學
 ****************************************************************************/
//劇劅劅劍劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劉
//劆尭悐劆丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂 尭悐検 丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂丂劆
//劆慜偺劌劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劎
//劆婸搙劆 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30埲忋劆
//劌劅劅劑劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劎
//劆  0 劆 0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0    劆
//劆  1 劆 1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1    劆
//劆  2 劆 2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  1    劆
//劆  3 劆 3  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  1    劆
//劆  4 劆 4  3  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  1    劆
//劆  5 劆 5  4  3  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  1    劆
//劆  6 劆 6  5  4  3  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  1    劆
//劆  7 劆 7  6  5  4  3  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  1    劆
//劆  8 劆 8  7  6  5  4  3  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  1    劆
//劆  9 劆 9  8  7  6  5  4  3  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  1    劆
//劆 10 劆10  9  8  7  6  5  4  3  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  1    劆
//劆 11 劆11 10  9  8  7  6  5  4  3  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  1    劆
//劆 12 劆12 11 10  9  8  7  6  5  4  3  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  1    劆
//劆 13 劆13 12 11 10  9  8  7  6  5  4  3  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  1    劆
//劆 14 劆14 13 12 11 10  9  8  7  6  5  4  3  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  1    劆
//劆 15 劆15 14 13 12 11 10  9  8  7  6  5  4  3  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  1    劆
//劆 16 劆16 15 14 13 12 11 10  9  8  7  6  5  4  3  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  1    劆
//劆 17 劆17 16 15 14 13 12 11 10  9  8  7  6  5  4  3  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  1    劆
//劆 18 劆18 17 16 15 14 13 12 11 10  9  8  7  6  5  4  3  2  2  2  2  2  2  2  2  2  2  2  2  2  2  1    劆
//劆 19 劆19 18 17 16 15 14 13 12 11 10  9  8  7  6  5  4  3  2  2  2  2  2  2  2  2  2  2  2  2  2  1    劆
//劆 20 劆20 19 18 17 16 15 14 13 12 11 10  9  8  7  6  5  4  3  2  2  2  2  2  2  2  2  2  2  2  2  1    劆
//劆 21 劆21 20 19 18 17 16 15 14 13 12 11 10  9  8  7  6  5  4  3  2  2  2  2  2  2  2  2  2  2  2  1    劆
//劆 22 劆22 21 20 19 18 17 16 15 14 13 12 11 10  9  8  7  6  5  4  3  2  2  2  2  2  2  2  2  2  2  1    劆
//劆 23 劆23 22 21 20 19 18 17 16 15 14 13 12 11 10  9  8  7  6  5  4  3  2  2  2  2  2  2  2  2  2  1    劆
//劆 24 劆24 23 22 21 20 19 18 17 16 15 14 13 12 11 10  9  8  7  6  5  4  3  2  2  2  2  2  2  2  2  1    劆
//劆 25 劆25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10  9  8  7  6  5  4  3  2  2  2  2  2  2  2  1    劆
//劆 26 劆26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10  9  8  7  6  5  4  3  2  2  2  2  2  2  1    劆
//劆 27 劆27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10  9  8  7  6  5  4  3  2  2  2  2  2  1    劆
//劆 28 劆28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10  9  8  7  6  5  4  3  2  2  2  2  1    劆
//劆 29 劆29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10  9  8  7  6  5  4  3  2  2  2  1    劆
//劆 30 劆30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10  9  8  7  6  5  4  3  2  2  1    劆
//劆 31 劆31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10  9  8  7  6  5  4  3  2  1    劆
//劋劅劅劏劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劊
// * 尭悐慜偺婸搙偑0(摟夁)側傜偽丄尭悐張棟傪峴傢偢丄婸搙傪奿擺偟側偄丅
// * 尭悐慜偺婸搙偑1(徚摂)側傜偽丄尭悐張棟傪峴傢偢丄婸搙傪奿擺偡傞丅
// * 尭悐慜偺婸搙偑2(嵟彫婸搙)埲忋側傜偽丄壓婰偺尭悐張棟傪峴偄丄婸搙傪奿擺偡傞丅
//   - 尭悐検偑29埲壓側傜偽丄尭悐屻偺婸搙傪2(嵟彫婸搙)埲忋偵偡傞丅
//   - 尭悐検偑30埲忋側傜偽丄尭悐屻偺婸搙傪1(徚摂)偵偡傞丅
//   偙偺傛偆偵偟偨棟桼偼丄LED偺摿惈偺偨傔徚摂(1)偲嵟彫婸搙(2)偺尒偨栚偺嵎偑戝偒偔丄尭悐慜偺棉袄偑揰摂偱偁傞応崌偼尭悐屻傕嵟彫婸搙(2)偵棷傔傞曽偑丄帺慠偵尒偊傞偐傜偱偁傞丅
//   偨偩偟丄尭悐愝掕傪棙梡偟偰姰慡徚摂傑偱僼僃乕僪傾僂僩偝偣偨偄応崌傕偁傞偺偱丄尭悐検偑30埲忋側傜偽徚摂(1)傑偱尭悐偡傞偙偲偵偟偨丅
/****************************************************************************
 *	僒儞僾儖
 ****************************************************************************/
//仸TODO:巊梡椺傪彂偗丅
#ifdef  __cplusplus
}//extern "C"
#endif//__cplusplus
#endif//__CLIP_LEDS_H__
