Bluecell_operate.c 289 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630563156325633563456355636563756385639564056415642564356445645564656475648564956505651565256535654565556565657565856595660566156625663566456655666566756685669567056715672567356745675567656775678567956805681568256835684568556865687568856895690569156925693569456955696569756985699570057015702570357045705570657075708570957105711571257135714571557165717571857195720572157225723572457255726572757285729573057315732573357345735573657375738573957405741574257435744574557465747574857495750575157525753575457555756575757585759576057615762576357645765576657675768576957705771577257735774577557765777577857795780578157825783578457855786578757885789579057915792579357945795579657975798579958005801580258035804580558065807580858095810581158125813581458155816581758185819582058215822582358245825582658275828582958305831583258335834583558365837583858395840584158425843584458455846584758485849585058515852585358545855585658575858585958605861586258635864586558665867586858695870587158725873587458755876587758785879588058815882588358845885588658875888588958905891589258935894589558965897589858995900590159025903590459055906590759085909591059115912591359145915591659175918591959205921592259235924592559265927592859295930593159325933593459355936593759385939594059415942594359445945594659475948594959505951595259535954595559565957595859595960596159625963596459655966596759685969597059715972597359745975597659775978597959805981598259835984598559865987598859895990
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <stdint.h>
  4. #include <math.h>
  5. #include "main.h"
  6. #include "Bluecell_operate.h"
  7. #include "PE43711.h"
  8. #include "eeprom.h"
  9. /***************************************************************************************/
  10. /* Extern Function */
  11. /***************************************************************************************/
  12. extern uint32_t ShutdownCnt_Get(uint8_t index);
  13. extern void ShutdownCnt_Set(uint8_t index,uint8_t val);
  14. extern void PE43711_atten_ctrl(PE43711_st ATT ,uint8_t data);
  15. extern void Uart1_Data_Send(uint8_t* data,uint16_t size);
  16. extern HAL_StatusTypeDef EEPROM_M24C08_Zerowrite(uint8_t devid,uint16_t Address);
  17. extern uint8_t Chksum_Create(uint8_t *data);
  18. extern uint16_t CRC16_Generate(uint8_t* buf_ptr, int len);
  19. /***************************************************************************************/
  20. /* Extern Valuable */
  21. /***************************************************************************************/
  22. extern volatile bool AlarmTimerOnSet;
  23. extern volatile bool AlarmTimerOffSet;
  24. extern volatile uint32_t AlarmTimerOnCnt;
  25. extern volatile uint32_t AlarmTimerOffCnt;
  26. extern volatile uint32_t AGC_On_AlarmTimerCnt[AGC_Alarm_DL_Index_MAX];
  27. extern volatile uint32_t AGC_Off_AlarmTimerCnt[AGC_Alarm_DL_Index_MAX];
  28. extern ALL_PE43711_st ALL_ATT;
  29. extern volatile uint16_t ADC1valuearray[4][ADC_AVERAGECNT];
  30. extern volatile uint16_t ADC3valuearray[5][ADC_AVERAGECNT];
  31. extern volatile uint32_t LedTimerCnt;
  32. extern volatile uint32_t AdcTimerCnt;
  33. extern volatile uint32_t DET_UL_On_AlarmTimerCnt[DET_Alarm_UL_Index_MAX];
  34. extern volatile uint32_t DET_UL_Off_AlarmTimerCnt[DET_Alarm_UL_Index_MAX];
  35. extern volatile uint32_t DET_DL_Low_On_AlarmTimerCnt[DET_Alarm_DL_Index_MAX];
  36. extern volatile uint32_t DET_DL_High_On_AlarmTimerCnt[DET_Alarm_DL_Index_MAX];
  37. extern volatile uint32_t DET_DL_Low_Off_AlarmTimerCnt[DET_Alarm_DL_Index_MAX];
  38. extern volatile uint32_t DET_DL_High_Off_AlarmTimerCnt[DET_Alarm_DL_Index_MAX];
  39. extern volatile uint32_t ALC_On_AlarmTimerCnt[ALC_Alarm_UL_Index_MAX];
  40. extern volatile uint32_t ALC_Off_AlarmTimerCnt[ALC_Alarm_UL_Index_MAX];
  41. extern volatile uint32_t DET_UL_Shutdown_On_AlarmTimerCnt[DET_Alarm_UL_Index_MAX];
  42. extern volatile uint32_t DET_UL_Shutdown_Off_AlarmTimerCnt[DET_Alarm_UL_Index_MAX];
  43. extern volatile uint32_t DET_DL_Shutdown_On_AlarmTimerCnt[DET_Alarm_DL_Index_MAX];
  44. extern volatile uint32_t DET_DL_Shutdown_Off_AlarmTimerCnt[DET_Alarm_DL_Index_MAX];
  45. /***************************************************************************************/
  46. /* Function */
  47. /***************************************************************************************/
  48. double AutoControl_ADC_Compare(double CurrentAdc,uint8_t* CompareAdc,uint8_t size);
  49. void Bluecell_StructCpy(uint8_t* dst,uint8_t* src,uint16_t size);
  50. void DataStatusSet(void);
  51. void Alarm_Check();
  52. double TableAtteGuarantee(uint8_t* Table,double AttenValue);
  53. uint8_t PE43711_Calc(uint8_t* Table,uint8_t high_bit,uint8_t low_bit,uint8_t offset_h,uint8_t offset_l);
  54. uint8_t PE43711_Calc_NoTable(uint8_t high_bit,uint8_t low_bit);
  55. double PE43711_Double(uint8_t high_bit,uint8_t low_bit);
  56. void Booting_LED_Check(void);
  57. double Bluecell_TestPro(double value );
  58. double AGC_AutoControl_ADC_Compare(double CurrentAdc,uint8_t* CompareAdc,uint8_t size);
  59. /***************************************************************************************/
  60. /* Valuable */
  61. /***************************************************************************************/
  62. bool Alarm_LED_OnSet = false;
  63. uint8_t DataWrite[sizeof(BLUESTATUS_st)] = {0,};
  64. uint8_t Txdata[512];
  65. int8_t AutoControl_Save[sizeof(ALC_dBm_t)];
  66. uint16_t ADC1Ret[4];
  67. bool Initialize = false;
  68. uint16_t ADC3Ret[5];
  69. ATT_TABLE_st Att_DL1;
  70. ATT_TABLE_st Att_DL2;
  71. ATT_TABLE_st Att_DL3;
  72. ATT_TABLE_st Att_DL4;
  73. ATT_TABLE_st Att_UL1;
  74. ATT_TABLE_st Att_UL2;
  75. ATT_TABLE_st Att_UL3;
  76. ATT_TABLE_st Att_UL4;
  77. DET_TABLEDL_st Det_DL1;
  78. DET_TABLEDL_st Det_DL2;
  79. DET_TABLEDL_st Det_DL3;
  80. DET_TABLEDL_st Det_DL4;
  81. DET_TABLEUL_st Det_UL1;
  82. DET_TABLEUL_st Det_UL2;
  83. DET_TABLEUL_st Det_UL3;
  84. DET_TABLEUL_st Det_UL4;
  85. TEMP_TABLE_st Temp_DL1;
  86. TEMP_TABLE_st Temp_DL2;
  87. TEMP_TABLE_st Temp_DL3;
  88. TEMP_TABLE_st Temp_DL4;
  89. TEMP_TABLE_st Temp_UL1;
  90. TEMP_TABLE_st Temp_UL2;
  91. TEMP_TABLE_st Temp_UL3;
  92. TEMP_TABLE_st Temp_UL4;
  93. BLUESTATUS_st bluecell_Currdatastatus;
  94. BLUESTATUS_st bluecell_Prevdatastatus;
  95. #if 0 // PYJ.2020.05.21_BEGIN --
  96. int8_t AGC_ATTEN_ref[16] = {
  97. 15 ,
  98. 14 ,
  99. 13 ,
  100. 12 ,
  101. 11 ,
  102. 10 ,
  103. 9 ,
  104. 8 ,
  105. 7 ,
  106. 6 ,
  107. 5 ,
  108. 4 ,
  109. 3 ,
  110. 2 ,
  111. 1 ,
  112. 0 ,
  113. };
  114. #endif // PYJ.2020.05.21_END --
  115. uint8_t MBIC_TxDataArray[256] = {0,};
  116. void Booting_LedInit(void){
  117. HAL_GPIO_WritePin(BOOT_LED_GPIO_Port,BOOT_LED_Pin,GPIO_PIN_RESET);
  118. HAL_GPIO_WritePin(LED_ACT_GPIO_Port,LED_ACT_Pin,GPIO_PIN_SET);
  119. HAL_GPIO_WritePin(LED_FAIL_GPIO_Port,LED_FAIL_Pin,GPIO_PIN_SET);
  120. }
  121. void Booting_LED_Check(void){
  122. for(int i = 0; i < 6; i ++){
  123. HAL_GPIO_TogglePin(BOOT_LED_GPIO_Port,BOOT_LED_Pin);
  124. HAL_GPIO_TogglePin(LED_ACT_GPIO_Port,LED_ACT_Pin);
  125. HAL_GPIO_TogglePin(LED_FAIL_GPIO_Port,LED_FAIL_Pin);
  126. HAL_Delay(500);
  127. }
  128. }
  129. void MBIC_Table_Load_TempValueConvert(uint8_t* data){
  130. uint16_t tempvalue = 0;
  131. for(int i = 0; i < sizeof(TEMP_TABLE_st); i+=2){
  132. tempvalue = data[i + MBIC_TableIndex_Max] << 8 | data[i + MBIC_TableIndex_Max + 1];
  133. tempvalue *= 4;
  134. data[i + MBIC_TableIndex_Max + 0] = ((tempvalue & 0xFF00) >> 8);
  135. data[i + MBIC_TableIndex_Max + 1] = ((tempvalue & 0x00FF)) ;
  136. }
  137. }
  138. void MBIC_Table_Save_TempValueConvert(uint8_t* data){
  139. uint16_t tempvalue = 0;
  140. double ret = 0;
  141. for(int i = 0; i < sizeof(TEMP_TABLE_st); i+=2){
  142. tempvalue = data[i + MBIC_TableIndex_Max] << 8 | data[i + MBIC_TableIndex_Max + 1];
  143. ret = tempvalue / 4;
  144. ret *=1000;
  145. tempvalue = (uint16_t)ret;
  146. // printf("ret : %f\r\n",ret);
  147. data[i + MBIC_TableIndex_Max + 0] = ((tempvalue & 0xFF00) >> 8);
  148. data[i + MBIC_TableIndex_Max + 1] = ((tempvalue & 0x00FF)) ;
  149. }
  150. }
  151. uint8_t LED_TestCnt = 0;
  152. void Boot_LED_Toggle(void){
  153. if(bluecell_Currdatastatus.LED_TEST == false){
  154. if(LedTimerCnt > 1000){
  155. HAL_GPIO_TogglePin(BOOT_LED_GPIO_Port,BOOT_LED_Pin);
  156. HAL_GPIO_TogglePin(LED_ACT_GPIO_Port,LED_ACT_Pin);
  157. // if(AlarmTimerOnCnt > 3000){
  158. if(Alarm_LED_OnSet == true){
  159. HAL_GPIO_WritePin(LED_FAIL_GPIO_Port,LED_FAIL_Pin,GPIO_PIN_SET);
  160. }else{
  161. HAL_GPIO_WritePin(LED_FAIL_GPIO_Port,LED_FAIL_Pin,GPIO_PIN_RESET);
  162. }
  163. // printf("Alarm_LED_OnSet : %d\r\n",Alarm_LED_OnSet);
  164. LedTimerCnt = 0;
  165. }
  166. }else{
  167. if(LedTimerCnt > 500){
  168. printf("LED TESTING....\r\n");
  169. if(LED_TestCnt % 2){
  170. HAL_GPIO_WritePin(BOOT_LED_GPIO_Port,BOOT_LED_Pin,GPIO_PIN_SET);
  171. HAL_GPIO_WritePin(LED_FAIL_GPIO_Port,LED_FAIL_Pin,GPIO_PIN_RESET);
  172. HAL_GPIO_WritePin(LED_ACT_GPIO_Port,LED_ACT_Pin,GPIO_PIN_RESET);
  173. }else{
  174. HAL_GPIO_WritePin(BOOT_LED_GPIO_Port,BOOT_LED_Pin,GPIO_PIN_RESET);
  175. HAL_GPIO_WritePin(LED_FAIL_GPIO_Port,LED_FAIL_Pin,GPIO_PIN_SET);
  176. HAL_GPIO_WritePin(LED_ACT_GPIO_Port,LED_ACT_Pin,GPIO_PIN_SET);
  177. }
  178. LED_TestCnt++;
  179. LedTimerCnt = 0;
  180. /*Set LED TEST variable False after 12 flashes*/
  181. if(LED_TestCnt >= 10){
  182. bluecell_Currdatastatus.LED_TEST = false;
  183. LED_TestCnt = 0;
  184. }
  185. }
  186. }
  187. }
  188. uint8_t PE43711_Calc(uint8_t* Table,uint8_t high_bit,uint8_t low_bit,uint8_t offset_h,uint8_t offset_l){
  189. double ret = 0;
  190. uint8_t Result = 0;
  191. ret = PE43711_Double(high_bit,low_bit); // Hidden Atten Calc
  192. ret += PE43711_Double(offset_h,offset_l);//Plus User Atten Calc
  193. // ret += PE43711_Double(0,HIDDENATTEN);//Plus Default Atten 5
  194. // printf("ret1 : %f \r\n",ret); // 2
  195. ret = TableAtteGuarantee(Table,ret);//Table Guarantee
  196. // printf("ret2 : %f \r\n",ret);
  197. Result = PE43711_DataToHexConvert(ret);
  198. return Result;
  199. }
  200. uint8_t MBIC_DL_PE43711_Calc(uint8_t* Table,int16_t MBIC_Val,int16_t MBIC_UserVal){
  201. double ret = 0;
  202. double ret2 = 0;
  203. uint8_t Result = 0;
  204. //ret = PE43711_Double(MBIC_Val); // Hidden Atten Calc
  205. // printf("MBIC_UserVal : %x \r\n",MBIC_UserVal); // 2
  206. ret = MBIC_Val;
  207. ret /= 10;
  208. ret *= -1;
  209. ret2 += MBIC_UserVal;
  210. ret2 /= 10;
  211. ret2 *= -1;
  212. ret += ret2;
  213. ret += HIDDENATTEN/10;//PE43711_Double(0,HIDDENATTEN);//Plus Default Atten 5
  214. // printf("ret1 : %f \r\n",ret); // 2
  215. ret = TableAtteGuarantee(Table,ret);//Table Guarantee
  216. // printf("ret2 : %f \r\n",ret);
  217. Result = PE43711_DataToHexConvert(ret);
  218. return Result;
  219. }
  220. uint8_t MBIC_UL_PE43711_Calc(uint8_t* Table,int16_t MBIC_Val,int16_t MBIC_UserVal,int16_t MBIC_ALCVal){
  221. double ret = 0;
  222. double ret2 = 0;
  223. double ret3 = 0;
  224. uint8_t Result = 0;
  225. if(MBIC_Val + MBIC_ALCVal < -200)
  226. MBIC_Val = MBIC_ALCVal = -100;
  227. //ret = PE43711_Double(MBIC_Val); // Hidden Atten Calc
  228. // printf("MBIC_UserVal : %x \r\n",MBIC_UserVal); // 2
  229. ret = MBIC_Val;
  230. ret /= 10;
  231. ret *= -1;
  232. ret2 += MBIC_UserVal;
  233. ret2 /= 10;
  234. ret2 *= -1;
  235. ret3 += MBIC_ALCVal;
  236. ret3 /= 10;
  237. ret3 *= -1;
  238. ret =ret + ret2 + ret3;
  239. // printf("ret1 : %f \r\n",ret); // 2
  240. ret = TableAtteGuarantee(Table,ret);//Table Guarantee
  241. // printf("ret2 : %f \r\n",ret);
  242. Result = PE43711_DataToHexConvert(ret);
  243. return Result;
  244. }
  245. uint8_t PE43711_Calc_NoTable(uint8_t high_bit,uint8_t low_bit){
  246. double ret = 0;
  247. ret = PE43711_Double(high_bit,low_bit);
  248. PE43711_DataToHexConvert(ret);
  249. return 0;
  250. }
  251. /*2 byte Data Double Convert Function*/
  252. double PE43711_Double(uint8_t high_bit,uint8_t low_bit){
  253. //uint16_t tmp_h = 0,tmp_l = 0;
  254. double ret = 0;
  255. int16_t tmp = 0;
  256. #if 0 // PYJ.2020.05.22_BEGIN --
  257. tmp_h = high_bit;
  258. tmp_l = low_bit;
  259. ret = ((tmp_h << 8) & 0xFF00);
  260. ret += (tmp_l & 0x00FF);
  261. /*Minus Convert*/
  262. if((((tmp_h << 8) & 0xFF00) & 0xF000) == 0xF000){
  263. // printf("minus Calc Start\r\n");
  264. ret = 0xFFFF - ret;
  265. // printf("0xFFFF - %x\r\n",ret);
  266. ret += 0x01;
  267. ret = ret - (2*ret);
  268. // printf("ret : %x\r\n",ret);
  269. }
  270. // printf("%s 1: ret : %x\r\n",__func__,ret);
  271. ret /= 10;
  272. #else
  273. tmp = (int16_t)((high_bit << 8) | low_bit);
  274. ret = tmp / 10;
  275. #if 0 // PYJ.2020.05.22_BEGIN --
  276. if(ret > 6000){
  277. printf("high_bit : %x LOW BIT : %x \r\n",high_bit,low_bit);
  278. }
  279. #endif // PYJ.2020.05.22_END --
  280. #endif // PYJ.2020.05.22_END --
  281. // printf("%s 2: ret : %f\r\n",__func__,ret);
  282. return ret;
  283. }
  284. double TableAtteGuarantee(uint8_t* Table,double AttenValue){
  285. int8_t GuaranteeData[256];
  286. double ret = 0;
  287. //double ref = 0;
  288. uint8_t cnt = 0;
  289. for(double ref = 0; ref < AttenValue; ref += 0.5){
  290. cnt++;
  291. }
  292. Bluecell_StructCpy(&GuaranteeData[0],&Table[0],sizeof(ATT_TABLE_st));
  293. // printf("H : %x L : %x \r\n",GuaranteeData[cnt * 2],GuaranteeData[cnt * 2 + 1]);
  294. ret = GuaranteeData[cnt] / 2;
  295. //= PE43711_Double(GuaranteeData[cnt * 2],GuaranteeData[cnt * 2 + 1]);
  296. // printf("ret3 : %f \r\n",ret); //1
  297. ret += AttenValue;
  298. // printf("ret4 : %f \r\n",ret);
  299. return ret;
  300. }
  301. #if 1 // PYJ.2020.05.25_BEGIN --
  302. int8_t AGC_Table_ref[sizeof(AGC_dBm_t)] = {
  303. 5 , 4 , 3 , 2 ,
  304. 1 , 0 , -1 , -2 ,
  305. -3 , -4 , -5 , -6 ,
  306. -7 , -8 , -9 , -10 ,
  307. -11 , -12 , -13 , -14 ,
  308. -15 , -16 , -17 , -18 ,
  309. -19 , -20 , -21 , -22 ,
  310. -23 , -24 , -25 ,
  311. };
  312. void Bluecell_AttenInitialize(){
  313. uint8_t val = 0;
  314. int16_t MBIC_ALC_Val = 0,MBIC_Val = 0,MBIC_UserVal = 0;
  315. Bluecell_StructCpy(&AutoControl_Save[0],&AGC_Table_ref[0],sizeof(AGC_dBm_t));
  316. bluecell_Prevdatastatus.ATT_DL1_H = bluecell_Currdatastatus.ATT_DL1_H;
  317. bluecell_Prevdatastatus.ATT_DL1_L = bluecell_Currdatastatus.ATT_DL1_L;
  318. bluecell_Prevdatastatus.bluecell_User_DL1_H = bluecell_Currdatastatus.bluecell_User_DL1_H;
  319. bluecell_Prevdatastatus.bluecell_User_DL1_L = bluecell_Currdatastatus.bluecell_User_DL1_L;
  320. MBIC_Val = bluecell_Currdatastatus.ATT_DL1_H << 8 | bluecell_Currdatastatus.ATT_DL1_L;
  321. MBIC_UserVal = bluecell_Currdatastatus.bluecell_User_DL1_H << 8 | bluecell_Currdatastatus.bluecell_User_DL1_L;
  322. val = MBIC_DL_PE43711_Calc(&Att_DL1.Table_0_0_dBm, // Table Offset
  323. MBIC_Val,
  324. MBIC_UserVal);// User Atten Low Bit
  325. PE43711_atten_ctrl(ALL_ATT.ATT_DL1,val);
  326. bluecell_Prevdatastatus.ATT_DL2_H = bluecell_Currdatastatus.ATT_DL2_H;
  327. bluecell_Prevdatastatus.ATT_DL2_L = bluecell_Currdatastatus.ATT_DL2_L;
  328. bluecell_Prevdatastatus.bluecell_User_DL2_H = bluecell_Currdatastatus.bluecell_User_DL2_H;
  329. bluecell_Prevdatastatus.bluecell_User_DL2_L = bluecell_Currdatastatus.bluecell_User_DL2_L;
  330. MBIC_Val = bluecell_Currdatastatus.ATT_DL2_H << 8 | bluecell_Currdatastatus.ATT_DL2_L;
  331. MBIC_UserVal = bluecell_Currdatastatus.bluecell_User_DL2_H << 8 | bluecell_Currdatastatus.bluecell_User_DL2_L;
  332. val = MBIC_DL_PE43711_Calc(&Att_DL2.Table_0_0_dBm, // Table Offset
  333. MBIC_Val,
  334. MBIC_UserVal);// User Atten Low Bit
  335. PE43711_atten_ctrl(ALL_ATT.ATT_DL2,val);
  336. bluecell_Prevdatastatus.ATT_DL3_H = bluecell_Currdatastatus.ATT_DL3_H;
  337. bluecell_Prevdatastatus.ATT_DL3_L = bluecell_Currdatastatus.ATT_DL3_L;
  338. bluecell_Prevdatastatus.bluecell_User_DL3_H = bluecell_Currdatastatus.bluecell_User_DL3_H;
  339. bluecell_Prevdatastatus.bluecell_User_DL3_L = bluecell_Currdatastatus.bluecell_User_DL3_L;
  340. MBIC_Val = bluecell_Currdatastatus.ATT_DL3_L << 8 | bluecell_Currdatastatus.ATT_DL3_L;
  341. MBIC_UserVal = bluecell_Currdatastatus.bluecell_User_DL3_H << 8 | bluecell_Currdatastatus.bluecell_User_DL3_L;
  342. val = MBIC_DL_PE43711_Calc(&Att_DL3.Table_0_0_dBm, // Table Offset
  343. MBIC_Val,
  344. MBIC_UserVal);// User Atten Low Bit
  345. PE43711_atten_ctrl(ALL_ATT.ATT_DL3,val);
  346. bluecell_Prevdatastatus.ATT_DL4_H = bluecell_Currdatastatus.ATT_DL4_H;
  347. bluecell_Prevdatastatus.ATT_DL4_L = bluecell_Currdatastatus.ATT_DL4_L;
  348. bluecell_Prevdatastatus.bluecell_User_DL4_H = bluecell_Currdatastatus.bluecell_User_DL4_H;
  349. bluecell_Prevdatastatus.bluecell_User_DL4_L = bluecell_Currdatastatus.bluecell_User_DL4_L;
  350. MBIC_Val = bluecell_Currdatastatus.ATT_DL4_H << 8 | bluecell_Currdatastatus.ATT_DL4_H;
  351. MBIC_UserVal = bluecell_Currdatastatus.bluecell_User_DL4_H << 8 | bluecell_Currdatastatus.bluecell_User_DL4_L;
  352. val = MBIC_DL_PE43711_Calc(&Att_DL4.Table_0_0_dBm, // Table Offset
  353. MBIC_Val,
  354. MBIC_UserVal);// User Atten Low Bit
  355. PE43711_atten_ctrl(ALL_ATT.ATT_DL4,val);
  356. bluecell_Prevdatastatus.ATT_UL1_H = bluecell_Currdatastatus.ATT_UL1_H;
  357. bluecell_Prevdatastatus.ATT_UL1_L = bluecell_Currdatastatus.ATT_UL1_L;
  358. bluecell_Prevdatastatus.bluecell_User_UL1_H = bluecell_Currdatastatus.bluecell_User_UL1_H;
  359. bluecell_Prevdatastatus.bluecell_User_UL1_L = bluecell_Currdatastatus.bluecell_User_UL1_L;
  360. bluecell_Prevdatastatus.MBIC_ULO_ALC_Atten1_H = bluecell_Currdatastatus.MBIC_ULO_ALC_Atten1_H;
  361. bluecell_Prevdatastatus.MBIC_ULO_ALC_Atten1_L = bluecell_Currdatastatus.MBIC_ULO_ALC_Atten1_L;
  362. MBIC_Val = bluecell_Currdatastatus.ATT_UL1_H << 8 | bluecell_Currdatastatus.ATT_UL1_L;
  363. MBIC_ALC_Val = bluecell_Currdatastatus.MBIC_ULO_ALC_Atten4_H << 8 | bluecell_Currdatastatus.MBIC_ULO_ALC_Atten4_L;
  364. MBIC_UserVal = bluecell_Currdatastatus.bluecell_User_UL1_H << 8 | bluecell_Currdatastatus.bluecell_User_UL1_L;
  365. val = MBIC_UL_PE43711_Calc(&Att_UL1.Table_0_0_dBm, // Table Offset
  366. MBIC_Val,
  367. MBIC_UserVal,
  368. MBIC_ALC_Val);// User Atten Low Bit
  369. // printf("%d val = %x \r\n",__LINE__,val);
  370. PE43711_atten_ctrl(ALL_ATT.ATT_UL1,val);
  371. bluecell_Prevdatastatus.ATT_UL2_H = bluecell_Currdatastatus.ATT_UL2_H;
  372. bluecell_Prevdatastatus.ATT_UL2_L = bluecell_Currdatastatus.ATT_UL2_L;
  373. bluecell_Prevdatastatus.bluecell_User_UL2_H = bluecell_Currdatastatus.bluecell_User_UL2_H;
  374. bluecell_Prevdatastatus.bluecell_User_UL2_L = bluecell_Currdatastatus.bluecell_User_UL2_L;
  375. bluecell_Prevdatastatus.MBIC_ULO_ALC_Atten2_H = bluecell_Currdatastatus.MBIC_ULO_ALC_Atten2_H;
  376. bluecell_Prevdatastatus.MBIC_ULO_ALC_Atten2_L = bluecell_Currdatastatus.MBIC_ULO_ALC_Atten2_L;
  377. MBIC_Val = bluecell_Currdatastatus.ATT_UL2_H << 8 | bluecell_Currdatastatus.ATT_UL2_L;
  378. bluecell_Currdatastatus.MBIC_ULO_ALC_Atten2_H = 0;
  379. bluecell_Currdatastatus.MBIC_ULO_ALC_Atten2_L = 0;
  380. MBIC_ALC_Val = bluecell_Currdatastatus.MBIC_ULO_ALC_Atten2_H << 8 | bluecell_Currdatastatus.MBIC_ULO_ALC_Atten2_L;
  381. MBIC_UserVal = bluecell_Currdatastatus.bluecell_User_UL2_H << 8 | bluecell_Currdatastatus.bluecell_User_UL2_L;
  382. printf("MBIC_ALC_Val : %x \r\n",MBIC_ALC_Val);
  383. val = MBIC_UL_PE43711_Calc(&Att_UL1.Table_0_0_dBm, // Table Offset
  384. MBIC_Val,
  385. MBIC_UserVal,
  386. MBIC_ALC_Val);// User Atten Low Bit
  387. // printf("%d val = %x \r\n",__LINE__,val);
  388. PE43711_atten_ctrl(ALL_ATT.ATT_UL2,val);
  389. bluecell_Prevdatastatus.ATT_UL3_H = bluecell_Currdatastatus.ATT_UL3_H;
  390. bluecell_Prevdatastatus.ATT_UL3_L = bluecell_Currdatastatus.ATT_UL3_L;
  391. bluecell_Prevdatastatus.bluecell_User_UL3_H = bluecell_Currdatastatus.bluecell_User_UL3_H;
  392. bluecell_Prevdatastatus.bluecell_User_UL3_L = bluecell_Currdatastatus.bluecell_User_UL3_L;
  393. bluecell_Prevdatastatus.MBIC_ULO_ALC_Atten3_H = bluecell_Currdatastatus.MBIC_ULO_ALC_Atten3_H;
  394. bluecell_Prevdatastatus.MBIC_ULO_ALC_Atten3_L = bluecell_Currdatastatus.MBIC_ULO_ALC_Atten3_L;
  395. MBIC_Val = bluecell_Currdatastatus.ATT_UL3_H << 8 | bluecell_Currdatastatus.ATT_UL3_L;
  396. MBIC_ALC_Val = bluecell_Currdatastatus.MBIC_ULO_ALC_Atten4_H << 8 | bluecell_Currdatastatus.MBIC_ULO_ALC_Atten4_L;
  397. MBIC_UserVal = bluecell_Currdatastatus.bluecell_User_UL3_H << 8 | bluecell_Currdatastatus.bluecell_User_UL3_L;
  398. val = MBIC_UL_PE43711_Calc(&Att_UL3.Table_0_0_dBm, // Table Offset
  399. MBIC_Val,
  400. MBIC_UserVal,
  401. MBIC_ALC_Val);// User Atten Low Bit
  402. // printf("%d val = %x \r\n",__LINE__,val);
  403. PE43711_atten_ctrl(ALL_ATT.ATT_UL3,val);
  404. bluecell_Prevdatastatus.ATT_UL4_H = bluecell_Currdatastatus.ATT_UL4_H;
  405. bluecell_Prevdatastatus.ATT_UL4_L = bluecell_Currdatastatus.ATT_UL4_L;
  406. bluecell_Prevdatastatus.bluecell_User_UL4_H = bluecell_Currdatastatus.bluecell_User_UL4_H;
  407. bluecell_Prevdatastatus.bluecell_User_UL4_L = bluecell_Currdatastatus.bluecell_User_UL4_L;
  408. bluecell_Prevdatastatus.MBIC_ULO_ALC_Atten4_H = bluecell_Currdatastatus.MBIC_ULO_ALC_Atten4_H;
  409. bluecell_Prevdatastatus.MBIC_ULO_ALC_Atten4_L = bluecell_Currdatastatus.MBIC_ULO_ALC_Atten4_L;
  410. MBIC_Val = bluecell_Currdatastatus.ATT_UL4_H << 8 | bluecell_Currdatastatus.ATT_UL4_L;
  411. MBIC_ALC_Val = bluecell_Currdatastatus.MBIC_ULO_ALC_Atten4_H << 8 | bluecell_Currdatastatus.MBIC_ULO_ALC_Atten4_L;
  412. MBIC_UserVal = bluecell_Currdatastatus.bluecell_User_UL4_H << 8 | bluecell_Currdatastatus.bluecell_User_UL4_L;
  413. val = MBIC_UL_PE43711_Calc(&Att_UL4.Table_0_0_dBm, // Table Offset
  414. MBIC_Val,
  415. MBIC_UserVal,
  416. MBIC_ALC_Val);// User Atten Low Bit
  417. // printf("%d val = %x \r\n",__LINE__,val);
  418. PE43711_atten_ctrl(ALL_ATT.ATT_UL4,val);
  419. }
  420. void CompareAttenData(BLUESTATUS_st Curr,BLUESTATUS_st Prev){
  421. uint8_t val = 0;
  422. uint16_t MBIC_Val = 0;
  423. uint16_t MBIC_ALC_Val = 0;
  424. uint16_t MBIC_UserVal = 0;
  425. if((Curr.ATT_DL1_H != Prev.ATT_DL1_H
  426. ||Curr.ATT_DL1_L != Prev.ATT_DL1_L)
  427. ||(Curr.bluecell_User_DL1_H != Prev.bluecell_User_DL1_H
  428. ||Curr.bluecell_User_DL1_L != Prev.bluecell_User_DL1_L)){
  429. // printf("%s : %d \r\n",__func__,__LINE__);
  430. bluecell_Prevdatastatus.ATT_DL1_H = bluecell_Currdatastatus.ATT_DL1_H;
  431. bluecell_Prevdatastatus.ATT_DL1_L = bluecell_Currdatastatus.ATT_DL1_L;
  432. bluecell_Prevdatastatus.bluecell_User_DL1_H = bluecell_Currdatastatus.bluecell_User_DL1_H;
  433. bluecell_Prevdatastatus.bluecell_User_DL1_L = bluecell_Currdatastatus.bluecell_User_DL1_L;
  434. MBIC_Val =Curr.ATT_DL1_H << 8 | Curr.ATT_DL1_L;
  435. MBIC_UserVal = Curr.bluecell_User_DL1_H << 8 | Curr.bluecell_User_DL1_L;
  436. val = MBIC_DL_PE43711_Calc(&Att_DL1.Table_0_0_dBm, // Table Offset
  437. MBIC_Val,
  438. MBIC_UserVal);// User Atten Low Bit
  439. printf("%s : %d \r\n",__func__,__LINE__);
  440. printf("%d val = %x \r\n",__LINE__,val);
  441. PE43711_atten_ctrl(ALL_ATT.ATT_DL1,val);
  442. }
  443. if((Curr.ATT_DL2_H != Prev.ATT_DL2_H)
  444. ||(Curr.ATT_DL2_L != Prev.ATT_DL2_L)
  445. ||(Curr.bluecell_User_DL2_H != Prev.bluecell_User_DL2_H
  446. ||Curr.bluecell_User_DL2_L != Prev.bluecell_User_DL2_L)){
  447. bluecell_Prevdatastatus.ATT_DL2_H = bluecell_Currdatastatus.ATT_DL2_H;
  448. bluecell_Prevdatastatus.ATT_DL2_L = bluecell_Currdatastatus.ATT_DL2_L;
  449. bluecell_Prevdatastatus.bluecell_User_DL2_H = bluecell_Currdatastatus.bluecell_User_DL2_H;
  450. bluecell_Prevdatastatus.bluecell_User_DL2_L = bluecell_Currdatastatus.bluecell_User_DL2_L;
  451. MBIC_Val = Curr.ATT_DL2_H << 8 | Curr.ATT_DL2_L;
  452. MBIC_UserVal = Curr.bluecell_User_DL2_H << 8 | Curr.bluecell_User_DL2_L;
  453. val = MBIC_DL_PE43711_Calc(&Att_DL2.Table_0_0_dBm,// Table Offset
  454. MBIC_Val,// Hidden Atten Low bit
  455. MBIC_UserVal);// User Atten Low Bit
  456. // printf("%d val = %x \r\n",__LINE__,val);
  457. PE43711_atten_ctrl(ALL_ATT.ATT_DL2,val);
  458. }
  459. if((Curr.ATT_DL3_H != Prev.ATT_DL3_H
  460. ||Curr.ATT_DL3_L != Prev.ATT_DL3_L)
  461. ||(Curr.bluecell_User_DL3_H != Prev.bluecell_User_DL3_H
  462. ||Curr.bluecell_User_DL3_L != Prev.bluecell_User_DL3_L)){
  463. bluecell_Prevdatastatus.ATT_DL3_H = bluecell_Currdatastatus.ATT_DL3_H;
  464. bluecell_Prevdatastatus.ATT_DL3_L = bluecell_Currdatastatus.ATT_DL3_L;
  465. bluecell_Prevdatastatus.bluecell_User_DL3_H = bluecell_Currdatastatus.bluecell_User_DL3_H;
  466. bluecell_Prevdatastatus.bluecell_User_DL3_L = bluecell_Currdatastatus.bluecell_User_DL3_L;
  467. MBIC_Val = Curr.ATT_DL3_H << 8 | Curr.ATT_DL3_L;
  468. MBIC_UserVal = Curr.bluecell_User_DL3_H << 8 | Curr.bluecell_User_DL3_L;
  469. val = MBIC_DL_PE43711_Calc(&Att_DL3.Table_0_0_dBm,// Table Offset
  470. MBIC_Val,// Hidden Atten Low bit
  471. MBIC_UserVal);// User Atten Low Bit
  472. printf("%d val = %x \r\n",__LINE__,val);
  473. PE43711_atten_ctrl(ALL_ATT.ATT_DL3,val);
  474. }
  475. // printf("\r\nCurr.ATT_DL3_H : %x \r\nPrev.ATT_DL3_H : %x \r\n",Curr.ATT_DL3_H,Prev.ATT_DL3_H);
  476. // printf("\r\nCurr.ATT_DL3_L : %x \r\nPrev.ATT_DL3_L : %x \r\n",Curr.ATT_DL3_L,Prev.ATT_DL3_L);
  477. if((Curr.ATT_DL4_H != Prev.ATT_DL4_H
  478. ||Curr.ATT_DL4_L != Prev.ATT_DL4_L)
  479. ||(Curr.bluecell_User_DL4_H != Prev.bluecell_User_DL4_H
  480. ||Curr.bluecell_User_DL4_L != Prev.bluecell_User_DL4_L)){
  481. bluecell_Prevdatastatus.ATT_DL4_H = bluecell_Currdatastatus.ATT_DL4_H;
  482. bluecell_Prevdatastatus.ATT_DL4_L = bluecell_Currdatastatus.ATT_DL4_L;
  483. bluecell_Prevdatastatus.bluecell_User_DL4_H = bluecell_Currdatastatus.bluecell_User_DL4_H;
  484. bluecell_Prevdatastatus.bluecell_User_DL4_L = bluecell_Currdatastatus.bluecell_User_DL4_L;
  485. MBIC_Val = (Curr.ATT_DL4_H << 8 | Curr.ATT_DL4_L);
  486. printf("\r\nCurr.ATT_DL4_H : %x \rCurr.ATT_DL4_L : %x \r\n",Curr.ATT_DL4_H,Curr.ATT_DL4_L);
  487. MBIC_UserVal = (((Curr.bluecell_User_DL4_H & 0x00FF)<< 8) | Curr.bluecell_User_DL4_L);
  488. printf("\r\nCurr.bluecell_User_DL4_H : %x \rCurr.bluecell_User_DL4_L : %x \r\n",Curr.bluecell_User_DL4_H,Curr.bluecell_User_DL4_L);
  489. printf("MBIC_UserVal : %x \r\n",MBIC_UserVal); // 2
  490. val = MBIC_DL_PE43711_Calc(&Att_DL4.Table_0_0_dBm,// Table Offset
  491. MBIC_Val,// Hidden Atten Low bit
  492. MBIC_UserVal);// User Atten Low Bit
  493. printf("%d val = %x \r\n",__LINE__,val);
  494. PE43711_atten_ctrl(ALL_ATT.ATT_DL4,val);
  495. }
  496. if((Curr.ATT_UL1_H != Prev.ATT_UL1_H
  497. ||Curr.ATT_UL1_L != Prev.ATT_UL1_L)
  498. ||(Curr.bluecell_User_UL1_H != Prev.bluecell_User_UL1_H
  499. ||Curr.bluecell_User_UL1_L != Prev.bluecell_User_UL1_L)
  500. ||(Curr.MBIC_ULO_ALC_Atten1_H != Prev.MBIC_ULO_ALC_Atten1_H
  501. ||Curr.MBIC_ULO_ALC_Atten1_L != Prev.MBIC_ULO_ALC_Atten1_L)){
  502. bluecell_Prevdatastatus.ATT_UL1_H = bluecell_Currdatastatus.ATT_UL1_H;
  503. bluecell_Prevdatastatus.ATT_UL1_L = bluecell_Currdatastatus.ATT_UL1_L;
  504. bluecell_Prevdatastatus.bluecell_User_UL1_H = bluecell_Currdatastatus.bluecell_User_UL1_H;
  505. bluecell_Prevdatastatus.bluecell_User_UL1_L = bluecell_Currdatastatus.bluecell_User_UL1_L;
  506. bluecell_Prevdatastatus.MBIC_ULO_ALC_Atten1_H = bluecell_Currdatastatus.MBIC_ULO_ALC_Atten1_H;
  507. bluecell_Prevdatastatus.MBIC_ULO_ALC_Atten1_L = bluecell_Currdatastatus.MBIC_ULO_ALC_Atten1_L;
  508. MBIC_Val = Curr.ATT_UL1_H << 8 | Curr.ATT_UL1_L;
  509. MBIC_ALC_Val = Curr.MBIC_ULO_ALC_Atten1_H << 8 | Curr.MBIC_ULO_ALC_Atten1_L;
  510. MBIC_UserVal = Curr.bluecell_User_UL1_H << 8 | Curr.bluecell_User_UL1_L;
  511. val = MBIC_UL_PE43711_Calc(&Att_UL1.Table_0_0_dBm,// Table Offset
  512. MBIC_Val,// Hidden Atten Low bit
  513. MBIC_UserVal,
  514. MBIC_ALC_Val);// User Atten Low Bit
  515. // printf("%d val = %x \r\n",__LINE__,val);
  516. PE43711_atten_ctrl(ALL_ATT.ATT_UL1,val);
  517. }
  518. if((Curr.ATT_UL2_H != Prev.ATT_UL2_H
  519. ||Curr.ATT_UL2_L != Prev.ATT_UL2_L)
  520. ||(Curr.bluecell_User_UL2_H != Prev.bluecell_User_UL2_H
  521. ||Curr.bluecell_User_UL2_L != Prev.bluecell_User_UL2_L)
  522. ||(Curr.MBIC_ULO_ALC_Atten2_H != Prev.MBIC_ULO_ALC_Atten2_H
  523. ||Curr.MBIC_ULO_ALC_Atten2_L != Prev.MBIC_ULO_ALC_Atten2_L)){
  524. bluecell_Prevdatastatus.ATT_UL2_H = bluecell_Currdatastatus.ATT_UL2_H;
  525. bluecell_Prevdatastatus.ATT_UL2_L = bluecell_Currdatastatus.ATT_UL2_L;
  526. bluecell_Prevdatastatus.bluecell_User_UL2_H = bluecell_Currdatastatus.bluecell_User_UL2_H;
  527. bluecell_Prevdatastatus.bluecell_User_UL2_L = bluecell_Currdatastatus.bluecell_User_UL2_L;
  528. bluecell_Prevdatastatus.MBIC_ULO_ALC_Atten2_H = bluecell_Currdatastatus.MBIC_ULO_ALC_Atten2_H;
  529. bluecell_Prevdatastatus.MBIC_ULO_ALC_Atten2_L = bluecell_Currdatastatus.MBIC_ULO_ALC_Atten2_L;
  530. MBIC_Val = Curr.ATT_UL2_H << 8 | Curr.ATT_UL2_L;
  531. MBIC_ALC_Val = Curr.MBIC_ULO_ALC_Atten2_H << 8 | Curr.MBIC_ULO_ALC_Atten2_L;
  532. MBIC_UserVal = Curr.bluecell_User_UL2_H << 8 | Curr.bluecell_User_UL2_L;
  533. printf("MBIC_Val : %02X \r\n",MBIC_Val);
  534. printf("MBIC_UserVal : %02X \r\n",MBIC_UserVal);
  535. printf("MBIC_ALC_Val : %02X \r\n",MBIC_ALC_Val);
  536. val = MBIC_UL_PE43711_Calc(&Att_UL2.Table_0_0_dBm,// Table Offset
  537. MBIC_Val,// Hidden Atten Low bit
  538. MBIC_UserVal,
  539. MBIC_ALC_Val);// User Atten Low Bit
  540. printf("%d val = %x \r\n",__LINE__,val);
  541. PE43711_atten_ctrl(ALL_ATT.ATT_UL2,val);
  542. }
  543. if((Curr.ATT_UL3_H != Prev.ATT_UL3_H
  544. ||Curr.ATT_UL3_L != Prev.ATT_UL3_L)
  545. ||(Curr.bluecell_User_UL3_H != Prev.bluecell_User_UL3_H
  546. ||Curr.bluecell_User_UL3_L != Prev.bluecell_User_UL3_L)
  547. ||(Curr.MBIC_ULO_ALC_Atten3_H != Prev.MBIC_ULO_ALC_Atten3_H
  548. ||Curr.MBIC_ULO_ALC_Atten3_L != Prev.MBIC_ULO_ALC_Atten3_L))
  549. {
  550. bluecell_Prevdatastatus.ATT_UL3_H = bluecell_Currdatastatus.ATT_UL3_H;
  551. bluecell_Prevdatastatus.ATT_UL3_L = bluecell_Currdatastatus.ATT_UL3_L;
  552. bluecell_Prevdatastatus.bluecell_User_UL3_H = bluecell_Currdatastatus.bluecell_User_UL3_H;
  553. bluecell_Prevdatastatus.bluecell_User_UL3_L = bluecell_Currdatastatus.bluecell_User_UL3_L;
  554. bluecell_Prevdatastatus.MBIC_ULO_ALC_Atten3_H = bluecell_Currdatastatus.MBIC_ULO_ALC_Atten3_H;
  555. bluecell_Prevdatastatus.MBIC_ULO_ALC_Atten3_L = bluecell_Currdatastatus.MBIC_ULO_ALC_Atten3_L;
  556. MBIC_Val = Curr.ATT_UL3_H << 8 | Curr.ATT_UL3_L;
  557. MBIC_ALC_Val = Curr.MBIC_ULO_ALC_Atten3_H << 8 | Curr.MBIC_ULO_ALC_Atten3_L;
  558. MBIC_UserVal = Curr.bluecell_User_UL3_H << 8 | Curr.bluecell_User_UL3_L;
  559. val = MBIC_UL_PE43711_Calc(&Att_UL3.Table_0_0_dBm,// Table Offset
  560. MBIC_Val,// Hidden Atten Low bit
  561. MBIC_UserVal,
  562. MBIC_ALC_Val);// User Atten Low Bit
  563. // printf("bluecell_Currdatastatus.ATT_UL3_H : %0x \r\n",bluecell_Currdatastatus.ATT_UL3_H);
  564. // printf("bluecell_Currdatastatus.ATT_UL3_L : %0x \r\n",bluecell_Currdatastatus.ATT_UL3_L);
  565. // printf("bluecell_Currdatastatus.bluecell_User_UL3_H : %0x \r\n",bluecell_Currdatastatus.bluecell_User_UL3_H);
  566. // printf("bluecell_Currdatastatus.bluecell_User_UL3_L : %0x \r\n",bluecell_Currdatastatus.bluecell_User_UL3_L);
  567. printf("%d val = %x \r\n",__LINE__,val);
  568. PE43711_atten_ctrl(ALL_ATT.ATT_UL3,val);
  569. }
  570. if((Curr.ATT_UL4_H != Prev.ATT_UL4_H
  571. ||Curr.ATT_UL4_L != Prev.ATT_UL4_L)
  572. ||(Curr.bluecell_User_UL4_H != Prev.bluecell_User_UL4_H
  573. ||Curr.bluecell_User_UL4_L != Prev.bluecell_User_UL4_L)
  574. ||(Curr.MBIC_ULO_ALC_Atten4_H != Prev.MBIC_ULO_ALC_Atten4_H
  575. ||Curr.MBIC_ULO_ALC_Atten4_L != Prev.MBIC_ULO_ALC_Atten4_L))
  576. {
  577. bluecell_Prevdatastatus.ATT_UL4_H = bluecell_Currdatastatus.ATT_UL4_H;
  578. bluecell_Prevdatastatus.ATT_UL4_L = bluecell_Currdatastatus.ATT_UL4_L;
  579. bluecell_Prevdatastatus.bluecell_User_UL4_H = bluecell_Currdatastatus.bluecell_User_UL4_H;
  580. bluecell_Prevdatastatus.bluecell_User_UL4_L = bluecell_Currdatastatus.bluecell_User_UL4_L;
  581. bluecell_Prevdatastatus.MBIC_ULO_ALC_Atten4_H = bluecell_Currdatastatus.MBIC_ULO_ALC_Atten4_H;
  582. bluecell_Prevdatastatus.MBIC_ULO_ALC_Atten4_L = bluecell_Currdatastatus.MBIC_ULO_ALC_Atten4_L;
  583. MBIC_Val = Curr.ATT_UL4_H << 8 | Curr.ATT_UL4_L;
  584. MBIC_ALC_Val = Curr.MBIC_ULO_ALC_Atten4_H << 8 | Curr.MBIC_ULO_ALC_Atten4_L;
  585. MBIC_UserVal = Curr.bluecell_User_UL4_H << 8 | Curr.bluecell_User_UL4_L;
  586. val = MBIC_UL_PE43711_Calc(&Att_UL4.Table_0_0_dBm,// Table Offset
  587. MBIC_Val,// Hidden Atten Low bit
  588. MBIC_UserVal,
  589. MBIC_ALC_Val);// User Atten Low Bit
  590. printf("bluecell_Currdatastatus.ATT_UL4_H : %0x \r\n",bluecell_Currdatastatus.ATT_UL4_H);
  591. printf("bluecell_Currdatastatus.ATT_UL4_L : %0x \r\n",bluecell_Currdatastatus.ATT_UL4_L);
  592. printf("bluecell_Currdatastatus.bluecell_User_UL4_H : %0x \r\n",bluecell_Currdatastatus.bluecell_User_UL4_H);
  593. printf("bluecell_Currdatastatus.bluecell_User_UL4_L : %0x \r\n",bluecell_Currdatastatus.bluecell_User_UL4_L);
  594. printf("%d val = %x \r\n",__LINE__,val);
  595. PE43711_UL4_atten_ctrl(val);
  596. }
  597. // memcpy(&bluecell_Prevdatastatus.ATT_DL1_H,&bluecell_Currdatastatus.ATT_DL1_H,32);
  598. #if 0 // PYJ.2020.04.21_BEGIN --
  599. if((Curr.ULO_ALC_Threshold_H != Prev.ULO_ALC_Threshold_H
  600. ||Curr.ULO_ALC_Threshold_L != Prev.ULO_ALC_Threshold_L)
  601. ||(Curr.bluecell_User_UL1_H != Prev.bluecell_User_UL1_H
  602. ||Curr.bluecell_User_UL1_L != Prev.bluecell_User_UL1_L)){
  603. bluecell_Prevdatastatus.ULO_ALC_Threshold_H = bluecell_Currdatastatus.ULO_ALC_Threshold_H;
  604. bluecell_Prevdatastatus.ULO_ALC_Threshold_L = bluecell_Currdatastatus.ULO_ALC_Threshold_L;
  605. bluecell_Prevdatastatus.bluecell_User_UL1_H = bluecell_Currdatastatus.bluecell_User_UL1_H;
  606. bluecell_Prevdatastatus.bluecell_User_UL1_L = bluecell_Currdatastatus.bluecell_User_UL1_L;
  607. val = PE43711_Calc(&Att_UL1.Table_0_0_dBm,
  608. Curr.ULO_ALC_Threshold_H,
  609. Curr.ULO_ALC_Threshold_L,
  610. bluecell_Currdatastatus.bluecell_User_DL1_H,
  611. bluecell_Currdatastatus.bluecell_User_DL1_L);
  612. // val = PE43711_DataToHexConvert(ret);
  613. // PE43711_atten_ctrl(ALL_ATT.ATT_DL1,val);
  614. }
  615. if((Curr.ULO_ALC_Threshold_H != Prev.ULO_ALC_Threshold_H
  616. ||Curr.ULO_ALC_Threshold_L != Prev.ULO_ALC_Threshold_L)
  617. ||(Curr.bluecell_User_UL2_H != Prev.bluecell_User_UL2_H
  618. ||Curr.bluecell_User_UL2_L != Prev.bluecell_User_UL2_L)){
  619. bluecell_Prevdatastatus.ULO_ALC_Threshold_H = bluecell_Currdatastatus.ULO_ALC_Threshold_H;
  620. bluecell_Prevdatastatus.ULO_ALC_Threshold_L = bluecell_Currdatastatus.ULO_ALC_Threshold_L;
  621. bluecell_Prevdatastatus.bluecell_User_UL2_H = bluecell_Currdatastatus.bluecell_User_UL2_H;
  622. bluecell_Prevdatastatus.bluecell_User_UL2_L = bluecell_Currdatastatus.bluecell_User_UL2_L;
  623. val = PE43711_Calc(&Att_UL2.Table_0_0_dBm,
  624. Curr.ATT_ALC2_MAX_H,
  625. Curr.ATT_ALC2_MAX_L,
  626. bluecell_Currdatastatus.bluecell_User_DL2_H,
  627. bluecell_Currdatastatus.bluecell_User_DL2_L);
  628. // PE43711_atten_ctrl(ALL_ATT.ATT_DL1,val);
  629. }
  630. if((Curr.ULO_ALC_Threshold_H != Prev.ULO_ALC_Threshold_H
  631. ||Curr.ULO_ALC_Threshold_L != Prev.ULO_ALC_Threshold_L)
  632. ||(Curr.bluecell_User_UL3_H != Prev.bluecell_User_UL3_H
  633. ||Curr.bluecell_User_UL3_L != Prev.bluecell_User_UL3_L)){
  634. bluecell_Prevdatastatus.ULO_ALC_Threshold_H = bluecell_Currdatastatus.ULO_ALC_Threshold_H;
  635. bluecell_Prevdatastatus.ULO_ALC_Threshold_L = bluecell_Currdatastatus.ULO_ALC_Threshold_L;
  636. bluecell_Prevdatastatus.bluecell_User_UL3_H = bluecell_Currdatastatus.bluecell_User_UL3_H;
  637. bluecell_Prevdatastatus.bluecell_User_UL3_L = bluecell_Currdatastatus.bluecell_User_UL3_L;
  638. val = PE43711_Calc(&Att_UL3.Table_0_0_dBm,
  639. Curr.ATT_ALC3_MAX_H,
  640. Curr.ATT_ALC3_MAX_L,
  641. bluecell_Currdatastatus.bluecell_User_DL3_H,
  642. bluecell_Currdatastatus.bluecell_User_DL3_L);
  643. // PE43711_atten_ctrl(ALL_ATT.ATT_DL1,val);
  644. }
  645. if((Curr.ULO_ALC_Threshold_H != Prev.ULO_ALC_Threshold_H
  646. ||Curr.ULO_ALC_Threshold_L != Prev.ULO_ALC_Threshold_L)
  647. ||(Curr.bluecell_User_UL4_H != Prev.bluecell_User_UL4_H
  648. ||Curr.bluecell_User_UL4_L != Prev.bluecell_User_UL4_L)){
  649. // printf("Curr.ATT_ALC4_MAX_H : %x Curr.ATT_ALC4_MAX_L : %x\r\n",Curr.ATT_ALC4_MAX_H,Curr.ATT_ALC4_MAX_L);
  650. bluecell_Prevdatastatus.ULO_ALC_Threshold_H = bluecell_Currdatastatus.ULO_ALC_Threshold_H;
  651. bluecell_Prevdatastatus.ULO_ALC_Threshold_L = bluecell_Currdatastatus.ULO_ALC_Threshold_L;
  652. bluecell_Prevdatastatus.bluecell_User_UL4_H = bluecell_Currdatastatus.bluecell_User_UL4_H;
  653. bluecell_Prevdatastatus.bluecell_User_UL4_L = bluecell_Currdatastatus.bluecell_User_UL4_L;
  654. val = PE43711_Calc(&Att_UL4.Table_0_0_dBm,
  655. Curr.ATT_ALC4_MAX_H,
  656. Curr.ATT_ALC4_MAX_L,
  657. bluecell_Currdatastatus.bluecell_User_DL4_H,
  658. bluecell_Currdatastatus.bluecell_User_DL4_L);
  659. // PE43711_atten_ctrl(ALL_ATT.ATT_DL1,val);
  660. }
  661. if((Curr.ULO_ALC_Threshold_H != Prev.ULO_ALC_Threshold_H
  662. ||Curr.ULO_ALC_Threshold_L != Prev.ULO_ALC_Threshold_L)
  663. ||(Curr.bluecell_User_UL1_H != Prev.bluecell_User_UL1_H
  664. ||Curr.bluecell_User_UL1_L != Prev.bluecell_User_UL1_L)){
  665. bluecell_Prevdatastatus.ULO_ALC_Threshold_H = bluecell_Currdatastatus.ULO_ALC_Threshold_H;
  666. bluecell_Prevdatastatus.ULO_ALC_Threshold_L = bluecell_Currdatastatus.ULO_ALC_Threshold_L;
  667. bluecell_Prevdatastatus.bluecell_User_UL1_H = bluecell_Currdatastatus.bluecell_User_UL1_H;
  668. bluecell_Prevdatastatus.bluecell_User_UL1_L = bluecell_Currdatastatus.bluecell_User_UL1_L;
  669. val = PE43711_Calc(&Att_DL1.Table_0_0_dBm,
  670. Curr.ULO_ALC_Threshold_H,
  671. Curr.ULO_ALC_Threshold_L,
  672. bluecell_Currdatastatus.bluecell_User_UL1_H,
  673. bluecell_Currdatastatus.bluecell_User_UL1_L);
  674. // PE43711_atten_ctrl(ALL_ATT.ATT_DL1,val);
  675. }
  676. if((Curr.ATT_ALC2_MIN_H != Prev.ATT_ALC2_MIN_H
  677. ||Curr.ATT_ALC2_MIN_L != Prev.ATT_ALC2_MIN_L)
  678. ||(Curr.bluecell_User_UL2_H != Prev.bluecell_User_UL2_H
  679. ||Curr.bluecell_User_UL2_L != Prev.bluecell_User_UL2_L)){
  680. bluecell_Prevdatastatus.ATT_ALC2_MIN_H = bluecell_Currdatastatus.ATT_ALC2_MIN_H;
  681. bluecell_Prevdatastatus.ATT_ALC2_MIN_L = bluecell_Currdatastatus.ATT_ALC2_MIN_L;
  682. bluecell_Prevdatastatus.bluecell_User_UL2_H = bluecell_Currdatastatus.bluecell_User_UL2_H;
  683. bluecell_Prevdatastatus.bluecell_User_UL2_L = bluecell_Currdatastatus.bluecell_User_UL2_L;
  684. val = PE43711_Calc(&Att_DL2.Table_0_0_dBm,
  685. Curr.ATT_ALC2_MIN_H,
  686. Curr.ATT_ALC2_MIN_L,
  687. bluecell_Currdatastatus.bluecell_User_UL2_H,
  688. bluecell_Currdatastatus.bluecell_User_UL2_L);
  689. // PE43711_atten_ctrl(ALL_ATT.ATT_DL1,val);
  690. }
  691. if((Curr.ATT_ALC3_MIN_H != Prev.ATT_ALC3_MIN_H
  692. ||Curr.ATT_ALC3_MIN_L != Prev.ATT_ALC3_MIN_L)
  693. ||(Curr.bluecell_User_UL3_H != Prev.bluecell_User_UL3_H
  694. ||Curr.bluecell_User_UL3_L != Prev.bluecell_User_UL3_L)){
  695. bluecell_Prevdatastatus.ATT_ALC3_MIN_H = bluecell_Currdatastatus.ATT_ALC3_MIN_H;
  696. bluecell_Prevdatastatus.ATT_ALC3_MIN_L = bluecell_Currdatastatus.ATT_ALC3_MIN_L;
  697. bluecell_Prevdatastatus.bluecell_User_UL3_H = bluecell_Currdatastatus.bluecell_User_UL3_H;
  698. bluecell_Prevdatastatus.bluecell_User_UL3_L = bluecell_Currdatastatus.bluecell_User_UL3_L;
  699. val = PE43711_Calc(&Att_DL3.Table_0_0_dBm,
  700. Curr.ATT_ALC3_MIN_H,
  701. Curr.ATT_ALC3_MIN_L,
  702. bluecell_Currdatastatus.bluecell_User_UL3_H,
  703. bluecell_Currdatastatus.bluecell_User_UL3_L);
  704. // PE43711_atten_ctrl(ALL_ATT.ATT_DL1,val);
  705. }
  706. if((Curr.ATT_ALC4_MIN_H != Prev.ATT_ALC4_MIN_H
  707. ||Curr.ATT_ALC4_MIN_L != Prev.ATT_ALC4_MIN_L)
  708. ||(Curr.bluecell_User_UL4_H != Prev.bluecell_User_UL4_H
  709. ||Curr.bluecell_User_UL4_L != Prev.bluecell_User_UL4_L)){
  710. bluecell_Prevdatastatus.ATT_ALC4_MIN_H = bluecell_Currdatastatus.ATT_ALC4_MIN_H;
  711. bluecell_Prevdatastatus.ATT_ALC4_MIN_L = bluecell_Currdatastatus.ATT_ALC4_MIN_L;
  712. bluecell_Prevdatastatus.bluecell_User_UL4_H = bluecell_Currdatastatus.bluecell_User_UL4_H;
  713. bluecell_Prevdatastatus.bluecell_User_UL4_L = bluecell_Currdatastatus.bluecell_User_UL4_L;
  714. val = PE43711_Calc(&Att_DL4.Table_0_0_dBm,
  715. Curr.ATT_ALC4_MIN_H,
  716. Curr.ATT_ALC4_MIN_L,
  717. bluecell_Currdatastatus.bluecell_User_UL4_H,
  718. bluecell_Currdatastatus.bluecell_User_UL4_L);
  719. // PE43711_atten_ctrl(ALL_ATT.ATT_DL1,val);
  720. }
  721. #endif // PYJ.2020.04.21_END --
  722. }
  723. #else
  724. void CompareAttenData(BLUESTATUS_st Curr,BLUESTATUS_st Prev){
  725. uint8_t val = 0;
  726. bluecell_Prevdatastatus.ATT_DL1_H = bluecell_Currdatastatus.ATT_DL1_H;
  727. bluecell_Prevdatastatus.ATT_DL1_L = bluecell_Currdatastatus.ATT_DL1_L;
  728. bluecell_Prevdatastatus.bluecell_User_DL1_H = bluecell_Currdatastatus.bluecell_User_DL1_H;
  729. bluecell_Prevdatastatus.bluecell_User_DL1_L = bluecell_Currdatastatus.bluecell_User_DL1_L;
  730. val = PE43711_Calc(&Att_DL1.Table_0_0_dBm, // Table Offset
  731. Curr.ATT_DL1_H, // Hidden Atten High bit
  732. Curr.ATT_DL1_L, // Hidden Atten Low bit
  733. bluecell_Currdatastatus.bluecell_User_DL1_H, // User Atten High Bit
  734. bluecell_Currdatastatus.bluecell_User_DL1_L);// User Atten Low Bit
  735. // printf("%s : %d \r\n",__func__,__LINE__);
  736. // printf("%d val = %x \r\n",__LINE__,val);
  737. PE43711_atten_ctrl(ALL_ATT.ATT_DL1,val);
  738. bluecell_Prevdatastatus.ATT_DL2_H = bluecell_Currdatastatus.ATT_DL2_H;
  739. bluecell_Prevdatastatus.ATT_DL2_L = bluecell_Currdatastatus.ATT_DL2_L;
  740. bluecell_Prevdatastatus.bluecell_User_DL2_H = bluecell_Currdatastatus.bluecell_User_DL2_H;
  741. bluecell_Prevdatastatus.bluecell_User_DL2_L = bluecell_Currdatastatus.bluecell_User_DL2_L;
  742. val = PE43711_Calc(&Att_DL2.Table_0_0_dBm,// Table Offset
  743. Curr.ATT_DL2_H,// Hidden Atten High bit
  744. Curr.ATT_DL2_L,// Hidden Atten Low bit
  745. bluecell_Currdatastatus.bluecell_User_DL2_H,// User Atten High Bit
  746. bluecell_Currdatastatus.bluecell_User_DL2_L);// User Atten Low Bit
  747. // printf("%d val = %x \r\n",__LINE__,val);
  748. PE43711_atten_ctrl(ALL_ATT.ATT_DL2,val);
  749. bluecell_Prevdatastatus.ATT_DL3_H = bluecell_Currdatastatus.ATT_DL3_H;
  750. bluecell_Prevdatastatus.ATT_DL3_L = bluecell_Currdatastatus.ATT_DL3_L;
  751. bluecell_Prevdatastatus.bluecell_User_DL3_H = bluecell_Currdatastatus.bluecell_User_DL3_H;
  752. bluecell_Prevdatastatus.bluecell_User_DL3_L = bluecell_Currdatastatus.bluecell_User_DL3_L;
  753. val = PE43711_Calc(&Att_DL3.Table_0_0_dBm,// Table Offset
  754. Curr.ATT_DL3_H,// Hidden Atten High bit
  755. Curr.ATT_DL3_L,// Hidden Atten Low bit
  756. bluecell_Currdatastatus.bluecell_User_DL3_H,// User Atten High Bit
  757. bluecell_Currdatastatus.bluecell_User_DL3_L);// User Atten Low Bit
  758. // printf("%d val = %x \r\n",__LINE__,val);
  759. PE43711_atten_ctrl(ALL_ATT.ATT_DL3,val);
  760. // printf("\r\nCurr.ATT_DL3_H : %x \r\nPrev.ATT_DL3_H : %x \r\n",Curr.ATT_DL3_H,Prev.ATT_DL3_H);
  761. // printf("\r\nCurr.ATT_DL3_L : %x \r\nPrev.ATT_DL3_L : %x \r\n",Curr.ATT_DL3_L,Prev.ATT_DL3_L);
  762. bluecell_Prevdatastatus.ATT_DL4_H = bluecell_Currdatastatus.ATT_DL4_H;
  763. bluecell_Prevdatastatus.ATT_DL4_L = bluecell_Currdatastatus.ATT_DL4_L;
  764. bluecell_Prevdatastatus.bluecell_User_DL4_H = bluecell_Currdatastatus.bluecell_User_DL4_H;
  765. bluecell_Prevdatastatus.bluecell_User_DL4_L = bluecell_Currdatastatus.bluecell_User_DL4_L;
  766. val = PE43711_Calc(&Att_DL4.Table_0_0_dBm,// Table Offset
  767. Curr.ATT_DL4_H,// Hidden Atten High bit
  768. Curr.ATT_DL4_L,// Hidden Atten Low bit
  769. bluecell_Currdatastatus.bluecell_User_DL4_H,// User Atten High Bit
  770. bluecell_Currdatastatus.bluecell_User_DL4_L);// User Atten Low Bit
  771. // printf("%d val = %x \r\n",__LINE__,val);
  772. PE43711_atten_ctrl(ALL_ATT.ATT_DL4,val);
  773. bluecell_Prevdatastatus.ATT_UL1_H = bluecell_Currdatastatus.ATT_UL1_H;
  774. bluecell_Prevdatastatus.ATT_UL1_L = bluecell_Currdatastatus.ATT_UL1_L;
  775. bluecell_Prevdatastatus.bluecell_User_UL1_H = bluecell_Currdatastatus.bluecell_User_UL1_H;
  776. bluecell_Prevdatastatus.bluecell_User_UL1_L = bluecell_Currdatastatus.bluecell_User_UL1_L;
  777. val = PE43711_Calc(&Att_UL1.Table_0_0_dBm,// Table Offset
  778. Curr.ATT_UL1_H,// Hidden Atten High bit
  779. Curr.ATT_UL1_L,// Hidden Atten Low bit
  780. bluecell_Currdatastatus.bluecell_User_UL1_H,// User Atten High Bit
  781. bluecell_Currdatastatus.bluecell_User_UL1_L);// User Atten Low Bit
  782. // printf("%d val = %x \r\n",__LINE__,val);
  783. PE43711_atten_ctrl(ALL_ATT.ATT_UL1,val);
  784. bluecell_Prevdatastatus.ATT_UL2_H = bluecell_Currdatastatus.ATT_UL2_H;
  785. bluecell_Prevdatastatus.ATT_UL2_L = bluecell_Currdatastatus.ATT_UL2_L;
  786. bluecell_Prevdatastatus.bluecell_User_UL2_H = bluecell_Currdatastatus.bluecell_User_UL2_H;
  787. bluecell_Prevdatastatus.bluecell_User_UL2_L = bluecell_Currdatastatus.bluecell_User_UL2_L;
  788. val = PE43711_Calc(&Att_UL2.Table_0_0_dBm,// Table Offset
  789. Curr.ATT_UL2_H,// Hidden Atten High bit
  790. Curr.ATT_UL2_L,// Hidden Atten Low bit
  791. bluecell_Currdatastatus.bluecell_User_UL2_H,// User Atten High Bit
  792. bluecell_Currdatastatus.bluecell_User_UL2_L);// User Atten Low Bit
  793. // printf("%d val = %x \r\n",__LINE__,val);
  794. PE43711_atten_ctrl(ALL_ATT.ATT_UL2,val);
  795. bluecell_Prevdatastatus.ATT_UL3_H = bluecell_Currdatastatus.ATT_UL3_H;
  796. bluecell_Prevdatastatus.ATT_UL3_L = bluecell_Currdatastatus.ATT_UL3_L;
  797. bluecell_Prevdatastatus.bluecell_User_UL3_H = bluecell_Currdatastatus.bluecell_User_UL3_H;
  798. bluecell_Prevdatastatus.bluecell_User_UL3_L = bluecell_Currdatastatus.bluecell_User_UL3_L;
  799. val = PE43711_Calc(&Att_UL3.Table_0_0_dBm,// Table Offset
  800. Curr.ATT_UL3_H,// Hidden Atten High bit
  801. Curr.ATT_UL3_L,// Hidden Atten Low bit
  802. bluecell_Currdatastatus.bluecell_User_UL3_H,// User Atten High Bit
  803. bluecell_Currdatastatus.bluecell_User_UL3_L);// User Atten Low Bit
  804. // printf("%d val = %x \r\n",__LINE__,val);
  805. PE43711_atten_ctrl(ALL_ATT.ATT_UL3,val);
  806. bluecell_Prevdatastatus.ATT_UL4_H = bluecell_Currdatastatus.ATT_UL4_H;
  807. bluecell_Prevdatastatus.ATT_UL4_L = bluecell_Currdatastatus.ATT_UL4_L;
  808. bluecell_Prevdatastatus.bluecell_User_UL4_H = bluecell_Currdatastatus.bluecell_User_UL4_H;
  809. bluecell_Prevdatastatus.bluecell_User_UL4_L = bluecell_Currdatastatus.bluecell_User_UL4_L;
  810. val = PE43711_Calc(&Att_UL4.Table_0_0_dBm,// Table Offset
  811. Curr.ATT_UL4_H,// Hidden Atten High bit
  812. Curr.ATT_UL4_L,// Hidden Atten Low bit
  813. bluecell_Currdatastatus.bluecell_User_UL4_H,// User Atten High Bit
  814. bluecell_Currdatastatus.bluecell_User_UL4_L);// User Atten Low Bit
  815. // printf("%d val = %x \r\n",__LINE__,val);
  816. PE43711_atten_ctrl(ALL_ATT.ATT_UL4,val);
  817. // memcpy(&bluecell_Prevdatastatus.ATT_DL1_H,&bluecell_Currdatastatus.ATT_DL1_H,32);
  818. #if 0 // PYJ.2020.04.21_BEGIN --
  819. if((Curr.ULO_ALC_Threshold_H != Prev.ULO_ALC_Threshold_H
  820. ||Curr.ULO_ALC_Threshold_L != Prev.ULO_ALC_Threshold_L)
  821. ||(Curr.bluecell_User_UL1_H != Prev.bluecell_User_UL1_H
  822. ||Curr.bluecell_User_UL1_L != Prev.bluecell_User_UL1_L)){
  823. bluecell_Prevdatastatus.ULO_ALC_Threshold_H = bluecell_Currdatastatus.ULO_ALC_Threshold_H;
  824. bluecell_Prevdatastatus.ULO_ALC_Threshold_L = bluecell_Currdatastatus.ULO_ALC_Threshold_L;
  825. bluecell_Prevdatastatus.bluecell_User_UL1_H = bluecell_Currdatastatus.bluecell_User_UL1_H;
  826. bluecell_Prevdatastatus.bluecell_User_UL1_L = bluecell_Currdatastatus.bluecell_User_UL1_L;
  827. val = PE43711_Calc(&Att_UL1.Table_0_0_dBm,
  828. Curr.ULO_ALC_Threshold_H,
  829. Curr.ULO_ALC_Threshold_L,
  830. bluecell_Currdatastatus.bluecell_User_DL1_H,
  831. bluecell_Currdatastatus.bluecell_User_DL1_L);
  832. // val = PE43711_DataToHexConvert(ret);
  833. // PE43711_atten_ctrl(ALL_ATT.ATT_DL1,val);
  834. }
  835. if((Curr.ULO_ALC_Threshold_H != Prev.ULO_ALC_Threshold_H
  836. ||Curr.ULO_ALC_Threshold_L != Prev.ULO_ALC_Threshold_L)
  837. ||(Curr.bluecell_User_UL2_H != Prev.bluecell_User_UL2_H
  838. ||Curr.bluecell_User_UL2_L != Prev.bluecell_User_UL2_L)){
  839. bluecell_Prevdatastatus.ULO_ALC_Threshold_H = bluecell_Currdatastatus.ULO_ALC_Threshold_H;
  840. bluecell_Prevdatastatus.ULO_ALC_Threshold_L = bluecell_Currdatastatus.ULO_ALC_Threshold_L;
  841. bluecell_Prevdatastatus.bluecell_User_UL2_H = bluecell_Currdatastatus.bluecell_User_UL2_H;
  842. bluecell_Prevdatastatus.bluecell_User_UL2_L = bluecell_Currdatastatus.bluecell_User_UL2_L;
  843. val = PE43711_Calc(&Att_UL2.Table_0_0_dBm,
  844. Curr.ATT_ALC2_MAX_H,
  845. Curr.ATT_ALC2_MAX_L,
  846. bluecell_Currdatastatus.bluecell_User_DL2_H,
  847. bluecell_Currdatastatus.bluecell_User_DL2_L);
  848. // PE43711_atten_ctrl(ALL_ATT.ATT_DL1,val);
  849. }
  850. if((Curr.ULO_ALC_Threshold_H != Prev.ULO_ALC_Threshold_H
  851. ||Curr.ULO_ALC_Threshold_L != Prev.ULO_ALC_Threshold_L)
  852. ||(Curr.bluecell_User_UL3_H != Prev.bluecell_User_UL3_H
  853. ||Curr.bluecell_User_UL3_L != Prev.bluecell_User_UL3_L)){
  854. bluecell_Prevdatastatus.ULO_ALC_Threshold_H = bluecell_Currdatastatus.ULO_ALC_Threshold_H;
  855. bluecell_Prevdatastatus.ULO_ALC_Threshold_L = bluecell_Currdatastatus.ULO_ALC_Threshold_L;
  856. bluecell_Prevdatastatus.bluecell_User_UL3_H = bluecell_Currdatastatus.bluecell_User_UL3_H;
  857. bluecell_Prevdatastatus.bluecell_User_UL3_L = bluecell_Currdatastatus.bluecell_User_UL3_L;
  858. val = PE43711_Calc(&Att_UL3.Table_0_0_dBm,
  859. Curr.ATT_ALC3_MAX_H,
  860. Curr.ATT_ALC3_MAX_L,
  861. bluecell_Currdatastatus.bluecell_User_DL3_H,
  862. bluecell_Currdatastatus.bluecell_User_DL3_L);
  863. // PE43711_atten_ctrl(ALL_ATT.ATT_DL1,val);
  864. }
  865. if((Curr.ULO_ALC_Threshold_H != Prev.ULO_ALC_Threshold_H
  866. ||Curr.ULO_ALC_Threshold_L != Prev.ULO_ALC_Threshold_L)
  867. ||(Curr.bluecell_User_UL4_H != Prev.bluecell_User_UL4_H
  868. ||Curr.bluecell_User_UL4_L != Prev.bluecell_User_UL4_L)){
  869. // printf("Curr.ATT_ALC4_MAX_H : %x Curr.ATT_ALC4_MAX_L : %x\r\n",Curr.ATT_ALC4_MAX_H,Curr.ATT_ALC4_MAX_L);
  870. bluecell_Prevdatastatus.ULO_ALC_Threshold_H = bluecell_Currdatastatus.ULO_ALC_Threshold_H;
  871. bluecell_Prevdatastatus.ULO_ALC_Threshold_L = bluecell_Currdatastatus.ULO_ALC_Threshold_L;
  872. bluecell_Prevdatastatus.bluecell_User_UL4_H = bluecell_Currdatastatus.bluecell_User_UL4_H;
  873. bluecell_Prevdatastatus.bluecell_User_UL4_L = bluecell_Currdatastatus.bluecell_User_UL4_L;
  874. val = PE43711_Calc(&Att_UL4.Table_0_0_dBm,
  875. Curr.ATT_ALC4_MAX_H,
  876. Curr.ATT_ALC4_MAX_L,
  877. bluecell_Currdatastatus.bluecell_User_DL4_H,
  878. bluecell_Currdatastatus.bluecell_User_DL4_L);
  879. // PE43711_atten_ctrl(ALL_ATT.ATT_DL1,val);
  880. }
  881. if((Curr.ULO_ALC_Threshold_H != Prev.ULO_ALC_Threshold_H
  882. ||Curr.ULO_ALC_Threshold_L != Prev.ULO_ALC_Threshold_L)
  883. ||(Curr.bluecell_User_UL1_H != Prev.bluecell_User_UL1_H
  884. ||Curr.bluecell_User_UL1_L != Prev.bluecell_User_UL1_L)){
  885. bluecell_Prevdatastatus.ULO_ALC_Threshold_H = bluecell_Currdatastatus.ULO_ALC_Threshold_H;
  886. bluecell_Prevdatastatus.ULO_ALC_Threshold_L = bluecell_Currdatastatus.ULO_ALC_Threshold_L;
  887. bluecell_Prevdatastatus.bluecell_User_UL1_H = bluecell_Currdatastatus.bluecell_User_UL1_H;
  888. bluecell_Prevdatastatus.bluecell_User_UL1_L = bluecell_Currdatastatus.bluecell_User_UL1_L;
  889. val = PE43711_Calc(&Att_DL1.Table_0_0_dBm,
  890. Curr.ULO_ALC_Threshold_H,
  891. Curr.ULO_ALC_Threshold_L,
  892. bluecell_Currdatastatus.bluecell_User_UL1_H,
  893. bluecell_Currdatastatus.bluecell_User_UL1_L);
  894. // PE43711_atten_ctrl(ALL_ATT.ATT_DL1,val);
  895. }
  896. if((Curr.ATT_ALC2_MIN_H != Prev.ATT_ALC2_MIN_H
  897. ||Curr.ATT_ALC2_MIN_L != Prev.ATT_ALC2_MIN_L)
  898. ||(Curr.bluecell_User_UL2_H != Prev.bluecell_User_UL2_H
  899. ||Curr.bluecell_User_UL2_L != Prev.bluecell_User_UL2_L)){
  900. bluecell_Prevdatastatus.ATT_ALC2_MIN_H = bluecell_Currdatastatus.ATT_ALC2_MIN_H;
  901. bluecell_Prevdatastatus.ATT_ALC2_MIN_L = bluecell_Currdatastatus.ATT_ALC2_MIN_L;
  902. bluecell_Prevdatastatus.bluecell_User_UL2_H = bluecell_Currdatastatus.bluecell_User_UL2_H;
  903. bluecell_Prevdatastatus.bluecell_User_UL2_L = bluecell_Currdatastatus.bluecell_User_UL2_L;
  904. val = PE43711_Calc(&Att_DL2.Table_0_0_dBm,
  905. Curr.ATT_ALC2_MIN_H,
  906. Curr.ATT_ALC2_MIN_L,
  907. bluecell_Currdatastatus.bluecell_User_UL2_H,
  908. bluecell_Currdatastatus.bluecell_User_UL2_L);
  909. // PE43711_atten_ctrl(ALL_ATT.ATT_DL1,val);
  910. }
  911. if((Curr.ATT_ALC3_MIN_H != Prev.ATT_ALC3_MIN_H
  912. ||Curr.ATT_ALC3_MIN_L != Prev.ATT_ALC3_MIN_L)
  913. ||(Curr.bluecell_User_UL3_H != Prev.bluecell_User_UL3_H
  914. ||Curr.bluecell_User_UL3_L != Prev.bluecell_User_UL3_L)){
  915. bluecell_Prevdatastatus.ATT_ALC3_MIN_H = bluecell_Currdatastatus.ATT_ALC3_MIN_H;
  916. bluecell_Prevdatastatus.ATT_ALC3_MIN_L = bluecell_Currdatastatus.ATT_ALC3_MIN_L;
  917. bluecell_Prevdatastatus.bluecell_User_UL3_H = bluecell_Currdatastatus.bluecell_User_UL3_H;
  918. bluecell_Prevdatastatus.bluecell_User_UL3_L = bluecell_Currdatastatus.bluecell_User_UL3_L;
  919. val = PE43711_Calc(&Att_DL3.Table_0_0_dBm,
  920. Curr.ATT_ALC3_MIN_H,
  921. Curr.ATT_ALC3_MIN_L,
  922. bluecell_Currdatastatus.bluecell_User_UL3_H,
  923. bluecell_Currdatastatus.bluecell_User_UL3_L);
  924. // PE43711_atten_ctrl(ALL_ATT.ATT_DL1,val);
  925. }
  926. if((Curr.ATT_ALC4_MIN_H != Prev.ATT_ALC4_MIN_H
  927. ||Curr.ATT_ALC4_MIN_L != Prev.ATT_ALC4_MIN_L)
  928. ||(Curr.bluecell_User_UL4_H != Prev.bluecell_User_UL4_H
  929. ||Curr.bluecell_User_UL4_L != Prev.bluecell_User_UL4_L)){
  930. bluecell_Prevdatastatus.ATT_ALC4_MIN_H = bluecell_Currdatastatus.ATT_ALC4_MIN_H;
  931. bluecell_Prevdatastatus.ATT_ALC4_MIN_L = bluecell_Currdatastatus.ATT_ALC4_MIN_L;
  932. bluecell_Prevdatastatus.bluecell_User_UL4_H = bluecell_Currdatastatus.bluecell_User_UL4_H;
  933. bluecell_Prevdatastatus.bluecell_User_UL4_L = bluecell_Currdatastatus.bluecell_User_UL4_L;
  934. val = PE43711_Calc(&Att_DL4.Table_0_0_dBm,
  935. Curr.ATT_ALC4_MIN_H,
  936. Curr.ATT_ALC4_MIN_L,
  937. bluecell_Currdatastatus.bluecell_User_UL4_H,
  938. bluecell_Currdatastatus.bluecell_User_UL4_L);
  939. // PE43711_atten_ctrl(ALL_ATT.ATT_DL1,val);
  940. }
  941. #endif // PYJ.2020.04.21_END --
  942. }
  943. #endif // PYJ.2020.05.25_END --
  944. void Bluecell_StructCpy(uint8_t* dst,uint8_t* src,uint16_t size){
  945. for(int i = 0; i < size; i++){
  946. dst[i] = src[i];
  947. }
  948. }
  949. int16_t ConvertTo2byte(uint8_t highbit, uint8_t lowbit){
  950. int16_t ret = 0;
  951. ret += ((highbit << 8) & 0xFF00);
  952. ret += (lowbit & 0x00FF);
  953. return ret;
  954. }
  955. OneByteToTwoByte ConvertTo1Byte(uint16_t data){
  956. OneByteToTwoByte ret;
  957. ret.High_bit = ((data & 0xFF00) >> 8);
  958. ret.Low_bit = ((data & 0x00FF));
  959. return ret;
  960. }
  961. void Bluecell_Struct2byteCopyFunction(uint8_t* dst,uint16_t* src,uint8_t size){
  962. OneByteToTwoByte convert;
  963. for(int i = 0; i < (size / 2); i++){
  964. convert = ConvertTo1Byte(src[i]);
  965. dst[i * 2] = convert.High_bit;
  966. dst[i * 2 + 1] = convert.Low_bit;
  967. }
  968. }
  969. void Bluecell_structprintf(uint8_t* dst,uint8_t size){
  970. for(int i = 0; i < size; i++){
  971. printf("Index[%d]%x \r\n",i,dst[i]);
  972. }
  973. }
  974. void Bluecell_DataCopy(uint8_t* dst,uint8_t* src,uint16_t size){
  975. // printf("Setting Start Value\r\n");
  976. for(int i = 0; i < size; i++){
  977. dst[i] = src[i];
  978. // printf("%02x ",src[i]);
  979. }
  980. // printf("Setting Start Value END \r\n");
  981. }
  982. void MBIC_TableDataCopy(uint8_t* dst,uint8_t* src,uint16_t size){
  983. dst[MBIC_TableIndex_Unit_Type] = UNIT_TYPE_MBIC;
  984. dst[MBIC_TableIndex_Reseved] = 0;
  985. dst[MBIC_TableIndex_Number] = dst[MBIC_TableIndex_Number];
  986. // printf("\r\dst[MBIC_TableIndex_Number] : %d \r\n",dst[MBIC_TableIndex_Number]);
  987. dst[MBIC_TableIndex_Ref] = UNIT_TYPE_MBIC; // Check
  988. if(dst[MBIC_TableIndex_Number] >= DLI_P1_ATT_Accuracy_Table_Number
  989. &&dst[MBIC_TableIndex_Number] <= ULO_P4_ATT_Accuracy_Table_Number ){
  990. dst[MBIC_TableIndex_Length] = size; //
  991. }
  992. else{
  993. dst[MBIC_TableIndex_Length] = size / 2; //
  994. }
  995. for(int i = 0; i < size; i++){
  996. dst[i + MBIC_TableIndex_Max] = src[i];
  997. // printf("SRC : %x \r\n",src[i]);
  998. }
  999. }
  1000. void MBIC_TableHeaderCopy(uint8_t* src,uint16_t size){
  1001. src[MBIC_TableIndex_Unit_Type] = UNIT_TYPE_MBIC;
  1002. src[MBIC_TableIndex_Reseved] = 0;
  1003. src[MBIC_TableIndex_Number] = src[MBIC_PAYLOADSTART + 2];
  1004. if(src[MBIC_TableIndex_Number] >= DLI_P1_ATT_Accuracy_Table_Number
  1005. &&src[MBIC_TableIndex_Number] <= ULO_P4_ATT_Accuracy_Table_Number ){
  1006. src[MBIC_TableIndex_Length] = size; //
  1007. }
  1008. else{
  1009. src[MBIC_TableIndex_Length] = size / 2; //
  1010. }
  1011. }
  1012. void Bluecell_TableLoad(uint8_t* data,uint8_t type){
  1013. uint8_t tabletype = type;
  1014. // OneByteToTwoByte data;
  1015. // printf("%s : %x \r\n",__func__,tabletype);
  1016. //INDEX :5 COpy Start
  1017. switch(tabletype){
  1018. case DLI_P1_ATT_Accuracy_Table_Number:
  1019. EEPROM_M24C08_Read(EEPROM_M24C08_ID ,EEPROM_ATT_BASE ,&Att_DL1.Table_0_0_dBm,sizeof(ATT_TABLE_st) );
  1020. Bluecell_DataCopy(&data[BLUECELL_DATA + 1],&Att_DL1.Table_0_0_dBm,sizeof(ATT_TABLE_st));
  1021. // Bluecell_structprintf(&Att_DL1.Table_0_0_dBm,sizeof(ATT_TABLE_st));
  1022. data[BLUECELL_LENGTH] = (sizeof(ATT_TABLE_st)) + 7 - 3;
  1023. break;
  1024. case DLI_P2_ATT_Accuracy_Table_Number:
  1025. EEPROM_M24C08_Read(EEPROM_M24C08_ID ,(EEPROM_ATT_DL1_TABLE_ADDRESDS),&Att_DL2.Table_0_0_dBm,sizeof(ATT_TABLE_st) );
  1026. Bluecell_DataCopy(&data[BLUECELL_DATA + 1],&Att_DL2.Table_0_0_dBm,sizeof(ATT_TABLE_st));
  1027. data[BLUECELL_LENGTH] = (sizeof(ATT_TABLE_st)) + 7 - 3;
  1028. break;
  1029. case DLI_P3_ATT_Accuracy_Table_Number:
  1030. EEPROM_M24C08_Read(EEPROM_M24C08_ID ,(EEPROM_ATT_DL2_TABLE_ADDRESDS),&Att_DL3.Table_0_0_dBm,sizeof(ATT_TABLE_st) );
  1031. Bluecell_DataCopy(&data[BLUECELL_DATA + 1],&Att_DL3.Table_0_0_dBm,sizeof(ATT_TABLE_st));
  1032. data[BLUECELL_LENGTH] = (sizeof(ATT_TABLE_st)) + 7 - 3;
  1033. break;
  1034. case DLI_P4_ATT_Accuracy_Table_Number:
  1035. EEPROM_M24C08_Read(EEPROM_M24C08_ID ,(EEPROM_ATT_DL3_TABLE_ADDRESDS),&Att_DL4.Table_0_0_dBm,sizeof(ATT_TABLE_st) );
  1036. Bluecell_DataCopy(&data[BLUECELL_DATA + 1],&Att_DL4.Table_0_0_dBm,sizeof(ATT_TABLE_st));
  1037. data[BLUECELL_LENGTH] = (sizeof(ATT_TABLE_st)) + 7 - 3;
  1038. break;
  1039. case ULO_P1_ATT_Accuracy_Table_Number:
  1040. EEPROM_M24C08_Read(EEPROM_M24C08_ID ,(EEPROM_ATT_DL4_TABLE_ADDRESDS),&Att_UL1.Table_0_0_dBm,sizeof(ATT_TABLE_st) );
  1041. Bluecell_DataCopy(&data[BLUECELL_DATA + 1],&Att_UL1.Table_0_0_dBm,sizeof(ATT_TABLE_st));
  1042. data[BLUECELL_LENGTH] = (sizeof(ATT_TABLE_st)) + 7 - 3;
  1043. break;
  1044. case ULO_P2_ATT_Accuracy_Table_Number:
  1045. EEPROM_M24C08_Read(EEPROM_M24C08_ID ,(EEPROM_ATT_UL1_TABLE_ADDRESDS),&Att_UL2.Table_0_0_dBm,sizeof(ATT_TABLE_st) );
  1046. Bluecell_DataCopy(&data[BLUECELL_DATA + 1],&Att_UL2.Table_0_0_dBm,sizeof(ATT_TABLE_st));
  1047. data[BLUECELL_LENGTH] = (sizeof(ATT_TABLE_st)) + 7 - 3;
  1048. break;
  1049. case ULO_P3_ATT_Accuracy_Table_Number:
  1050. EEPROM_M24C08_Read(EEPROM_M24C08_ID ,(EEPROM_ATT_UL2_TABLE_ADDRESDS),&Att_UL3.Table_0_0_dBm,sizeof(ATT_TABLE_st) );
  1051. Bluecell_DataCopy(&data[BLUECELL_DATA + 1],&Att_UL3.Table_0_0_dBm,sizeof(ATT_TABLE_st));
  1052. data[BLUECELL_LENGTH] = (sizeof(ATT_TABLE_st)) + 7 - 3;
  1053. break;
  1054. case ULO_P4_ATT_Accuracy_Table_Number:
  1055. EEPROM_M24C08_Read(EEPROM_M24C08_ID ,(EEPROM_ATT_UL3_TABLE_ADDRESDS),&Att_UL4.Table_0_0_dBm,sizeof(ATT_TABLE_st) );
  1056. Bluecell_DataCopy(&data[BLUECELL_DATA + 1],&Att_UL4.Table_0_0_dBm,sizeof(ATT_TABLE_st));
  1057. data[BLUECELL_LENGTH] = (sizeof(ATT_TABLE_st)) + 7 - 3;
  1058. break;
  1059. case DLI_P1_Level_Table_Number:
  1060. EEPROM_M24C08_Read(EEPROM_M24C08_ID ,(EEPROM_ATT_UL4_TABLE_ADDRESDS),&Det_DL1.Table_Det5_dBm_H,sizeof(DET_TABLEDL_st) );
  1061. Bluecell_DataCopy(&data[BLUECELL_DATA + 1],&Det_DL1.Table_Det5_dBm_H,sizeof(DET_TABLEDL_st));
  1062. data[BLUECELL_LENGTH] = (sizeof(DET_TABLEDL_st)) + 7 - 3;
  1063. break;
  1064. case DLI_P2_Level_Table_Number:
  1065. EEPROM_M24C08_Read(EEPROM_M24C08_ID ,(EEPROM_DET_DL1_TABLE_ADDRESDS),&Det_DL2.Table_Det5_dBm_H,sizeof(DET_TABLEDL_st) );
  1066. Bluecell_DataCopy(&data[BLUECELL_DATA + 1],&Det_DL2.Table_Det5_dBm_H,sizeof(DET_TABLEDL_st));
  1067. data[BLUECELL_LENGTH] = (sizeof(DET_TABLEDL_st)) + 7 - 3;
  1068. break;
  1069. case DLI_P3_Level_Table_Number:
  1070. EEPROM_M24C08_Read(EEPROM_M24C08_ID ,(EEPROM_DET_DL2_TABLE_ADDRESDS),&Det_DL3.Table_Det5_dBm_H,sizeof(DET_TABLEDL_st) );
  1071. Bluecell_DataCopy(&data[BLUECELL_DATA + 1],&Det_DL3.Table_Det5_dBm_H,sizeof(DET_TABLEDL_st));
  1072. data[BLUECELL_LENGTH] = (sizeof(DET_TABLEDL_st)) + 7 - 3;
  1073. break;
  1074. case DLI_P4_Level_Table_Number:
  1075. EEPROM_M24C08_Read(EEPROM_M24C08_ID ,(EEPROM_DET_DL3_TABLE_ADDRESDS),&Det_DL4.Table_Det5_dBm_H,sizeof(DET_TABLEDL_st) );
  1076. Bluecell_DataCopy(&data[BLUECELL_DATA + 1],&Det_DL4.Table_Det5_dBm_H,sizeof(DET_TABLEDL_st));
  1077. data[BLUECELL_LENGTH] = (sizeof(DET_TABLEDL_st)) + 7 - 3;
  1078. break;
  1079. case ULO_P1_Level_Table_Number:
  1080. EEPROM_M24C08_Read(EEPROM_M24C08_ID ,(EEPROM_DET_DL4_TABLE_ADDRESDS),&Det_UL1.Table_Det_15_dBm_H,sizeof(DET_TABLEUL_st) );
  1081. Bluecell_DataCopy(&data[BLUECELL_DATA + 1],&Det_UL1.Table_Det_15_dBm_H,sizeof(DET_TABLEUL_st));
  1082. data[BLUECELL_LENGTH] = (sizeof(DET_TABLEUL_st)) + 7 - 3;
  1083. break;
  1084. case ULO_P2_Level_Table_Number:
  1085. EEPROM_M24C08_Read(EEPROM_M24C08_ID ,(EEPROM_DET_UL1_TABLE_ADDRESDS),&Det_UL2.Table_Det_15_dBm_H,sizeof(DET_TABLEUL_st) );
  1086. Bluecell_DataCopy(&data[BLUECELL_DATA + 1],&Det_UL2.Table_Det_15_dBm_H,sizeof(DET_TABLEUL_st));
  1087. data[BLUECELL_LENGTH] = (sizeof(DET_TABLEUL_st)) + 7 - 3;
  1088. break;
  1089. case ULO_P3_Level_Table_Number:
  1090. EEPROM_M24C08_Read(EEPROM_M24C08_ID ,(EEPROM_DET_UL2_TABLE_ADDRESDS),&Det_UL3.Table_Det_15_dBm_H,sizeof(DET_TABLEUL_st) );
  1091. Bluecell_DataCopy(&data[BLUECELL_DATA + 1],&Det_UL3.Table_Det_15_dBm_H,sizeof(DET_TABLEUL_st));
  1092. data[BLUECELL_LENGTH] = (sizeof(DET_TABLEUL_st)) + 7 - 3;
  1093. break;
  1094. case ULO_P4_Level_Table_Number:
  1095. EEPROM_M24C08_Read(EEPROM_M24C08_ID ,(EEPROM_DET_UL3_TABLE_ADDRESDS),&Det_UL4.Table_Det_15_dBm_H,sizeof(DET_TABLEUL_st) );
  1096. Bluecell_DataCopy(&data[BLUECELL_DATA + 1],&Det_UL4.Table_Det_15_dBm_H,sizeof(DET_TABLEUL_st));
  1097. data[BLUECELL_LENGTH] = (sizeof(DET_TABLEUL_st)) + 7 - 3;
  1098. break;
  1099. case DLI_P1_ATT_Temp_guarantee_Table_Number:
  1100. EEPROM_M24C08_Read(EEPROM_M24C08_ID ,(EEPROM_DET_UL4_TABLE_ADDRESDS),&Temp_DL1.Table_1_Temp,sizeof(TEMP_TABLE_st) );
  1101. Bluecell_DataCopy(&data[BLUECELL_DATA + 1],&Temp_DL1.Table_1_Temp,sizeof(TEMP_TABLE_st));
  1102. data[BLUECELL_LENGTH] = (sizeof(TEMP_TABLE_st)) + 7 - 3;
  1103. break;
  1104. case DLI_P2_ATT_Temp_guarantee_Table_Number:
  1105. EEPROM_M24C08_Read(EEPROM_M24C08_ID ,(EEPROM_TEMP_DL1_TABLE_ADDRESDS),&Temp_DL2.Table_1_Temp,sizeof(TEMP_TABLE_st) );
  1106. Bluecell_DataCopy(&data[BLUECELL_DATA + 1],&Temp_DL2.Table_1_Temp,sizeof(TEMP_TABLE_st));
  1107. data[BLUECELL_LENGTH] = (sizeof(TEMP_TABLE_st)) + 7 - 3;
  1108. break;
  1109. case DLI_P3_ATT_Temp_guarantee_Table_Number:
  1110. EEPROM_M24C08_Read(EEPROM_M24C08_ID ,(EEPROM_TEMP_DL2_TABLE_ADDRESDS),&Temp_DL3.Table_1_Temp,sizeof(TEMP_TABLE_st) );
  1111. Bluecell_DataCopy(&data[BLUECELL_DATA + 1],&Temp_DL3.Table_1_Temp,sizeof(TEMP_TABLE_st));
  1112. data[BLUECELL_LENGTH] = (sizeof(TEMP_TABLE_st)) + 7 - 3;
  1113. break;
  1114. case DLI_P4_ATT_Temp_guarantee_Table_Number:
  1115. EEPROM_M24C08_Read(EEPROM_M24C08_ID ,(EEPROM_TEMP_DL3_TABLE_ADDRESDS),&Temp_DL4.Table_1_Temp,sizeof(TEMP_TABLE_st) );
  1116. Bluecell_DataCopy(&data[BLUECELL_DATA + 1],&Temp_DL4.Table_1_Temp,sizeof(TEMP_TABLE_st));
  1117. data[BLUECELL_LENGTH] = (sizeof(TEMP_TABLE_st)) + 7 - 3;
  1118. break;
  1119. case ULO_P1_ATT_Temp_guarantee_Table_Number:
  1120. EEPROM_M24C08_Read(EEPROM_M24C08_ID ,(EEPROM_TEMP_DL4_TABLE_ADDRESDS),&Temp_UL1.Table_1_Temp,sizeof(TEMP_TABLE_st) );
  1121. Bluecell_DataCopy(&data[BLUECELL_DATA + 1],&Temp_UL1.Table_1_Temp,sizeof(TEMP_TABLE_st));
  1122. data[BLUECELL_LENGTH] = (sizeof(TEMP_TABLE_st)) + 7 - 3;
  1123. break;
  1124. case ULO_P2_ATT_Temp_guarantee_Table_Number:
  1125. EEPROM_M24C08_Read(EEPROM_M24C08_ID ,(EEPROM_TEMP_UL1_TABLE_ADDRESDS),&Temp_UL2.Table_1_Temp,sizeof(TEMP_TABLE_st) );
  1126. Bluecell_DataCopy(&data[BLUECELL_DATA + 1],&Temp_UL2.Table_1_Temp,sizeof(TEMP_TABLE_st));
  1127. data[BLUECELL_LENGTH] = (sizeof(TEMP_TABLE_st)) + 7 - 3;
  1128. break;
  1129. case ULO_P3_ATT_Temp_guarantee_Table_Number:
  1130. EEPROM_M24C08_Read(EEPROM_M24C08_ID ,(EEPROM_TEMP_UL2_TABLE_ADDRESDS),&Temp_UL3.Table_1_Temp,sizeof(TEMP_TABLE_st) );
  1131. Bluecell_DataCopy(&data[BLUECELL_DATA + 1],&Temp_UL3.Table_1_Temp,sizeof(TEMP_TABLE_st));
  1132. data[BLUECELL_LENGTH] = (sizeof(TEMP_TABLE_st)) + 7 - 3;
  1133. break;
  1134. case ULO_P4_ATT_Temp_guarantee_Table_Number:
  1135. EEPROM_M24C08_Read(EEPROM_M24C08_ID ,(EEPROM_TEMP_UL3_TABLE_ADDRESDS),&Temp_UL4.Table_1_Temp,sizeof(TEMP_TABLE_st) );
  1136. Bluecell_DataCopy(&data[BLUECELL_DATA + 1],&Temp_UL4.Table_1_Temp,sizeof(TEMP_TABLE_st));
  1137. data[BLUECELL_LENGTH] = (sizeof(TEMP_TABLE_st)) + 7 - 3;
  1138. break;
  1139. }
  1140. }
  1141. void Bluecell_TableSave(uint8_t* data,uint8_t type){
  1142. uint8_t tabletype = type;
  1143. //printf("%s : %x \r\n",__func__,tabletype);
  1144. switch(tabletype){
  1145. case DLI_P1_ATT_Accuracy_Table_Number:
  1146. Bluecell_DataCopy(&Att_DL1.Table_0_0_dBm,&data[BLUECELL_DATA + 1],sizeof(ATT_TABLE_st));
  1147. EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_ATT_BASE) ,&Att_DL1.Table_0_0_dBm,sizeof(ATT_TABLE_st) );
  1148. break;
  1149. case DLI_P2_ATT_Accuracy_Table_Number:
  1150. Bluecell_DataCopy(&Att_DL2.Table_0_0_dBm,&data[BLUECELL_DATA + 1],sizeof(ATT_TABLE_st));
  1151. EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_ATT_DL1_TABLE_ADDRESDS),&Att_DL2.Table_0_0_dBm,sizeof(ATT_TABLE_st) );
  1152. // printf("ADDRESS : %d \r\n",EEPROM_ATT_DL1_TABLE_ADDRESDS );
  1153. break;
  1154. case DLI_P3_ATT_Accuracy_Table_Number:
  1155. Bluecell_DataCopy(&Att_DL3.Table_0_0_dBm,&data[BLUECELL_DATA + 1],sizeof(ATT_TABLE_st));
  1156. EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_ATT_DL2_TABLE_ADDRESDS),&Att_DL3.Table_0_0_dBm,sizeof(ATT_TABLE_st));
  1157. break;
  1158. case DLI_P4_ATT_Accuracy_Table_Number:
  1159. Bluecell_DataCopy(&Att_DL4.Table_0_0_dBm,&data[BLUECELL_DATA + 1],sizeof(ATT_TABLE_st));
  1160. EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_ATT_DL3_TABLE_ADDRESDS),&Att_DL4.Table_0_0_dBm,sizeof(ATT_TABLE_st));
  1161. break;
  1162. case ULO_P1_ATT_Accuracy_Table_Number:
  1163. Bluecell_DataCopy(&Att_UL1.Table_0_0_dBm,&data[BLUECELL_DATA + 1],sizeof(ATT_TABLE_st));
  1164. EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_ATT_DL4_TABLE_ADDRESDS),&Att_UL1.Table_0_0_dBm,sizeof(ATT_TABLE_st));
  1165. break;
  1166. case ULO_P2_ATT_Accuracy_Table_Number:
  1167. Bluecell_DataCopy(&Att_UL2.Table_0_0_dBm,&data[BLUECELL_DATA + 1],sizeof(ATT_TABLE_st));
  1168. EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_ATT_UL1_TABLE_ADDRESDS),&Att_UL2.Table_0_0_dBm,sizeof(ATT_TABLE_st));
  1169. break;
  1170. case ULO_P3_ATT_Accuracy_Table_Number:
  1171. Bluecell_DataCopy(&Att_UL3.Table_0_0_dBm,&data[BLUECELL_DATA + 1],sizeof(ATT_TABLE_st));
  1172. EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_ATT_UL2_TABLE_ADDRESDS),&Att_UL3.Table_0_0_dBm,sizeof(ATT_TABLE_st));
  1173. break;
  1174. case ULO_P4_ATT_Accuracy_Table_Number:
  1175. Bluecell_DataCopy(&Att_UL4.Table_0_0_dBm,&data[BLUECELL_DATA + 1],sizeof(ATT_TABLE_st));
  1176. EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_ATT_UL3_TABLE_ADDRESDS),&Att_UL4.Table_0_0_dBm,sizeof(ATT_TABLE_st));
  1177. break;
  1178. case DLI_P1_Level_Table_Number:
  1179. Bluecell_DataCopy(&Det_DL1.Table_Det5_dBm_H,&data[BLUECELL_DATA + 1],sizeof(DET_TABLEDL_st));
  1180. EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_ATT_UL4_TABLE_ADDRESDS),&Det_DL1.Table_Det5_dBm_H,sizeof(DET_TABLEDL_st));
  1181. break;
  1182. case DLI_P2_Level_Table_Number:
  1183. Bluecell_DataCopy(&Det_DL2.Table_Det5_dBm_H,&data[BLUECELL_DATA + 1],sizeof(DET_TABLEDL_st));
  1184. EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_DET_DL1_TABLE_ADDRESDS),&Det_DL2.Table_Det5_dBm_H,sizeof(DET_TABLEDL_st));
  1185. break;
  1186. case DLI_P3_Level_Table_Number:
  1187. Bluecell_DataCopy(&Det_DL3.Table_Det5_dBm_H,&data[BLUECELL_DATA + 1],sizeof(DET_TABLEDL_st));
  1188. EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_DET_DL2_TABLE_ADDRESDS),&Det_DL3.Table_Det5_dBm_H,sizeof(DET_TABLEDL_st));
  1189. break;
  1190. case DLI_P4_Level_Table_Number:
  1191. Bluecell_DataCopy(&Det_DL4.Table_Det5_dBm_H,&data[BLUECELL_DATA + 1],sizeof(DET_TABLEDL_st));
  1192. EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_DET_DL3_TABLE_ADDRESDS),&Det_DL4.Table_Det5_dBm_H,sizeof(DET_TABLEDL_st));
  1193. break;
  1194. case ULO_P1_Level_Table_Number:
  1195. Bluecell_DataCopy(&Det_UL1.Table_Det_15_dBm_H,&data[BLUECELL_DATA + 1],sizeof(DET_TABLEUL_st));
  1196. EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_DET_DL4_TABLE_ADDRESDS),&Det_UL1.Table_Det_15_dBm_H,sizeof(DET_TABLEUL_st));
  1197. break;
  1198. case ULO_P2_Level_Table_Number:
  1199. Bluecell_DataCopy(&Det_UL2.Table_Det_15_dBm_H,&data[BLUECELL_DATA + 1],sizeof(DET_TABLEUL_st));
  1200. EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_DET_UL1_TABLE_ADDRESDS),&Det_UL2.Table_Det_15_dBm_H,sizeof(DET_TABLEUL_st));
  1201. break;
  1202. case ULO_P3_Level_Table_Number:
  1203. Bluecell_DataCopy(&Det_UL3.Table_Det_15_dBm_H,&data[BLUECELL_DATA + 1],sizeof(DET_TABLEUL_st));
  1204. EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_DET_UL2_TABLE_ADDRESDS),&Det_UL3.Table_Det_15_dBm_H,sizeof(DET_TABLEUL_st));
  1205. break;
  1206. case ULO_P4_Level_Table_Number:
  1207. Bluecell_DataCopy(&Det_UL4.Table_Det_15_dBm_H,&data[BLUECELL_DATA + 1],sizeof(DET_TABLEUL_st));
  1208. EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_DET_UL3_TABLE_ADDRESDS),&Det_UL4.Table_Det_15_dBm_H,sizeof(DET_TABLEUL_st));
  1209. break;
  1210. case DLI_P1_ATT_Temp_guarantee_Table_Number:
  1211. Bluecell_DataCopy(&Temp_DL1.Table_1_Temp,&data[BLUECELL_DATA + 1],sizeof(TEMP_TABLE_st));
  1212. EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_DET_UL4_TABLE_ADDRESDS),&Temp_DL1.Table_1_Temp,sizeof(TEMP_TABLE_st));
  1213. break;
  1214. case DLI_P2_ATT_Temp_guarantee_Table_Number:
  1215. Bluecell_DataCopy(&Temp_DL2.Table_1_Temp,&data[BLUECELL_DATA + 1],sizeof(TEMP_TABLE_st));
  1216. EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_TEMP_DL1_TABLE_ADDRESDS),&Temp_DL2.Table_1_Temp,sizeof(TEMP_TABLE_st));
  1217. break;
  1218. case DLI_P3_ATT_Temp_guarantee_Table_Number:
  1219. Bluecell_DataCopy(&Temp_DL3.Table_1_Temp,&data[BLUECELL_DATA + 1],sizeof(TEMP_TABLE_st));
  1220. EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_TEMP_DL2_TABLE_ADDRESDS),&Temp_DL3.Table_1_Temp,sizeof(TEMP_TABLE_st));
  1221. break;
  1222. case DLI_P4_ATT_Temp_guarantee_Table_Number:
  1223. Bluecell_DataCopy(&Temp_DL4.Table_1_Temp,&data[BLUECELL_DATA + 1],sizeof(TEMP_TABLE_st));
  1224. EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_TEMP_DL3_TABLE_ADDRESDS),&Temp_DL4.Table_1_Temp,sizeof(TEMP_TABLE_st));
  1225. break;
  1226. case ULO_P1_ATT_Temp_guarantee_Table_Number:
  1227. Bluecell_DataCopy(&Temp_UL1.Table_1_Temp,&data[BLUECELL_DATA + 1],sizeof(TEMP_TABLE_st));
  1228. EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_TEMP_DL4_TABLE_ADDRESDS),&Temp_UL1.Table_1_Temp,sizeof(TEMP_TABLE_st));
  1229. break;
  1230. case ULO_P2_ATT_Temp_guarantee_Table_Number:
  1231. Bluecell_DataCopy(&Temp_UL2.Table_1_Temp,&data[BLUECELL_DATA + 1],sizeof(TEMP_TABLE_st));
  1232. EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_TEMP_UL1_TABLE_ADDRESDS),&Temp_UL2.Table_1_Temp,sizeof(TEMP_TABLE_st));
  1233. break;
  1234. case ULO_P3_ATT_Temp_guarantee_Table_Number:
  1235. Bluecell_DataCopy(&Temp_UL3.Table_1_Temp,&data[BLUECELL_DATA + 1],sizeof(TEMP_TABLE_st));
  1236. EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_TEMP_UL2_TABLE_ADDRESDS),&Temp_UL3.Table_1_Temp,sizeof(TEMP_TABLE_st));
  1237. break;
  1238. case ULO_P4_ATT_Temp_guarantee_Table_Number:
  1239. Bluecell_DataCopy(&Temp_UL4.Table_1_Temp,&data[BLUECELL_DATA + 1],sizeof(TEMP_TABLE_st));
  1240. EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_TEMP_UL3_TABLE_ADDRESDS),&Temp_UL4.Table_1_Temp,sizeof(TEMP_TABLE_st));
  1241. break;
  1242. }
  1243. }
  1244. //uint8_t tableTest[sizeof(DET_TABLEDL_st)] ={0,};
  1245. void MBIC_TableLoad(uint8_t* data,uint8_t type){
  1246. uint8_t tabletype = type;
  1247. // OneByteToTwoByte data;
  1248. // printf("%s : %x \r\n",__func__,tabletype);
  1249. //INDEX :5 COpy Start
  1250. data[MBIC_CMD_0] = 0xC0;
  1251. if( data[MBIC_PAYLOADSTART + MBIC_TableIndex_Length] > 70)
  1252. data[MBIC_PAYLOADSTART + MBIC_TableIndex_Length] = 70;
  1253. printf("\r\ntabletype : %d \r\n",tabletype);
  1254. switch(tabletype){
  1255. case DLI_P1_ATT_Accuracy_Table_Number:
  1256. // EEPROM_M24C08_Read(EEPROM_M24C08_ID ,EEPROM_ATT_BASE ,&Att_DL1.Table_0_0_dBm,sizeof(ATT_TABLE_st) );
  1257. MBIC_TableDataCopy(&data[MBIC_PAYLOADSTART],&Att_DL1.Table_0_0_dBm,sizeof(ATT_TABLE_st));
  1258. data[MBIC_PAYLOADSTART + MBIC_TableIndex_Ref] = Att_DL1.Table_Ref;
  1259. data[MBIC_PAYLOADSTART + MBIC_TableIndex_Length] = Att_DL1.Table_Length;
  1260. break;
  1261. case DLI_P2_ATT_Accuracy_Table_Number:
  1262. // EEPROM_M24C08_Read(EEPROM_M24C08_ID ,(EEPROM_ATT_DL1_TABLE_ADDRESDS),&Att_DL2.Table_0_0_dBm,sizeof(ATT_TABLE_st) );
  1263. MBIC_TableDataCopy(&data[MBIC_PAYLOADSTART],&Att_DL2.Table_0_0_dBm,sizeof(ATT_TABLE_st));
  1264. data[MBIC_PAYLOADSTART + MBIC_TableIndex_Ref] = Att_DL2.Table_Ref;
  1265. data[MBIC_PAYLOADSTART + MBIC_TableIndex_Length] = Att_DL2.Table_Length;
  1266. break;
  1267. case DLI_P3_ATT_Accuracy_Table_Number:
  1268. // EEPROM_M24C08_Read(EEPROM_M24C08_ID ,(EEPROM_ATT_DL2_TABLE_ADDRESDS),&Att_DL3.Table_0_0_dBm,sizeof(ATT_TABLE_st) );
  1269. MBIC_TableDataCopy(&data[MBIC_PAYLOADSTART],&Att_DL3.Table_0_0_dBm,sizeof(ATT_TABLE_st));
  1270. data[MBIC_PAYLOADSTART + MBIC_TableIndex_Ref] = Att_DL3.Table_Ref;
  1271. data[MBIC_PAYLOADSTART + MBIC_TableIndex_Length] = Att_DL3.Table_Length;
  1272. break;
  1273. case DLI_P4_ATT_Accuracy_Table_Number:
  1274. // EEPROM_M24C08_Read(EEPROM_M24C08_ID ,(EEPROM_ATT_DL3_TABLE_ADDRESDS),&Att_DL4.Table_0_0_dBm,sizeof(ATT_TABLE_st) );
  1275. MBIC_TableDataCopy(&data[MBIC_PAYLOADSTART],&Att_DL4.Table_0_0_dBm,sizeof(ATT_TABLE_st));
  1276. data[MBIC_PAYLOADSTART + MBIC_TableIndex_Ref] = Att_DL4.Table_Ref;
  1277. data[MBIC_PAYLOADSTART + MBIC_TableIndex_Length] = Att_DL4.Table_Length;
  1278. break;
  1279. case ULO_P1_ATT_Accuracy_Table_Number:
  1280. // EEPROM_M24C08_Read(EEPROM_M24C08_ID ,(EEPROM_ATT_DL4_TABLE_ADDRESDS),&Att_UL1.Table_0_0_dBm,sizeof(ATT_TABLE_st) );
  1281. MBIC_TableDataCopy(&data[MBIC_PAYLOADSTART],&Att_UL1.Table_0_0_dBm,sizeof(ATT_TABLE_st));
  1282. data[MBIC_PAYLOADSTART + MBIC_TableIndex_Ref] = Att_UL1.Table_Ref;
  1283. data[MBIC_PAYLOADSTART + MBIC_TableIndex_Length] = Att_UL1.Table_Length;
  1284. break;
  1285. case ULO_P2_ATT_Accuracy_Table_Number:
  1286. // EEPROM_M24C08_Read(EEPROM_M24C08_ID ,(EEPROM_ATT_UL1_TABLE_ADDRESDS),&Att_UL2.Table_0_0_dBm,sizeof(ATT_TABLE_st) );
  1287. MBIC_TableDataCopy(&data[MBIC_PAYLOADSTART],&Att_UL2.Table_0_0_dBm,sizeof(ATT_TABLE_st));
  1288. data[MBIC_PAYLOADSTART + MBIC_TableIndex_Ref] = Att_UL2.Table_Ref;
  1289. data[MBIC_PAYLOADSTART + MBIC_TableIndex_Length] = Att_UL2.Table_Length;
  1290. break;
  1291. case ULO_P3_ATT_Accuracy_Table_Number:
  1292. // EEPROM_M24C08_Read(EEPROM_M24C08_ID ,(EEPROM_ATT_UL2_TABLE_ADDRESDS),&Att_UL3.Table_0_0_dBm,sizeof(ATT_TABLE_st) );
  1293. MBIC_TableDataCopy(&data[MBIC_PAYLOADSTART],&Att_UL3.Table_0_0_dBm,sizeof(ATT_TABLE_st));
  1294. data[MBIC_PAYLOADSTART + MBIC_TableIndex_Ref] = Att_UL3.Table_Ref;
  1295. data[MBIC_PAYLOADSTART + MBIC_TableIndex_Length] = Att_UL3.Table_Length;
  1296. break;
  1297. case ULO_P4_ATT_Accuracy_Table_Number:
  1298. // EEPROM_M24C08_Read(EEPROM_M24C08_ID ,(EEPROM_ATT_UL3_TABLE_ADDRESDS),&Att_UL4.Table_0_0_dBm,sizeof(ATT_TABLE_st) );
  1299. MBIC_TableDataCopy(&data[MBIC_PAYLOADSTART],&Att_UL4.Table_0_0_dBm,sizeof(ATT_TABLE_st));
  1300. data[MBIC_PAYLOADSTART + MBIC_TableIndex_Ref] = Att_UL4.Table_Ref;
  1301. data[MBIC_PAYLOADSTART + MBIC_TableIndex_Length] = Att_UL4.Table_Length;
  1302. break;
  1303. case DLI_P1_Level_Table_Number:
  1304. // EEPROM_M24C08_Read(EEPROM_M24C08_ID ,(EEPROM_ATT_UL4_TABLE_ADDRESDS),&Det_DL1.Table_Det5_dBm_H,sizeof(DET_TABLEDL_st) );
  1305. MBIC_TableDataCopy(&data[MBIC_PAYLOADSTART],&Det_DL1.Table_Det5_dBm_H,sizeof(DET_TABLEDL_st));
  1306. data[MBIC_PAYLOADSTART + MBIC_TableIndex_Ref] = Det_DL1.Table_Ref;
  1307. data[MBIC_PAYLOADSTART + MBIC_TableIndex_Length] = Det_DL1.Table_Length;
  1308. break;
  1309. case DLI_P2_Level_Table_Number:
  1310. // EEPROM_M24C08_Read(EEPROM_M24C08_ID ,(EEPROM_DET_DL1_TABLE_ADDRESDS),&Det_DL2.Table_Det5_dBm_H,sizeof(DET_TABLEDL_st) );
  1311. MBIC_TableDataCopy(&data[MBIC_PAYLOADSTART],&Det_DL2.Table_Det5_dBm_H,sizeof(DET_TABLEDL_st));
  1312. data[MBIC_PAYLOADSTART + MBIC_TableIndex_Ref] = Det_DL2.Table_Ref;
  1313. data[MBIC_PAYLOADSTART + MBIC_TableIndex_Length] = Det_DL2.Table_Length;
  1314. break;
  1315. case DLI_P3_Level_Table_Number:
  1316. // EEPROM_M24C08_Read(EEPROM_M24C08_ID ,(EEPROM_DET_DL2_TABLE_ADDRESDS),&Det_DL3.Table_Det5_dBm_H,sizeof(DET_TABLEDL_st) );
  1317. MBIC_TableDataCopy(&data[MBIC_PAYLOADSTART],&Det_DL3.Table_Det5_dBm_H,sizeof(DET_TABLEDL_st));
  1318. data[MBIC_PAYLOADSTART + MBIC_TableIndex_Ref] = Det_DL3.Table_Ref;
  1319. data[MBIC_PAYLOADSTART + MBIC_TableIndex_Length] = Det_DL3.Table_Length;
  1320. break;
  1321. case DLI_P4_Level_Table_Number:
  1322. // EEPROM_M24C08_Read(EEPROM_M24C08_ID ,(EEPROM_DET_DL3_TABLE_ADDRESDS),&Det_DL4.Table_Det5_dBm_H,sizeof(DET_TABLEDL_st) );
  1323. MBIC_TableDataCopy(&data[MBIC_PAYLOADSTART],&Det_DL4.Table_Det5_dBm_H,sizeof(DET_TABLEDL_st));
  1324. data[MBIC_PAYLOADSTART + MBIC_TableIndex_Ref] = Det_DL4.Table_Ref;
  1325. data[MBIC_PAYLOADSTART + MBIC_TableIndex_Length] = Det_DL4.Table_Length;
  1326. break;
  1327. case ULO_P1_Level_Table_Number:
  1328. // EEPROM_M24C08_Read(EEPROM_M24C08_ID ,(EEPROM_DET_DL4_TABLE_ADDRESDS),&Det_UL1.Table_Det_15_dBm_H,sizeof(DET_TABLEUL_st) );
  1329. MBIC_TableDataCopy(&data[MBIC_PAYLOADSTART],&Det_UL1.Table_Det_15_dBm_H,sizeof(DET_TABLEUL_st));
  1330. data[MBIC_PAYLOADSTART + MBIC_TableIndex_Ref] = Det_UL1.Table_Ref;
  1331. data[MBIC_PAYLOADSTART + MBIC_TableIndex_Length] = Det_UL1.Table_Length;
  1332. break;
  1333. case ULO_P2_Level_Table_Number:
  1334. // EEPROM_M24C08_Read(EEPROM_M24C08_ID ,(EEPROM_DET_UL1_TABLE_ADDRESDS),&Det_UL2.Table_Det_15_dBm_H,sizeof(DET_TABLEUL_st) );
  1335. MBIC_TableDataCopy(&data[MBIC_PAYLOADSTART],&Det_UL2.Table_Det_15_dBm_H,sizeof(DET_TABLEUL_st));
  1336. data[MBIC_PAYLOADSTART + MBIC_TableIndex_Ref] = Det_UL2.Table_Ref;
  1337. data[MBIC_PAYLOADSTART + MBIC_TableIndex_Length] = Det_UL2.Table_Length;
  1338. printf("Det_UL2.Table_Length : %d \r\n",Det_UL2.Table_Length);
  1339. break;
  1340. case ULO_P3_Level_Table_Number:
  1341. // EEPROM_M24C08_Read(EEPROM_M24C08_ID ,(EEPROM_DET_UL2_TABLE_ADDRESDS),&Det_UL3.Table_Det_15_dBm_H,sizeof(DET_TABLEUL_st) );
  1342. MBIC_TableDataCopy(&data[MBIC_PAYLOADSTART],&Det_UL3.Table_Det_15_dBm_H,sizeof(DET_TABLEUL_st));
  1343. data[MBIC_PAYLOADSTART + MBIC_TableIndex_Ref] = Det_UL3.Table_Ref;
  1344. data[MBIC_PAYLOADSTART + MBIC_TableIndex_Length] = Det_UL3.Table_Length;
  1345. break;
  1346. case ULO_P4_Level_Table_Number:
  1347. // EEPROM_M24C08_Read(EEPROM_M24C08_ID ,(EEPROM_DET_UL3_TABLE_ADDRESDS),&Det_UL4.Table_Det_15_dBm_H,sizeof(DET_TABLEUL_st) );
  1348. MBIC_TableDataCopy(&data[MBIC_PAYLOADSTART],&Det_UL4.Table_Det_15_dBm_H,sizeof(DET_TABLEUL_st));
  1349. data[MBIC_PAYLOADSTART + MBIC_TableIndex_Ref] = Det_UL4.Table_Ref;
  1350. data[MBIC_PAYLOADSTART + MBIC_TableIndex_Length] = Det_UL4.Table_Length;
  1351. break;
  1352. case DLI_P1_ATT_Temp_guarantee_Table_Number:
  1353. // EEPROM_M24C08_Read(EEPROM_M24C08_ID ,(EEPROM_DET_UL4_TABLE_ADDRESDS),&Temp_DL1.Table_1_Temp,sizeof(TEMP_TABLE_st) );
  1354. MBIC_TableDataCopy(&data[MBIC_PAYLOADSTART],&Temp_DL1.Table_1_Temp,sizeof(TEMP_TABLE_st));
  1355. data[MBIC_PAYLOADSTART + MBIC_TableIndex_Ref] = Temp_DL1.Table_Ref;
  1356. data[MBIC_PAYLOADSTART + MBIC_TableIndex_Length] = Temp_DL1.Table_Length;
  1357. break;
  1358. case DLI_P2_ATT_Temp_guarantee_Table_Number:
  1359. MBIC_TableDataCopy(&data[MBIC_PAYLOADSTART],&Temp_DL2.Table_1_Temp,sizeof(TEMP_TABLE_st));
  1360. data[MBIC_PAYLOADSTART + MBIC_TableIndex_Ref] = Temp_DL2.Table_Ref;
  1361. data[MBIC_PAYLOADSTART + MBIC_TableIndex_Length] = Temp_DL2.Table_Length;
  1362. break;
  1363. case DLI_P3_ATT_Temp_guarantee_Table_Number:
  1364. MBIC_TableDataCopy(&data[MBIC_PAYLOADSTART],&Temp_DL3.Table_1_Temp,sizeof(TEMP_TABLE_st));
  1365. // MBIC_Table_Load_TempValueConvert(&data[MBIC_PAYLOADSTART]);
  1366. data[MBIC_PAYLOADSTART + MBIC_TableIndex_Ref] = Temp_DL3.Table_Ref;
  1367. data[MBIC_PAYLOADSTART + MBIC_TableIndex_Length] = Temp_DL3.Table_Length;
  1368. break;
  1369. case DLI_P4_ATT_Temp_guarantee_Table_Number:
  1370. // EEPROM_M24C08_Read(EEPROM_M24C08_ID ,(EEPROM_TEMP_DL3_TABLE_ADDRESDS),&Temp_DL4.Table_1_Temp,sizeof(TEMP_TABLE_st) );
  1371. MBIC_TableDataCopy(&data[MBIC_PAYLOADSTART],&Temp_DL4.Table_1_Temp,sizeof(TEMP_TABLE_st));
  1372. // MBIC_Table_Load_TempValueConvert(&data[MBIC_PAYLOADSTART]);
  1373. data[MBIC_PAYLOADSTART + MBIC_TableIndex_Ref] = Temp_DL4.Table_Ref;
  1374. data[MBIC_PAYLOADSTART + MBIC_TableIndex_Length] = Temp_DL4.Table_Length;
  1375. break;
  1376. case ULO_P1_ATT_Temp_guarantee_Table_Number:
  1377. // EEPROM_M24C08_Read(EEPROM_M24C08_ID ,(EEPROM_TEMP_DL4_TABLE_ADDRESDS),&Temp_UL1.Table_1_Temp,sizeof(TEMP_TABLE_st) );
  1378. MBIC_TableDataCopy(&data[MBIC_PAYLOADSTART],&Temp_UL1.Table_1_Temp,sizeof(TEMP_TABLE_st));
  1379. // MBIC_Table_Load_TempValueConvert(&data[MBIC_PAYLOADSTART]);
  1380. data[MBIC_PAYLOADSTART + MBIC_TableIndex_Ref] = Temp_UL1.Table_Ref;
  1381. data[MBIC_PAYLOADSTART + MBIC_TableIndex_Length] = Temp_UL1.Table_Length;
  1382. break;
  1383. case ULO_P2_ATT_Temp_guarantee_Table_Number:
  1384. // EEPROM_M24C08_Read(EEPROM_M24C08_ID ,(EEPROM_TEMP_UL1_TABLE_ADDRESDS),&Temp_UL2.Table_1_Temp,sizeof(TEMP_TABLE_st) );
  1385. MBIC_TableDataCopy(&data[MBIC_PAYLOADSTART],&Temp_UL2.Table_1_Temp,sizeof(TEMP_TABLE_st));
  1386. // MBIC_Table_Load_TempValueConvert(&data[MBIC_PAYLOADSTART]);
  1387. data[MBIC_PAYLOADSTART + MBIC_TableIndex_Ref] = Temp_UL2.Table_Ref;
  1388. data[MBIC_PAYLOADSTART + MBIC_TableIndex_Length] = Temp_UL2.Table_Length;
  1389. break;
  1390. case ULO_P3_ATT_Temp_guarantee_Table_Number:
  1391. // EEPROM_M24C08_Read(EEPROM_M24C08_ID ,(EEPROM_TEMP_UL2_TABLE_ADDRESDS),&Temp_UL3.Table_1_Temp,sizeof(TEMP_TABLE_st) );
  1392. MBIC_TableDataCopy(&data[MBIC_PAYLOADSTART],&Temp_UL3.Table_1_Temp,sizeof(TEMP_TABLE_st));
  1393. // MBIC_Table_Load_TempValueConvert(&data[MBIC_PAYLOADSTART]);
  1394. data[MBIC_PAYLOADSTART + MBIC_TableIndex_Ref] = Temp_UL3.Table_Ref;
  1395. data[MBIC_PAYLOADSTART + MBIC_TableIndex_Length] = Temp_UL3.Table_Length;
  1396. break;
  1397. case ULO_P4_ATT_Temp_guarantee_Table_Number:
  1398. // EEPROM_M24C08_Read(EEPROM_M24C08_ID ,(EEPROM_TEMP_UL3_TABLE_ADDRESDS),&Temp_UL4.Table_1_Temp,sizeof(TEMP_TABLE_st) );
  1399. MBIC_TableDataCopy(&data[MBIC_PAYLOADSTART],&Temp_UL4.Table_1_Temp,sizeof(TEMP_TABLE_st));
  1400. // MBIC_Table_Load_TempValueConvert(&data[MBIC_PAYLOADSTART]);
  1401. data[MBIC_PAYLOADSTART + MBIC_TableIndex_Ref] = Temp_UL4.Table_Ref;
  1402. data[MBIC_PAYLOADSTART + MBIC_TableIndex_Length] = Temp_UL4.Table_Length;
  1403. break;
  1404. }
  1405. printf("\rLoad MBIC_TableIndex_Number : %x \r\n",data[MBIC_PAYLOADSTART + MBIC_TableIndex_Number]);
  1406. }
  1407. void MBIC_TableSave(uint8_t* data,uint8_t type){
  1408. uint8_t tabletype = type;
  1409. //printf("%s : %x \r\n",__func__,tabletype);
  1410. if( data[MBIC_PAYLOADSTART + MBIC_TableIndex_Length] > 70)
  1411. data[MBIC_PAYLOADSTART + MBIC_TableIndex_Length] = 70;
  1412. // printf("data[MBIC_PAYLOADSTART + MBIC_TableIndex_Length] : %d \r\n",sizeof(ATT_TABLE_st) );
  1413. data[MBIC_CMD_0] = 0xC1;
  1414. switch(tabletype){
  1415. case DLI_P1_ATT_Accuracy_Table_Number:
  1416. Bluecell_DataCopy(&Att_DL1.Table_0_0_dBm,&data[MBIC_PAYLOADSTART + 5],sizeof(ATT_TABLE_st) );
  1417. Att_DL1.Table_Ref = data[MBIC_PAYLOADSTART + MBIC_TableIndex_Ref]; // Check
  1418. Att_DL1.Table_Length= data[MBIC_PAYLOADSTART + MBIC_TableIndex_Length];
  1419. EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_ATT_BASE) ,&Att_DL1.Table_0_0_dBm,sizeof(ATT_TABLE_st) );
  1420. MBIC_TableHeaderCopy(&data[MBIC_PAYLOADSTART + 5],sizeof(ATT_TABLE_st));
  1421. break;
  1422. case DLI_P2_ATT_Accuracy_Table_Number:
  1423. Bluecell_DataCopy(&Att_DL2.Table_0_0_dBm,&data[MBIC_PAYLOADSTART + 5],sizeof(ATT_TABLE_st) );
  1424. Att_DL2.Table_Ref = data[MBIC_PAYLOADSTART + MBIC_TableIndex_Ref]; // Check
  1425. Att_DL2.Table_Length= data[MBIC_PAYLOADSTART + MBIC_TableIndex_Length];
  1426. EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_ATT_DL1_TABLE_ADDRESDS),&Att_DL2.Table_0_0_dBm,sizeof(ATT_TABLE_st) );
  1427. MBIC_TableHeaderCopy(&data[MBIC_PAYLOADSTART + 5],sizeof(ATT_TABLE_st));
  1428. // printf("ADDRESS : %d \r\n",EEPROM_ATT_DL1_TABLE_ADDRESDS );
  1429. break;
  1430. case DLI_P3_ATT_Accuracy_Table_Number:
  1431. Bluecell_DataCopy(&Att_DL3.Table_0_0_dBm,&data[MBIC_PAYLOADSTART + 5],sizeof(ATT_TABLE_st) );
  1432. Att_DL3.Table_Ref = data[MBIC_PAYLOADSTART + MBIC_TableIndex_Ref]; // Check
  1433. Att_DL3.Table_Length= data[MBIC_PAYLOADSTART + MBIC_TableIndex_Length];
  1434. EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_ATT_DL2_TABLE_ADDRESDS),&Att_DL3.Table_0_0_dBm,sizeof(ATT_TABLE_st));
  1435. MBIC_TableHeaderCopy(&data[MBIC_PAYLOADSTART + 5],sizeof(ATT_TABLE_st));
  1436. break;
  1437. case DLI_P4_ATT_Accuracy_Table_Number:
  1438. Bluecell_DataCopy(&Att_DL4.Table_0_0_dBm,&data[MBIC_PAYLOADSTART + 5],sizeof(ATT_TABLE_st) );
  1439. Att_DL4.Table_Ref = data[MBIC_PAYLOADSTART + MBIC_TableIndex_Ref]; // Check
  1440. Att_DL4.Table_Length= data[MBIC_PAYLOADSTART + MBIC_TableIndex_Length];
  1441. EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_ATT_DL3_TABLE_ADDRESDS),&Att_DL4.Table_0_0_dBm,sizeof(ATT_TABLE_st));
  1442. MBIC_TableHeaderCopy(&data[MBIC_PAYLOADSTART + 5],sizeof(ATT_TABLE_st));
  1443. break;
  1444. case ULO_P1_ATT_Accuracy_Table_Number:
  1445. Bluecell_DataCopy(&Att_UL1.Table_0_0_dBm,&data[MBIC_PAYLOADSTART + 5],sizeof(ATT_TABLE_st));
  1446. Att_UL1.Table_Ref = data[MBIC_PAYLOADSTART + MBIC_TableIndex_Ref]; // Check
  1447. Att_UL1.Table_Length= data[MBIC_PAYLOADSTART + MBIC_TableIndex_Length];
  1448. EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_ATT_DL4_TABLE_ADDRESDS),&Att_UL1.Table_0_0_dBm,sizeof(ATT_TABLE_st));
  1449. MBIC_TableHeaderCopy(&data[MBIC_PAYLOADSTART + 5],sizeof(ATT_TABLE_st));
  1450. break;
  1451. case ULO_P2_ATT_Accuracy_Table_Number:
  1452. Bluecell_DataCopy(&Att_UL2.Table_0_0_dBm,&data[MBIC_PAYLOADSTART + 5],sizeof(ATT_TABLE_st) );
  1453. Att_UL2.Table_Ref = data[MBIC_PAYLOADSTART + MBIC_TableIndex_Ref];
  1454. Att_UL2.Table_Length= data[MBIC_PAYLOADSTART + MBIC_TableIndex_Length];
  1455. EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_ATT_UL1_TABLE_ADDRESDS),&Att_UL2.Table_0_0_dBm,sizeof(ATT_TABLE_st));
  1456. MBIC_TableHeaderCopy(&data[MBIC_PAYLOADSTART + 5],sizeof(ATT_TABLE_st));
  1457. break;
  1458. case ULO_P3_ATT_Accuracy_Table_Number:
  1459. Bluecell_DataCopy(&Att_UL3.Table_0_0_dBm,&data[MBIC_PAYLOADSTART + 5],sizeof(ATT_TABLE_st) );
  1460. Att_UL3.Table_Ref = data[MBIC_PAYLOADSTART + MBIC_TableIndex_Ref]; // Check
  1461. Att_UL3.Table_Length= data[MBIC_PAYLOADSTART + MBIC_TableIndex_Length];
  1462. EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_ATT_UL2_TABLE_ADDRESDS),&Att_UL3.Table_0_0_dBm,sizeof(ATT_TABLE_st));
  1463. MBIC_TableHeaderCopy(&data[MBIC_PAYLOADSTART + 5],sizeof(ATT_TABLE_st));
  1464. break;
  1465. case ULO_P4_ATT_Accuracy_Table_Number:
  1466. Bluecell_DataCopy(&Att_UL4.Table_0_0_dBm,&data[MBIC_PAYLOADSTART + 5],sizeof(ATT_TABLE_st) );
  1467. Att_UL4.Table_Ref = data[MBIC_PAYLOADSTART + MBIC_TableIndex_Ref]; // Check
  1468. Att_UL4.Table_Length= data[MBIC_PAYLOADSTART + MBIC_TableIndex_Length];
  1469. EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_ATT_UL3_TABLE_ADDRESDS),&Att_UL4.Table_0_0_dBm,sizeof(ATT_TABLE_st));
  1470. MBIC_TableHeaderCopy(&data[MBIC_PAYLOADSTART + 5],sizeof(ATT_TABLE_st));
  1471. break;
  1472. case DLI_P1_Level_Table_Number:
  1473. Bluecell_DataCopy(&Det_DL1.Table_Det5_dBm_H,&data[MBIC_PAYLOADSTART + 5],sizeof(DET_TABLEDL_st));
  1474. Det_DL1.Table_Ref = data[MBIC_PAYLOADSTART + MBIC_TableIndex_Ref]; // Check
  1475. Det_DL1.Table_Length= data[MBIC_PAYLOADSTART + MBIC_TableIndex_Length];
  1476. EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_ATT_UL4_TABLE_ADDRESDS),&Det_DL1.Table_Det5_dBm_H,sizeof(DET_TABLEDL_st));
  1477. // EEPROM_M24C08_Read(EEPROM_M24C08_ID ,(EEPROM_ATT_UL4_TABLE_ADDRESDS),tableTest,sizeof(DET_TABLEDL_st));
  1478. // for(int i = 0 ; i < sizeof(DET_TABLEDL_st); i++)
  1479. // printf("tableTest : %x\r\n",tableTest[i]);
  1480. MBIC_TableHeaderCopy(&data[MBIC_PAYLOADSTART + 5],sizeof(ATT_TABLE_st));
  1481. break;
  1482. case DLI_P2_Level_Table_Number:
  1483. Bluecell_DataCopy(&Det_DL2.Table_Det5_dBm_H,&data[MBIC_PAYLOADSTART + 5],sizeof(DET_TABLEDL_st));
  1484. Det_DL2.Table_Ref = data[MBIC_PAYLOADSTART + MBIC_TableIndex_Ref]; // Check
  1485. Det_DL2.Table_Length= data[MBIC_PAYLOADSTART + MBIC_TableIndex_Length];
  1486. EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_DET_DL1_TABLE_ADDRESDS),&Det_DL2.Table_Det5_dBm_H,sizeof(DET_TABLEDL_st));
  1487. MBIC_TableHeaderCopy(&data[MBIC_PAYLOADSTART + 5],sizeof(ATT_TABLE_st));
  1488. break;
  1489. case DLI_P3_Level_Table_Number:
  1490. Bluecell_DataCopy(&Det_DL3.Table_Det5_dBm_H,&data[MBIC_PAYLOADSTART + 5],sizeof(DET_TABLEDL_st));
  1491. Det_DL3.Table_Ref = data[MBIC_PAYLOADSTART + MBIC_TableIndex_Ref];
  1492. Det_DL3.Table_Length= data[MBIC_PAYLOADSTART + MBIC_TableIndex_Length];
  1493. EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_DET_DL2_TABLE_ADDRESDS),&Det_DL3.Table_Det5_dBm_H,sizeof(DET_TABLEDL_st));
  1494. MBIC_TableHeaderCopy(&data[MBIC_PAYLOADSTART + 5],sizeof(ATT_TABLE_st));
  1495. break;
  1496. case DLI_P4_Level_Table_Number:
  1497. Bluecell_DataCopy(&Det_DL4.Table_Det5_dBm_H,&data[MBIC_PAYLOADSTART + 5],sizeof(DET_TABLEDL_st));
  1498. Det_DL4.Table_Ref = data[MBIC_PAYLOADSTART + MBIC_TableIndex_Ref];
  1499. Det_DL4.Table_Length= data[MBIC_PAYLOADSTART + MBIC_TableIndex_Length];
  1500. EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_DET_DL3_TABLE_ADDRESDS),&Det_DL4.Table_Det5_dBm_H,sizeof(DET_TABLEDL_st));
  1501. MBIC_TableHeaderCopy(&data[MBIC_PAYLOADSTART + 5],sizeof(ATT_TABLE_st));
  1502. break;
  1503. case ULO_P1_Level_Table_Number:
  1504. Bluecell_DataCopy(&Det_UL1.Table_Det_15_dBm_H,&data[MBIC_PAYLOADSTART + 5],sizeof(DET_TABLEUL_st));
  1505. Det_UL1.Table_Ref = data[MBIC_PAYLOADSTART + MBIC_TableIndex_Ref];
  1506. Det_UL1.Table_Length= data[MBIC_PAYLOADSTART + MBIC_TableIndex_Length];
  1507. EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_DET_DL4_TABLE_ADDRESDS),&Det_UL1.Table_Det_15_dBm_H,sizeof(DET_TABLEUL_st));
  1508. MBIC_TableHeaderCopy(&data[MBIC_PAYLOADSTART + 5],sizeof(ATT_TABLE_st));
  1509. break;
  1510. case ULO_P2_Level_Table_Number:
  1511. Bluecell_DataCopy(&Det_UL2.Table_Det_15_dBm_H,&data[MBIC_PAYLOADSTART + 5],sizeof(DET_TABLEUL_st));
  1512. Det_UL2.Table_Ref = data[MBIC_PAYLOADSTART + MBIC_TableIndex_Ref];
  1513. Det_UL2.Table_Length= data[MBIC_PAYLOADSTART + MBIC_TableIndex_Length];
  1514. EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_DET_UL1_TABLE_ADDRESDS),&Det_UL2.Table_Det_15_dBm_H,sizeof(DET_TABLEUL_st));
  1515. MBIC_TableHeaderCopy(&data[MBIC_PAYLOADSTART + 5],sizeof(ATT_TABLE_st));
  1516. break;
  1517. case ULO_P3_Level_Table_Number:
  1518. Bluecell_DataCopy(&Det_UL3.Table_Det_15_dBm_H,&data[MBIC_PAYLOADSTART + 5],sizeof(DET_TABLEUL_st));
  1519. Det_UL3.Table_Ref = data[MBIC_PAYLOADSTART + MBIC_TableIndex_Ref];
  1520. Det_UL3.Table_Length= data[MBIC_PAYLOADSTART + MBIC_TableIndex_Length];
  1521. EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_DET_UL2_TABLE_ADDRESDS),&Det_UL3.Table_Det_15_dBm_H,sizeof(DET_TABLEUL_st));
  1522. MBIC_TableHeaderCopy(&data[MBIC_PAYLOADSTART + 5],sizeof(ATT_TABLE_st));
  1523. break;
  1524. case ULO_P4_Level_Table_Number:
  1525. Bluecell_DataCopy(&Det_UL4.Table_Det_15_dBm_H,&data[MBIC_PAYLOADSTART + 5],sizeof(DET_TABLEUL_st));
  1526. Det_UL4.Table_Ref = data[MBIC_PAYLOADSTART + MBIC_TableIndex_Ref];
  1527. Det_UL4.Table_Length= data[MBIC_PAYLOADSTART + MBIC_TableIndex_Length];
  1528. EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_DET_UL3_TABLE_ADDRESDS),&Det_UL4.Table_Det_15_dBm_H,sizeof(DET_TABLEUL_st));
  1529. MBIC_TableHeaderCopy(&data[MBIC_PAYLOADSTART + 5],sizeof(ATT_TABLE_st));
  1530. break;
  1531. case DLI_P1_ATT_Temp_guarantee_Table_Number:
  1532. Bluecell_DataCopy(&Temp_DL1.Table_1_Temp,&data[MBIC_PAYLOADSTART + 5],sizeof(TEMP_TABLE_st) );
  1533. Temp_DL1.Table_Ref = data[MBIC_PAYLOADSTART + MBIC_TableIndex_Ref];
  1534. Temp_DL1.Table_Length= data[MBIC_PAYLOADSTART + MBIC_TableIndex_Length];
  1535. EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_DET_UL4_TABLE_ADDRESDS),&Temp_DL1.Table_1_Temp,sizeof(TEMP_TABLE_st));
  1536. MBIC_TableHeaderCopy(&data[MBIC_PAYLOADSTART + 5],sizeof(ATT_TABLE_st));
  1537. printf("Temp_DL1 Length : %d \r\n",data[MBIC_PAYLOADSTART + MBIC_TableIndex_Length]);
  1538. break;
  1539. case DLI_P2_ATT_Temp_guarantee_Table_Number:
  1540. Bluecell_DataCopy(&Temp_DL2.Table_1_Temp,&data[MBIC_PAYLOADSTART + 5],sizeof(TEMP_TABLE_st) );
  1541. Temp_DL2.Table_Ref = data[MBIC_PAYLOADSTART + MBIC_TableIndex_Ref];
  1542. Temp_DL2.Table_Length= data[MBIC_PAYLOADSTART + MBIC_TableIndex_Length];
  1543. EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_TEMP_DL1_TABLE_ADDRESDS),&Temp_DL2.Table_1_Temp,sizeof(TEMP_TABLE_st));
  1544. MBIC_TableHeaderCopy(&data[MBIC_PAYLOADSTART + 5],sizeof(ATT_TABLE_st));
  1545. break;
  1546. case DLI_P3_ATT_Temp_guarantee_Table_Number:
  1547. Bluecell_DataCopy(&Temp_DL3.Table_1_Temp,&data[MBIC_PAYLOADSTART + 5],sizeof(TEMP_TABLE_st) );
  1548. Temp_DL3.Table_Ref = data[MBIC_PAYLOADSTART + MBIC_TableIndex_Ref];
  1549. Temp_DL3.Table_Length= data[MBIC_PAYLOADSTART + MBIC_TableIndex_Length];
  1550. EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_TEMP_DL2_TABLE_ADDRESDS),&Temp_DL3.Table_1_Temp,sizeof(TEMP_TABLE_st));
  1551. MBIC_TableHeaderCopy(&data[MBIC_PAYLOADSTART + 5],sizeof(ATT_TABLE_st));
  1552. break;
  1553. case DLI_P4_ATT_Temp_guarantee_Table_Number:
  1554. Bluecell_DataCopy(&Temp_DL4.Table_1_Temp,&data[MBIC_PAYLOADSTART + 5],sizeof(TEMP_TABLE_st) );
  1555. Temp_DL4.Table_Ref = data[MBIC_PAYLOADSTART + MBIC_TableIndex_Ref];
  1556. Temp_DL4.Table_Length= data[MBIC_PAYLOADSTART + MBIC_TableIndex_Length];
  1557. EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_TEMP_DL3_TABLE_ADDRESDS),&Temp_DL4.Table_1_Temp,sizeof(TEMP_TABLE_st));
  1558. MBIC_TableHeaderCopy(&data[MBIC_PAYLOADSTART + 5],sizeof(ATT_TABLE_st));
  1559. break;
  1560. case ULO_P1_ATT_Temp_guarantee_Table_Number:
  1561. Bluecell_DataCopy(&Temp_UL1.Table_1_Temp,&data[MBIC_PAYLOADSTART + 5],sizeof(TEMP_TABLE_st) );
  1562. Temp_UL1.Table_Ref = data[MBIC_PAYLOADSTART + MBIC_TableIndex_Ref];
  1563. Temp_UL1.Table_Length= data[MBIC_PAYLOADSTART + MBIC_TableIndex_Length];
  1564. EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_TEMP_DL4_TABLE_ADDRESDS),&Temp_UL1.Table_1_Temp,sizeof(TEMP_TABLE_st));
  1565. MBIC_TableHeaderCopy(&data[MBIC_PAYLOADSTART + 5],sizeof(ATT_TABLE_st));
  1566. break;
  1567. case ULO_P2_ATT_Temp_guarantee_Table_Number:
  1568. Bluecell_DataCopy(&Temp_UL2.Table_1_Temp,&data[MBIC_PAYLOADSTART + 5],sizeof(TEMP_TABLE_st) );
  1569. Temp_UL2.Table_Ref = data[MBIC_PAYLOADSTART + MBIC_TableIndex_Ref];
  1570. Temp_UL2.Table_Length= data[MBIC_PAYLOADSTART + MBIC_TableIndex_Length];
  1571. EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_TEMP_UL1_TABLE_ADDRESDS),&Temp_UL2.Table_1_Temp,sizeof(TEMP_TABLE_st));
  1572. MBIC_TableHeaderCopy(&data[MBIC_PAYLOADSTART + 5],sizeof(ATT_TABLE_st));
  1573. break;
  1574. case ULO_P3_ATT_Temp_guarantee_Table_Number:
  1575. Bluecell_DataCopy(&Temp_UL3.Table_1_Temp,&data[MBIC_PAYLOADSTART + 5],sizeof(TEMP_TABLE_st) );
  1576. Temp_UL3.Table_Ref = data[MBIC_PAYLOADSTART + MBIC_TableIndex_Ref];
  1577. Temp_UL3.Table_Length= data[MBIC_PAYLOADSTART + MBIC_TableIndex_Length];
  1578. printf("Temp_UL3.Table_Length : %d \r\n",Temp_UL3.Table_Length);
  1579. EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_TEMP_UL2_TABLE_ADDRESDS),&Temp_UL3.Table_1_Temp,sizeof(TEMP_TABLE_st));
  1580. MBIC_TableHeaderCopy(&data[MBIC_PAYLOADSTART + 5],sizeof(ATT_TABLE_st));
  1581. break;
  1582. case ULO_P4_ATT_Temp_guarantee_Table_Number:
  1583. Bluecell_DataCopy(&Temp_UL4.Table_1_Temp,&data[MBIC_PAYLOADSTART + 5],sizeof(TEMP_TABLE_st));
  1584. Temp_UL4.Table_Ref = data[MBIC_PAYLOADSTART + MBIC_TableIndex_Ref];
  1585. Temp_UL4.Table_Length= data[MBIC_PAYLOADSTART + MBIC_TableIndex_Length];
  1586. EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_TEMP_UL3_TABLE_ADDRESDS),&Temp_UL4.Table_1_Temp,sizeof(TEMP_TABLE_st));
  1587. MBIC_TableHeaderCopy(&data[MBIC_PAYLOADSTART + 5],sizeof(ATT_TABLE_st));
  1588. break;
  1589. }
  1590. printf("\rSetting MBIC_TableIndex_Number : %x \r\n",data[MBIC_PAYLOADSTART + MBIC_TableIndex_Number]);
  1591. }
  1592. bool Bluecell_Operate(uint8_t* data){
  1593. uint8_t datatype = data[BLUECELL_TYPE];
  1594. //double ret = 0 ,tmp = 0.1;
  1595. int16_t tempdata = 0;
  1596. uint8_t i = 0;
  1597. switch(datatype){
  1598. case BLUECELL_SOFTWARERESET:
  1599. NVIC_SystemReset();
  1600. break;
  1601. case Bluecell_ATT_DL1 :
  1602. // printf("Function : %s Line %d \r\n",__func__,__LINE__);
  1603. bluecell_Currdatastatus.ATT_DL1_H = data[BLUECELL_DATA + i++];
  1604. bluecell_Currdatastatus.ATT_DL1_L = data[BLUECELL_DATA + i++];
  1605. // printf("bluecell_Currdatastatus.ATT_DL1_H : %x\r\n",bluecell_Currdatastatus.ATT_DL1_H);
  1606. // printf("bluecell_Currdatastatus.ATT_DL1_L : %x\r\n",bluecell_Currdatastatus.ATT_DL1_L);
  1607. /*
  1608. Atten Ctrl Function
  1609. */
  1610. CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
  1611. break;
  1612. case Bluecell_ATT_DL2 :
  1613. bluecell_Currdatastatus.ATT_DL2_H = data[BLUECELL_DATA + i++];
  1614. bluecell_Currdatastatus.ATT_DL2_L = data[BLUECELL_DATA + i++];
  1615. /*
  1616. Atten Ctrl Function
  1617. */
  1618. CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
  1619. break;
  1620. case Bluecell_ATT_DL3 :
  1621. bluecell_Currdatastatus.ATT_DL3_H = data[BLUECELL_DATA + i++];
  1622. bluecell_Currdatastatus.ATT_DL3_L = data[BLUECELL_DATA + i++];
  1623. /*
  1624. Atten Ctrl Function
  1625. */
  1626. CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
  1627. break;
  1628. case Bluecell_ATT_DL4 :
  1629. bluecell_Currdatastatus.ATT_DL4_H = data[BLUECELL_DATA + i++];
  1630. bluecell_Currdatastatus.ATT_DL4_L = data[BLUECELL_DATA + i++];
  1631. /*
  1632. Atten Ctrl Function
  1633. */
  1634. CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
  1635. break;
  1636. case Bluecell_ATT_UL1 :
  1637. bluecell_Currdatastatus.ATT_UL1_H = data[BLUECELL_DATA + i++];
  1638. bluecell_Currdatastatus.ATT_UL1_L = data[BLUECELL_DATA + i++];
  1639. /*
  1640. Atten Ctrl Function
  1641. */
  1642. CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
  1643. // printf("bluecell_Currdatastatus.ATT_UL1_H : %x\r\n",bluecell_Currdatastatus.ATT_UL1_H);
  1644. // printf("bluecell_Currdatastatus.ATT_UL1_L : %x\r\n",bluecell_Currdatastatus.ATT_UL1_L);
  1645. break;
  1646. case Bluecell_ATT_UL2 :
  1647. bluecell_Currdatastatus.ATT_UL2_H = data[BLUECELL_DATA + i++];
  1648. bluecell_Currdatastatus.ATT_UL2_L = data[BLUECELL_DATA + i++];
  1649. /*
  1650. Atten Ctrl Function
  1651. */
  1652. CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
  1653. break;
  1654. case Bluecell_ATT_UL3 :
  1655. bluecell_Currdatastatus.ATT_UL3_H = data[BLUECELL_DATA + i++];
  1656. bluecell_Currdatastatus.ATT_UL3_L = data[BLUECELL_DATA + i++];
  1657. /*
  1658. Atten Ctrl Function
  1659. */
  1660. CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
  1661. break;
  1662. case Bluecell_ATT_UL4 :
  1663. bluecell_Currdatastatus.ATT_UL4_H = data[BLUECELL_DATA + i++];
  1664. bluecell_Currdatastatus.ATT_UL4_L = data[BLUECELL_DATA + i++];
  1665. printf("bluecell_Currdatastatus.ATT_UL4_H : %0x \r\n",bluecell_Currdatastatus.ATT_UL4_H);
  1666. printf("bluecell_Currdatastatus.ATT_UL4_L : %0x \r\n",bluecell_Currdatastatus.ATT_UL4_L);
  1667. /*
  1668. Atten Ctrl Function
  1669. */
  1670. CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
  1671. // printf("ret : %f ,tmp %f \r\n",ret,tmp );
  1672. break;
  1673. case ATT_DL1_PATH :
  1674. if(data[BLUECELL_DATA]==0){
  1675. HAL_GPIO_WritePin(PATH_EN_DL1_GPIO_Port,PATH_EN_DL1_Pin,GPIO_PIN_RESET);//CLOCK
  1676. printf("ATT_DL1_PATH OFF\r\n");
  1677. bluecell_Currdatastatus.ULO_Shutdown_Retry_Count1 = 0;
  1678. }
  1679. else{
  1680. HAL_GPIO_WritePin(PATH_EN_DL1_GPIO_Port,PATH_EN_DL1_Pin,GPIO_PIN_SET);//CLOCK
  1681. bluecell_Prevdatastatus.ATT_DL1_H = 0xFF;
  1682. bluecell_Prevdatastatus.ATT_DL1_L =0xFF;
  1683. CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
  1684. printf("ATT_DL1_PATH ON\r\n");
  1685. }
  1686. bluecell_Currdatastatus.ATT_DL1_PATH = data[BLUECELL_DATA];
  1687. break;
  1688. case ATT_UL1_PATH :
  1689. if(data[BLUECELL_DATA]==0){
  1690. HAL_GPIO_WritePin(PATH_EN_UL1_GPIO_Port,PATH_EN_UL1_Pin,GPIO_PIN_RESET);//CLOCK
  1691. bluecell_Currdatastatus.ULO_Shutdown_Retry_Count1 = 0;
  1692. }
  1693. else{
  1694. HAL_GPIO_WritePin(PATH_EN_UL1_GPIO_Port,PATH_EN_UL1_Pin,GPIO_PIN_SET);//CLOCK
  1695. bluecell_Prevdatastatus.ATT_UL1_H = 0xFF;
  1696. bluecell_Prevdatastatus.ATT_UL1_L = 0xFF;
  1697. CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
  1698. }
  1699. bluecell_Currdatastatus.ATT_UL1_PATH = data[BLUECELL_DATA];
  1700. // printf("Function : %s Line %d \r\n",__func__,__LINE__);
  1701. break;
  1702. case ATT_SelfTest1 :
  1703. if(data[BLUECELL_DATA]==0){
  1704. HAL_GPIO_WritePin(_PATH_SW1_GPIO_Port,_PATH_SW1_Pin,GPIO_PIN_RESET);//CLOCK
  1705. HAL_GPIO_WritePin(PATH_SW1_GPIO_Port,PATH_SW1_Pin,GPIO_PIN_SET);//CLOCK
  1706. }
  1707. else{
  1708. HAL_GPIO_WritePin(_PATH_SW1_GPIO_Port,_PATH_SW1_Pin,GPIO_PIN_SET);//CLOCK
  1709. HAL_GPIO_WritePin(PATH_SW1_GPIO_Port,PATH_SW1_Pin,GPIO_PIN_RESET);//CLOCK
  1710. }
  1711. bluecell_Currdatastatus.Selftest1 = data[BLUECELL_DATA];
  1712. // printf("Function : %s Line %d \r\n",__func__,__LINE__);
  1713. break;
  1714. case ATT_DL2_PATH :
  1715. if(data[BLUECELL_DATA]==0){
  1716. HAL_GPIO_WritePin(PATH_EN_DL2_GPIO_Port,PATH_EN_DL2_Pin,GPIO_PIN_RESET);//CLOCK
  1717. bluecell_Currdatastatus.DLI_Shutdown_Retry_Count2 = 0;
  1718. }
  1719. else{
  1720. HAL_GPIO_WritePin(PATH_EN_DL2_GPIO_Port,PATH_EN_DL2_Pin,GPIO_PIN_SET);//CLOCK
  1721. bluecell_Prevdatastatus.ATT_DL2_H = 0xFF;
  1722. bluecell_Prevdatastatus.ATT_DL2_L = 0xFF;
  1723. CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
  1724. }
  1725. bluecell_Currdatastatus.ATT_DL2_PATH = data[BLUECELL_DATA];
  1726. // printf("Function : %s Line %d \r\n",__func__,__LINE__);
  1727. break;
  1728. break;
  1729. case ATT_UL2_PATH :
  1730. if(data[BLUECELL_DATA]==0){
  1731. HAL_GPIO_WritePin(PATH_EN_UL2_GPIO_Port,PATH_EN_UL2_Pin,GPIO_PIN_RESET);//CLOCK
  1732. bluecell_Currdatastatus.ULO_Shutdown_Retry_Count2 = 0;
  1733. }
  1734. else{
  1735. HAL_GPIO_WritePin(PATH_EN_UL2_GPIO_Port,PATH_EN_UL2_Pin,GPIO_PIN_SET);//CLOCK
  1736. bluecell_Prevdatastatus.ATT_UL2_H = 0xFF;
  1737. bluecell_Prevdatastatus.ATT_UL2_L = 0xFF;
  1738. CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
  1739. }
  1740. bluecell_Currdatastatus.ATT_UL2_PATH = data[BLUECELL_DATA];
  1741. break;
  1742. case ATT_SelfTest2 :
  1743. if(data[BLUECELL_DATA]==0){
  1744. HAL_GPIO_WritePin(_PATH_SW2_GPIO_Port,_PATH_SW2_Pin,GPIO_PIN_RESET);//CLOCK
  1745. HAL_GPIO_WritePin(PATH_SW2_GPIO_Port,PATH_SW2_Pin,GPIO_PIN_SET);//CLOCK
  1746. }else{
  1747. HAL_GPIO_WritePin(PATH_SW2_GPIO_Port,PATH_SW2_Pin,GPIO_PIN_RESET);//CLOCK
  1748. HAL_GPIO_WritePin(_PATH_SW2_GPIO_Port,_PATH_SW2_Pin,GPIO_PIN_SET);//CLOCK
  1749. }
  1750. bluecell_Currdatastatus.Selftest2 = data[BLUECELL_DATA];
  1751. // printf("Function : %s Line %d \r\n",__func__,__LINE__);
  1752. break;
  1753. case ATT_DL3_PATH :
  1754. if(data[BLUECELL_DATA]==0){
  1755. HAL_GPIO_WritePin(PATH_EN_DL3_GPIO_Port,PATH_EN_DL3_Pin,GPIO_PIN_RESET);//CLOCK
  1756. bluecell_Currdatastatus.DLI_Shutdown_Retry_Count3 = 0;
  1757. }
  1758. else{
  1759. HAL_GPIO_WritePin(PATH_EN_DL3_GPIO_Port,PATH_EN_DL3_Pin,GPIO_PIN_SET);//CLOCK
  1760. bluecell_Prevdatastatus.ATT_DL3_H = 0xFF;
  1761. bluecell_Prevdatastatus.ATT_DL3_L = 0xFF;
  1762. CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
  1763. }
  1764. bluecell_Currdatastatus.ATT_DL3_PATH = data[BLUECELL_DATA];
  1765. // printf("Function : %s Line %d \r\n",__func__,__LINE__);
  1766. break;
  1767. case ATT_UL3_PATH :
  1768. if(data[BLUECELL_DATA]==0){
  1769. HAL_GPIO_WritePin(PATH_EN_UL3_GPIO_Port,PATH_EN_UL3_Pin,GPIO_PIN_RESET);//CLOCK
  1770. bluecell_Currdatastatus.ULO_Shutdown_Retry_Count3 = 0;
  1771. }
  1772. else{
  1773. HAL_GPIO_WritePin(PATH_EN_UL3_GPIO_Port,PATH_EN_UL3_Pin,GPIO_PIN_SET);//CLOCK
  1774. bluecell_Prevdatastatus.ATT_UL3_H = 0xFF;
  1775. bluecell_Prevdatastatus.ATT_UL3_L =0xFF;
  1776. CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
  1777. }
  1778. bluecell_Currdatastatus.ATT_UL3_PATH = data[BLUECELL_DATA];
  1779. // printf("Function : %s Line %d \r\n",__func__,__LINE__);
  1780. break;
  1781. case ATT_SelfTest3 :
  1782. if(data[BLUECELL_DATA]==0){
  1783. HAL_GPIO_WritePin(_PATH_SW3_GPIO_Port,_PATH_SW3_Pin,GPIO_PIN_RESET);//CLOCK
  1784. HAL_GPIO_WritePin(PATH_SW3_GPIO_Port,PATH_SW3_Pin,GPIO_PIN_SET);//CLOCK
  1785. }
  1786. else{
  1787. HAL_GPIO_WritePin(PATH_SW3_GPIO_Port,PATH_SW3_Pin,GPIO_PIN_RESET);//CLOCK
  1788. HAL_GPIO_WritePin(_PATH_SW3_GPIO_Port,_PATH_SW3_Pin,GPIO_PIN_SET);//CLOCK
  1789. }
  1790. bluecell_Currdatastatus.Selftest3 = data[BLUECELL_DATA];
  1791. // printf("Function : %s Line %d \r\n",__func__,__LINE__);
  1792. break;
  1793. case ATT_DL4_PATH :
  1794. if(data[BLUECELL_DATA]==0){
  1795. HAL_GPIO_WritePin(PATH_EN_DL4_GPIO_Port,PATH_EN_DL4_Pin,GPIO_PIN_RESET);//CLOCK
  1796. bluecell_Currdatastatus.DLI_Shutdown_Retry_Count4 = 0;
  1797. }else{
  1798. HAL_GPIO_WritePin(PATH_EN_DL4_GPIO_Port,PATH_EN_DL4_Pin,GPIO_PIN_SET);//CLOCK
  1799. bluecell_Prevdatastatus.ATT_DL4_H =0xFF;
  1800. bluecell_Prevdatastatus.ATT_DL4_L = 0xFF;
  1801. CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
  1802. }
  1803. bluecell_Currdatastatus.ATT_DL4_PATH = data[BLUECELL_DATA];
  1804. // printf("Function : %s Line %d \r\n",__func__,__LINE__);
  1805. break;
  1806. case ATT_UL4_PATH:
  1807. if(data[BLUECELL_DATA]==0){
  1808. HAL_GPIO_WritePin(PATH_EN_UL4_GPIO_Port,PATH_EN_UL4_Pin,GPIO_PIN_RESET);//CLOCK
  1809. bluecell_Currdatastatus.ULO_Shutdown_Retry_Count4 = 0;
  1810. }
  1811. else{
  1812. HAL_GPIO_WritePin(PATH_EN_UL4_GPIO_Port,PATH_EN_UL4_Pin,GPIO_PIN_SET);//CLOCK
  1813. bluecell_Prevdatastatus.ATT_UL4_H = 0xFF;
  1814. bluecell_Prevdatastatus.ATT_UL4_L = 0xFF;
  1815. CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
  1816. }
  1817. bluecell_Currdatastatus.ATT_UL4_PATH = data[BLUECELL_DATA];
  1818. // printf("Function : %s Line %d \r\n",__func__,__LINE__);
  1819. break;
  1820. case ATT_SelfTest4 :
  1821. if(data[BLUECELL_DATA]==0){
  1822. HAL_GPIO_WritePin(_PATH_SW4_GPIO_Port,_PATH_SW4_Pin,GPIO_PIN_RESET);//CLOCK
  1823. HAL_GPIO_WritePin(PATH_SW4_GPIO_Port,PATH_SW4_Pin,GPIO_PIN_SET);//CLOCK
  1824. }else{
  1825. HAL_GPIO_WritePin(_PATH_SW4_GPIO_Port,_PATH_SW4_Pin,GPIO_PIN_SET);//CLOCK
  1826. HAL_GPIO_WritePin(PATH_SW4_GPIO_Port,PATH_SW4_Pin,GPIO_PIN_RESET);//CLOCK
  1827. }
  1828. bluecell_Currdatastatus.Selftest4 = data[BLUECELL_DATA];
  1829. // printf("Function : %s Line %d \r\n",__func__,__LINE__);
  1830. break;
  1831. case ATT_TableSet:
  1832. Bluecell_TableSave(data, data[BLUECELL_DATA]);
  1833. case ATT_TableGet:
  1834. Bluecell_TableLoad(data, data[BLUECELL_DATA]);
  1835. data[BLUECELL_TYPE] = ATT_TableGet;
  1836. data[data[BLUECELL_LENGTH] + 1] = ((CRC16_Generate(&data[BLUECELL_TYPE], data[BLUECELL_LENGTH]) & 0xFF00) >> 8);
  1837. data[data[BLUECELL_LENGTH] + 2] = CRC16_Generate(&data[BLUECELL_TYPE], data[BLUECELL_LENGTH]) & 0x00FF;
  1838. data[data[BLUECELL_LENGTH] + 3] = 0xEB;
  1839. Bluecell_StructCpy(&Txdata[0],&data[0],data[BLUECELL_LENGTH] + 4);
  1840. Uart1_Data_Send(&Txdata[0], Txdata[BLUECELL_LENGTH] + 4);
  1841. #if 0 // PYJ.2020.04.22_BEGIN --
  1842. for(int i = 0 ; i < data[BLUECELL_LENGTH] + 3; i++ ){
  1843. // printf("%x ",data[i]);
  1844. Txdata[0] = data[0]; }
  1845. printf("\r\n");
  1846. #endif // PYJ.2020.04.22_END --
  1847. // printf("\r\nuint8_t data : %x data[BLUECELL_LENGTH] + 6 : %d\r\n",data[0],data[BLUECELL_LENGTH] + 6);
  1848. break;
  1849. case Bluecell_StatusReq:
  1850. if(Initialize == false){
  1851. printf("Atten Init \r\n");
  1852. Bluecell_DataInit();
  1853. HAL_Delay(10);
  1854. Bluecell_AttenInitialize();
  1855. Initialize = true;
  1856. }
  1857. DataStatusSet();
  1858. #if 0 // PYJ.2020.05.28_BEGIN --
  1859. Bluecell_StructCpy(&Txdata[0],&bluecell_Currdatastatus.bluecell_header,94);
  1860. Txdata[BLUECELL_LENGTH] = 94 - 3;//sizeof(BLUESTATUS_st) - 3;
  1861. Txdata[94 - 2] = STH30_CreateCrc(&Txdata[BLUECELL_TYPE], Txdata[BLUECELL_LENGTH]);
  1862. #else
  1863. // printf("bluecell_Currdatastatus.ATT_UL4_H : %0x \r\n",bluecell_Currdatastatus.ATT_UL4_H);
  1864. // printf("bluecell_Currdatastatus.ATT_UL4_L : %0x \r\n",bluecell_Currdatastatus.ATT_UL4_L);
  1865. Bluecell_StructCpy(&Txdata[0],&bluecell_Currdatastatus.bluecell_header,sizeof(BLUESTATUS_st));
  1866. Txdata[BLUECELL_LENGTH] = sizeof(BLUESTATUS_st) - 3;//sizeof(BLUESTATUS_st) - 3;
  1867. // Txdata[sizeof(BLUESTATUS_st) - 2] = STH30_CreateCrc(&Txdata[BLUECELL_TYPE], Txdata[BLUECELL_LENGTH]);
  1868. Txdata[sizeof(BLUESTATUS_st) - 3] = ((CRC16_Generate(&data[BLUECELL_TYPE], data[BLUECELL_LENGTH]) & 0xFF00) >> 8);
  1869. Txdata[sizeof(BLUESTATUS_st) - 2] = CRC16_Generate(&data[BLUECELL_TYPE], data[BLUECELL_LENGTH]) & 0x00FF;
  1870. #endif // PYJ.2020.05.28_END --
  1871. #if 0 // PYJ.2020.04.22_BEGIN --
  1872. for(int i = 0 ; i < sizeof(BLUESTATUS_st); i++ ){
  1873. printf("%x ",Txdata[i]);
  1874. }
  1875. printf("\r\n");
  1876. #endif // PYJ.2020.04.22_END --
  1877. Uart1_Data_Send(&Txdata[0], sizeof(BLUESTATUS_st));
  1878. break;
  1879. case Bluecell_StatusSave:
  1880. // printf("Copy Complete");
  1881. // Bluecell_StructCpy(&DataWrite[0],&bluecell_Currdatastatus.bluecell_header,sizeof(BLUESTATUS_st));
  1882. // EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_ATT_BASE),&DataWrite[0],sizeof(BLUESTATUS_st));
  1883. // Bluecell_StructCpy(&Txdata[0],&DataWrite[0],sizeof(BLUESTATUS_st));
  1884. // Txdata[sizeof(BLUESTATUS_st) - 2] = STH30_CreateCrc(&Txdata[BLUECELL_TYPE], sizeof(BLUESTATUS_st) - 3);
  1885. // Uart1_Data_Send(&Txdata[0], sizeof(BLUESTATUS_st));
  1886. EEPROM_M24C08_Zerowrite(EEPROM_M24C08_ID ,(EEPROM_ATT_BASE));
  1887. // printf("ZERO WRITE COMPLETE");
  1888. NVIC_SystemReset();
  1889. break;
  1890. case Bluecell_DL1_USER:
  1891. bluecell_Currdatastatus.bluecell_User_DL1_H = data[BLUECELL_DATA + i++];
  1892. bluecell_Currdatastatus.bluecell_User_DL1_L = data[BLUECELL_DATA + i++];
  1893. CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
  1894. break;
  1895. case Bluecell_DL2_USER:
  1896. bluecell_Currdatastatus.bluecell_User_DL2_H = data[BLUECELL_DATA + i++];
  1897. bluecell_Currdatastatus.bluecell_User_DL2_L = data[BLUECELL_DATA + i++];
  1898. CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
  1899. break;
  1900. case Bluecell_DL3_USER:
  1901. bluecell_Currdatastatus.bluecell_User_DL3_H = data[BLUECELL_DATA + i++];
  1902. bluecell_Currdatastatus.bluecell_User_DL3_L = data[BLUECELL_DATA + i++];
  1903. CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
  1904. break;
  1905. case Bluecell_DL4_USER:
  1906. bluecell_Currdatastatus.bluecell_User_DL4_H = data[BLUECELL_DATA + i++];
  1907. bluecell_Currdatastatus.bluecell_User_DL4_L = data[BLUECELL_DATA + i++];
  1908. CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
  1909. break;
  1910. case Bluecell_UL1_USER:
  1911. bluecell_Currdatastatus.bluecell_User_UL1_H = data[BLUECELL_DATA + i++];
  1912. bluecell_Currdatastatus.bluecell_User_UL1_L = data[BLUECELL_DATA + i++];
  1913. CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
  1914. break;
  1915. case Bluecell_UL2_USER:
  1916. bluecell_Currdatastatus.bluecell_User_UL2_H = data[BLUECELL_DATA + i++];
  1917. bluecell_Currdatastatus.bluecell_User_UL2_L = data[BLUECELL_DATA + i++];
  1918. CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
  1919. break;
  1920. case Bluecell_UL3_USER:
  1921. bluecell_Currdatastatus.bluecell_User_UL3_H = data[BLUECELL_DATA + i++];
  1922. bluecell_Currdatastatus.bluecell_User_UL3_L = data[BLUECELL_DATA + i++];
  1923. CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
  1924. break;
  1925. case Bluecell_UL4_USER:
  1926. bluecell_Currdatastatus.bluecell_User_UL4_H = data[BLUECELL_DATA + i++];
  1927. bluecell_Currdatastatus.bluecell_User_UL4_L = data[BLUECELL_DATA + i++];
  1928. CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
  1929. break;
  1930. /*******/
  1931. #if 0 // PYJ.2020.05.13_BEGIN --
  1932. 수정 및 추가
  1933. #endif // PYJ.2020.05.13_END --
  1934. /*******/
  1935. case Bluecell_TEMP_USER :
  1936. bluecell_Currdatastatus.bluecell_User_TEMP_OFFSET = data[BLUECELL_DATA + i++];
  1937. // bluecell_Currdatastatus.bluecell_User_TEMP_OFFSET_L = data[BLUECELL_DATA + i++];
  1938. break;
  1939. case Bluecell_DLI_AGC_ON_OFF:
  1940. bluecell_Currdatastatus.DLI_AGC_ON_OFF = data[BLUECELL_DATA + i];
  1941. // printf("AGC ON OFF SET : %d \r\n",bluecell_Currdatastatus.DLI_AGC_ON_OFF);
  1942. break;
  1943. case Bluecell_ULO_ALC_ON_OFF:
  1944. bluecell_Currdatastatus.ULO_ALC_ON_OFF = data[BLUECELL_DATA + i];
  1945. break;
  1946. case Bluecell_DLI_AGC_Threshold:
  1947. bluecell_Currdatastatus.DLI_AGC_Threshold_H = data[BLUECELL_DATA + i++];
  1948. bluecell_Currdatastatus.DLI_AGC_Threshold_L = data[BLUECELL_DATA + i++];
  1949. // tempdata = (( bluecell_Currdatastatus.DLI_AGC_Threshold_H << 8) & 0xFF00) ;
  1950. // tempdata += bluecell_Currdatastatus.DLI_AGC_Threshold_L ;
  1951. // tempdata /= 10;
  1952. // printf("tempdata : %d\r\n",tempdata);
  1953. // bluecell_Currdatastatus.DLI_AGC_Threshold_H = ((tempdata & 0xFF00) >> 8);
  1954. // bluecell_Currdatastatus.DLI_AGC_Threshold_L = (tempdata & 0x00FF);
  1955. break;
  1956. case Bluecell_DLI_AGC_Threshold_Default:
  1957. bluecell_Currdatastatus.DLI_AGC_Threshold_default = data[BLUECELL_DATA + i++];
  1958. if(bluecell_Currdatastatus.DLI_AGC_Threshold_default == true){
  1959. bluecell_Currdatastatus.DLI_AGC_Threshold_H = MBIC_DLI_AGC_Threshold_Default_H;
  1960. bluecell_Currdatastatus.DLI_AGC_Threshold_L = MBIC_DLI_AGC_Threshold_Default_L;
  1961. bluecell_Currdatastatus.DLI_AGC_Threshold_default = false;
  1962. printf("%s : %d \r\n",__func__,__LINE__);
  1963. }
  1964. break;
  1965. case Bluecell_DLI_Shutdown_ON_OFF:
  1966. bluecell_Currdatastatus.DLI_Shutdown_ON_OFF = data[BLUECELL_DATA + i++];
  1967. printf("%s : %d DLI_Shutdown_ON_OFF : %d \r\n",__func__,__LINE__,bluecell_Currdatastatus.DLI_Shutdown_ON_OFF);
  1968. break;
  1969. case Bluecell_DLI_Shutdown_Threshold:
  1970. bluecell_Currdatastatus.DLI_Shutdown_Threshold_H = data[BLUECELL_DATA + i++];
  1971. bluecell_Currdatastatus.DLI_Shutdown_Threshold_L = data[BLUECELL_DATA + i++];
  1972. tempdata = (( bluecell_Currdatastatus.DLI_Shutdown_Threshold_H << 8) & 0xFF00) ;
  1973. tempdata += bluecell_Currdatastatus.DLI_Shutdown_Threshold_L ;
  1974. tempdata /= 10;
  1975. printf("tempdata : %d\r\n",tempdata);
  1976. // bluecell_Currdatastatus.DLI_Shutdown_Threshold_H = ((tempdata & 0xFF00) >> 8);
  1977. // bluecell_Currdatastatus.DLI_Shutdown_Threshold_L = (tempdata & 0x00FF);
  1978. // printf("tempdata %d \r\n",tempdata);
  1979. break;
  1980. case Bluecell_DLI_Shutdown_Threshold_Default:
  1981. bluecell_Currdatastatus.DLI_Shutdown_Threshold_Default = data[BLUECELL_DATA + i++];
  1982. if(bluecell_Currdatastatus.DLI_Shutdown_Threshold_Default == true){
  1983. bluecell_Currdatastatus.DLI_Shutdown_Threshold_H = MBIC_DLI_Shutdown_Threshold_Default_H;
  1984. bluecell_Currdatastatus.DLI_Shutdown_Threshold_L = MBIC_DLI_Shutdown_Threshold_Default_L;
  1985. }
  1986. printf("%s : %d \r\n",__func__,__LINE__);
  1987. // printf("bluecell_Currdatastatus.DLI_Shutdown_Threshold_Default : %d \r\n",bluecell_Currdatastatus.DLI_Shutdown_Threshold_Default);
  1988. break;
  1989. case Bluecell_DLI_Shutdown_Count:
  1990. /*NOP*/
  1991. break;
  1992. case Bluecell_DLI_Level_High_Threshold :
  1993. bluecell_Currdatastatus.DLI_Level_High_Threshold_H = data[BLUECELL_DATA + i++];
  1994. bluecell_Currdatastatus.DLI_Level_High_Threshold_L = data[BLUECELL_DATA + i++];
  1995. tempdata = (( bluecell_Currdatastatus.DLI_Level_High_Threshold_H << 8) & 0xFF00) ;
  1996. tempdata += bluecell_Currdatastatus.DLI_Level_High_Threshold_L ;
  1997. tempdata /= 10;
  1998. printf("DLI_Level_High_Threshold : %d\r\n",tempdata);
  1999. // bluecell_Currdatastatus.DLI_Level_High_Threshold_H = ((tempdata & 0xFF00) >> 8);
  2000. // bluecell_Currdatastatus.DLI_Level_High_Threshold_L = (tempdata & 0x00FF);
  2001. break;
  2002. case Bluecell_DLI_Level_Low_Threshold :
  2003. bluecell_Currdatastatus.DLI_Level_Low_Threshold_H = data[BLUECELL_DATA + i++];
  2004. bluecell_Currdatastatus.DLI_Level_Low_Threshold_L = data[BLUECELL_DATA + i++];
  2005. tempdata = (( bluecell_Currdatastatus.DLI_Level_Low_Threshold_H << 8) & 0xFF00) ;
  2006. tempdata += bluecell_Currdatastatus.DLI_Level_Low_Threshold_L ;
  2007. tempdata /= 10;
  2008. printf("DLI_Level_Low_Threshold : %d\r\n",tempdata);
  2009. // bluecell_Currdatastatus.DLI_Level_Low_Threshold_H = ((tempdata & 0xFF00) >> 8);
  2010. // bluecell_Currdatastatus.DLI_Level_Low_Threshold_L = (tempdata & 0x00FF);
  2011. break;
  2012. case Bluecell_DLI_Level_High_Low_Threshold_default :
  2013. bluecell_Currdatastatus.DLI_Level_High_Low_Threshold_default = data[BLUECELL_DATA + i++];
  2014. if(bluecell_Currdatastatus.DLI_Level_High_Low_Threshold_default == true){
  2015. bluecell_Currdatastatus.DLI_Level_High_Threshold_H = MBIC_DLI_Level_High_Threshold_default_H;
  2016. bluecell_Currdatastatus.DLI_Level_High_Threshold_L = MBIC_DLI_Level_High_Threshold_default_L;
  2017. bluecell_Currdatastatus.DLI_Level_Low_Threshold_H = MBIC_DLI_Level_Low_Threshold_default_H;
  2018. bluecell_Currdatastatus.DLI_Level_Low_Threshold_L = MBIC_DLI_Level_Low_Threshold_default_L;
  2019. }
  2020. break;
  2021. case Bluecell_LED_TEST :
  2022. bluecell_Currdatastatus.LED_TEST = data[BLUECELL_DATA + i++];
  2023. printf("%s : %d Value : %d \r\n",__func__,__LINE__,bluecell_Currdatastatus.LED_TEST);
  2024. break;
  2025. case Bluecell_Temperature_Offset :
  2026. bluecell_Currdatastatus.bluecell_User_TEMP_OFFSET = data[BLUECELL_DATA + i++];
  2027. printf("%s : %d \r\n",__func__,__LINE__);
  2028. break;
  2029. case Bluecell_Temp_High_Threshold :
  2030. bluecell_Currdatastatus.Temp_High_Threshold = data[BLUECELL_DATA + i++];
  2031. printf("%s : %d Temps_High_Threshold : %d\r\n",__func__,__LINE__,bluecell_Currdatastatus.Temp_High_Threshold);
  2032. printf("Temp_High_Threshold : %d : Det %d \r\n",bluecell_Currdatastatus.Temp_High_Threshold,bluecell_Currdatastatus.DET_TEMP);
  2033. printf("Temp_High_Alarm : %d \r\n",bluecell_Currdatastatus.Temp_High_Alarm);
  2034. printf("Txdata : %d \r\n",Txdata[201]);
  2035. break;
  2036. case Bluecell_Temp_High_Threshold_Default :
  2037. bluecell_Currdatastatus.Temp_High_Threshold_Default = data[BLUECELL_DATA + i++];
  2038. if(bluecell_Currdatastatus.Temp_High_Threshold_Default == true){
  2039. bluecell_Currdatastatus.Temp_High_Threshold_Default = MBIC_Temp_High_Threshold_Default;
  2040. }
  2041. printf("%s : %d \r\n",__func__,__LINE__);
  2042. break;
  2043. case Bluecell_ULO_Level_High_Threshold :
  2044. bluecell_Currdatastatus.ULO_Level_High_Threshold_H = data[BLUECELL_DATA + i++];
  2045. bluecell_Currdatastatus.ULO_Level_High_Threshold_L = data[BLUECELL_DATA + i++];
  2046. tempdata = (( bluecell_Currdatastatus.ULO_Level_High_Threshold_H << 8) & 0xFF00) ;
  2047. tempdata += bluecell_Currdatastatus.ULO_Level_High_Threshold_L ;
  2048. tempdata /= 10;
  2049. printf("ULO_Level_High_Threshold : %d\r\n",tempdata);
  2050. // bluecell_Currdatastatus.ULO_Level_High_Threshold_H = ((tempdata & 0xFF00) >> 8);
  2051. // bluecell_Currdatastatus.ULO_Level_High_Threshold_L = (tempdata & 0x00FF);
  2052. break;
  2053. case Bluecell_ULO_Level_High_Threshold_default :
  2054. bluecell_Currdatastatus.ULO_Level_High_Threshold_default = data[BLUECELL_DATA + i++];
  2055. if(bluecell_Currdatastatus.ULO_Level_High_Threshold_default == true){
  2056. bluecell_Currdatastatus.ULO_Level_High_Threshold_H = MBIC_ULO_Level_High_Threshold_Default_H;
  2057. bluecell_Currdatastatus.ULO_Level_High_Threshold_L = MBIC_ULO_Level_High_Threshold_Default_L;
  2058. }
  2059. break;
  2060. case Bluecell_ULO_ALC_Threshold :
  2061. bluecell_Currdatastatus.ULO_ALC_Threshold_H = data[BLUECELL_DATA + i++];
  2062. bluecell_Currdatastatus.ULO_ALC_Threshold_L = data[BLUECELL_DATA + i++];
  2063. tempdata = (( bluecell_Currdatastatus.ULO_ALC_Threshold_H << 8) & 0xFF00) ;
  2064. tempdata += bluecell_Currdatastatus.ULO_ALC_Threshold_L ;
  2065. tempdata /= 10;
  2066. printf("ULO_ALC_Threshold : %d\r\n",tempdata);
  2067. // bluecell_Currdatastatus.ULO_ALC_Threshold_H = ((tempdata & 0xFF00) >> 8);
  2068. // bluecell_Currdatastatus.ULO_ALC_Threshold_L = (tempdata & 0x00FF);
  2069. break;
  2070. case Bluecell_ULO_ALC_Threshold_Default :
  2071. bluecell_Currdatastatus.ULO_ALC_Threshold_Default = data[BLUECELL_DATA + i++];
  2072. if(bluecell_Currdatastatus.ULO_Level_High_Threshold_default == true){
  2073. bluecell_Currdatastatus.ULO_ALC_Threshold_H = MBIC_ULO_ALC_Threshold_Default_H;
  2074. bluecell_Currdatastatus.ULO_ALC_Threshold_L = MBIC_ULO_ALC_Threshold_Default_L;
  2075. }
  2076. printf("%s : %d \r\n",__func__,__LINE__);
  2077. break;
  2078. case Bluecell_ULO_Shutdown_ON_OFF :
  2079. bluecell_Currdatastatus.ULO_Shutdown_ON_OFF = data[BLUECELL_DATA + i++];
  2080. printf("%s : %d \r\n",__func__,__LINE__);
  2081. break;
  2082. case Bluecell_ULO_Shutdown_Threshold :
  2083. bluecell_Currdatastatus.ULO_Shutdown_Threshold_H = data[BLUECELL_DATA + i++];
  2084. bluecell_Currdatastatus.ULO_Shutdown_Threshold_L = data[BLUECELL_DATA + i++];
  2085. tempdata = (( bluecell_Currdatastatus.ULO_Shutdown_Threshold_H << 8) & 0xFF00) ;
  2086. tempdata += bluecell_Currdatastatus.ULO_Shutdown_Threshold_L ;
  2087. tempdata /= 10;
  2088. printf("tempdata : %d\r\n",tempdata);
  2089. // bluecell_Currdatastatus.ULO_Shutdown_Threshold_H = ((tempdata & 0xFF00) >> 8);
  2090. // bluecell_Currdatastatus.ULO_Shutdown_Threshold_L = (tempdata & 0x00FF);
  2091. break;
  2092. case Bluecell_ULO_Shutdown_Threshold_Default :
  2093. bluecell_Currdatastatus.ULO_Shutdown_Threshold_Default = data[BLUECELL_DATA + i++];
  2094. if(bluecell_Currdatastatus.ULO_Level_High_Threshold_default == true){
  2095. bluecell_Currdatastatus.ULO_Shutdown_Threshold_H = MBIC_ULO_Shutdown_Threshold_Default_H;
  2096. bluecell_Currdatastatus.ULO_Shutdown_Threshold_L = MBIC_ULO_Shutdown_Threshold_Default_L;
  2097. }
  2098. printf("%s : %d \r\n",__func__,__LINE__);
  2099. break;
  2100. case Bluecell_ULO_Shutdown_Retry_Count :
  2101. break;
  2102. case Bluecell_Alarm_Mask:
  2103. bluecell_Currdatastatus.ALARM_MASK1 = (data[BLUECELL_DATA + i+ 1] / 10);
  2104. printf("%s : %d ALARM_MASK1 : %d \r\n",__func__,__LINE__,bluecell_Currdatastatus.ALARM_MASK1);
  2105. printf("Txdata : %d \r\n",Txdata[107]);
  2106. break;
  2107. }
  2108. if(datatype != Bluecell_StatusReq
  2109. && datatype != Bluecell_LED_TEST)
  2110. {
  2111. Bluecell_StructCpy(&DataWrite[0],&bluecell_Currdatastatus.bluecell_header,sizeof(BLUESTATUS_st));
  2112. EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_WINDOW_STATUS_ADDRESDS),&DataWrite[0],sizeof(BLUESTATUS_st));
  2113. // EEPROM_M24C08_Read(EEPROM_M24C08_ID,EEPROM_WINDOW_STATUS_ADDRESDS,&bluecell_Currdatastatus.bluecell_header,sizeof(BLUESTATUS_st) );
  2114. // Bluecell_StructCpy(&Txdata[0],&DataWrite[0],sizeof(BLUESTATUS_st));
  2115. // Txdata[sizeof(BLUESTATUS_st) - 2] = STH30_CreateCrc(&Txdata[BLUECELL_TYPE], sizeof(BLUESTATUS_st) - 3);
  2116. // Uart1_Data_Send(&Txdata[0], sizeof(BLUESTATUS_st));
  2117. }
  2118. return true;
  2119. }
  2120. void DataStatusSet(void){
  2121. bluecell_Currdatastatus.bluecell_header = 0xbe;
  2122. bluecell_Currdatastatus.bluecell_type = Bluecell_StatusReq;
  2123. bluecell_Currdatastatus.bluecell_length = 94 - 3;
  2124. bluecell_Currdatastatus.bluecell_crcindex = 94 - 2 + 1;
  2125. // bluecell_Currdatastatus.ATT_DL1_PATH = HAL_GPIO_ReadPin(PATH_EN_DL1_GPIO_Port,PATH_EN_DL1_Pin);//CLOCK;
  2126. // bluecell_Currdatastatus.ATT_DL2_PATH = HAL_GPIO_ReadPin(PATH_EN_DL2_GPIO_Port,PATH_EN_DL2_Pin);//CLOCK;
  2127. // bluecell_Currdatastatus.ATT_DL3_PATH = HAL_GPIO_ReadPin(PATH_EN_DL3_GPIO_Port,PATH_EN_DL3_Pin);//CLOCK;
  2128. // bluecell_Currdatastatus.ATT_DL4_PATH = HAL_GPIO_ReadPin(PATH_EN_DL4_GPIO_Port,PATH_EN_DL4_Pin);//CLOCK;
  2129. // bluecell_Currdatastatus.ATT_UL1_PATH = HAL_GPIO_ReadPin(PATH_EN_UL1_GPIO_Port,PATH_EN_UL1_Pin);//CLOCK;
  2130. // bluecell_Currdatastatus.ATT_UL2_PATH = HAL_GPIO_ReadPin(PATH_EN_UL2_GPIO_Port,PATH_EN_UL2_Pin);//CLOCK;
  2131. // bluecell_Currdatastatus.ATT_UL3_PATH = HAL_GPIO_ReadPin(PATH_EN_UL3_GPIO_Port,PATH_EN_UL3_Pin);//CLOCK;
  2132. // bluecell_Currdatastatus.ATT_UL4_PATH = HAL_GPIO_ReadPin(PATH_EN_UL4_GPIO_Port,PATH_EN_UL4_Pin);//CLOCK;
  2133. bluecell_Currdatastatus.bluecell_etx = 0xeb;
  2134. }
  2135. typedef enum{
  2136. MBIC_3_7G = 0x80 ,
  2137. MBIC_3_8G ,
  2138. MBIC_3_9G ,
  2139. MBIC_4_0G ,
  2140. MBIC_4_1G ,
  2141. MBIC_4_6G ,
  2142. MBIC_4_7G ,
  2143. MBIC_4_8G ,
  2144. MBIC_4_9G ,
  2145. MBIC_5_0G ,
  2146. MBIC_DCM ,
  2147. MBIC_SBM ,
  2148. MBIC_KDDI ,
  2149. }MBIC_CardType_t;
  2150. typedef enum{
  2151. BLUECELL_3_7G = 0 ,
  2152. BLUECELL_3_8G ,
  2153. BLUECELL_3_9G ,
  2154. BLUECELL_4_0G ,
  2155. BLUECELL_4_1G ,
  2156. BLUECELL_4_6G ,
  2157. BLUECELL_SBM ,
  2158. BLUECELL_DCM ,
  2159. BLUECELL_KDDI ,
  2160. BLUECELL_4_7G ,
  2161. BLUECELL_4_8G ,
  2162. BLUECELL_4_9G ,
  2163. BLUECELL_5_0G ,
  2164. }Bluecell_CardType_t;
  2165. void Bluecell_DataInit(){
  2166. /*
  2167. MBIC Request List
  2168. Turn off all paths at boot
  2169. */
  2170. bluecell_Currdatastatus.Type = HAL_GPIO_ReadPin(UNIT_ID0_GPIO_Port,UNIT_ID0_Pin);
  2171. bluecell_Currdatastatus.Type += HAL_GPIO_ReadPin(UNIT_ID1_GPIO_Port,UNIT_ID1_Pin) << 1;
  2172. bluecell_Currdatastatus.Type += HAL_GPIO_ReadPin(UNIT_ID2_GPIO_Port,UNIT_ID2_Pin) << 2;
  2173. bluecell_Currdatastatus.Type += HAL_GPIO_ReadPin(UNIT_ID3_GPIO_Port,UNIT_ID3_Pin) << 3;
  2174. switch(bluecell_Currdatastatus.Type){
  2175. case BLUECELL_3_7G: bluecell_Currdatastatus.Type = 0x80;bluecell_Currdatastatus.Carrier_ID = 0x01 ;printf("Type BLUECELL_3_7G Ready....\r\n"); break;
  2176. case BLUECELL_3_8G: bluecell_Currdatastatus.Type = 0x81;bluecell_Currdatastatus.Carrier_ID = 0x02; printf("Type BLUECELL_3_8G Ready....\r\n");break;
  2177. case BLUECELL_3_9G: bluecell_Currdatastatus.Type = 0x82;bluecell_Currdatastatus.Carrier_ID = 0x04;printf("Type BLUECELL_3_9G Ready....\r\n"); break;
  2178. case BLUECELL_4_0G: bluecell_Currdatastatus.Type = 0x83;bluecell_Currdatastatus.Carrier_ID = 0x03; printf("Type BLUECELL_4_0G Ready....\r\n");break;
  2179. case BLUECELL_4_1G: bluecell_Currdatastatus.Type = 0x84;bluecell_Currdatastatus.Carrier_ID = 0x02; printf("Type BLUECELL_4_1G Ready....\r\n");break;
  2180. case BLUECELL_4_6G: bluecell_Currdatastatus.Type = 0x85;bluecell_Currdatastatus.Carrier_ID = 0x01; printf("Type BLUECELL_4_6G Ready....\r\n");break;
  2181. case BLUECELL_4_7G: bluecell_Currdatastatus.Type = 0x86;bluecell_Currdatastatus.Carrier_ID = 0x00; printf("Type BLUECELL_4_7G Ready....\r\n");break;
  2182. case BLUECELL_4_8G: bluecell_Currdatastatus.Type = 0x87;bluecell_Currdatastatus.Carrier_ID = 0x00; printf("Type BLUECELL_3_7G Ready....\r\n");break;
  2183. case BLUECELL_4_9G: bluecell_Currdatastatus.Type = 0x88;bluecell_Currdatastatus.Carrier_ID = 0x00; printf("Type BLUECELL_4_9G Ready....\r\n");break;
  2184. case BLUECELL_5_0G: bluecell_Currdatastatus.Type = 0x89;bluecell_Currdatastatus.Carrier_ID = 0x00; printf("Type BLUECELL_5_0G Ready....\r\n");break;
  2185. case BLUECELL_DCM : bluecell_Currdatastatus.Type = 0x8A;bluecell_Currdatastatus.Carrier_ID = 0x01;printf("Type BLUECELL_DCM Ready....\r\n"); break;
  2186. case BLUECELL_SBM : bluecell_Currdatastatus.Type = 0x8B;bluecell_Currdatastatus.Carrier_ID = 0x03; printf("Type BLUECELL_SBM Ready....\r\n");break;
  2187. case BLUECELL_KDDI: bluecell_Currdatastatus.Type = 0x8C;bluecell_Currdatastatus.Carrier_ID = 0x02;printf("Type BLUECELL_KDDI Ready....\r\n"); break;
  2188. default : printf("Type %x Ready....\r\n",bluecell_Currdatastatus.Type);break;
  2189. }
  2190. printf("Type %x Ready....\r\n",bluecell_Currdatastatus.Type);
  2191. // printf("bluecell_Currdatastatus.Type : %02x \r\n",bluecell_Currdatastatus.Type);
  2192. #if 1 // PYJ.2020.06.17_BEGIN --
  2193. HAL_GPIO_WritePin(PATH_EN_DL1_GPIO_Port,PATH_EN_DL1_Pin,bluecell_Currdatastatus.ATT_DL1_PATH);
  2194. HAL_GPIO_WritePin(PATH_EN_DL2_GPIO_Port,PATH_EN_DL2_Pin,bluecell_Currdatastatus.ATT_DL2_PATH);
  2195. HAL_GPIO_WritePin(PATH_EN_DL3_GPIO_Port,PATH_EN_DL3_Pin,bluecell_Currdatastatus.ATT_DL3_PATH);
  2196. HAL_GPIO_WritePin(PATH_EN_DL4_GPIO_Port,PATH_EN_DL4_Pin,bluecell_Currdatastatus.ATT_DL4_PATH);
  2197. HAL_GPIO_WritePin(PATH_EN_UL1_GPIO_Port,PATH_EN_UL1_Pin,bluecell_Currdatastatus.ATT_UL1_PATH);
  2198. HAL_GPIO_WritePin(PATH_EN_UL2_GPIO_Port,PATH_EN_UL2_Pin,bluecell_Currdatastatus.ATT_UL2_PATH);
  2199. HAL_GPIO_WritePin(PATH_EN_UL3_GPIO_Port,PATH_EN_UL3_Pin,bluecell_Currdatastatus.ATT_UL3_PATH);
  2200. HAL_GPIO_WritePin(PATH_EN_UL4_GPIO_Port,PATH_EN_UL4_Pin,bluecell_Currdatastatus.ATT_UL4_PATH);
  2201. #endif // PYJ.2020.06.17_END --
  2202. HAL_Delay(10);
  2203. CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
  2204. if(bluecell_Currdatastatus.Selftest1==0){
  2205. // printf("Selftest1 : 0 \r\n");
  2206. HAL_GPIO_WritePin(_PATH_SW1_GPIO_Port,_PATH_SW1_Pin,GPIO_PIN_RESET);//CLOCK
  2207. HAL_GPIO_WritePin(PATH_SW1_GPIO_Port,PATH_SW1_Pin,GPIO_PIN_SET);//CLOCK
  2208. }else{
  2209. // printf("Selftest1 : 1 \r\n");
  2210. HAL_GPIO_WritePin(_PATH_SW1_GPIO_Port,_PATH_SW1_Pin,GPIO_PIN_SET);//CLOCK
  2211. HAL_GPIO_WritePin(PATH_SW1_GPIO_Port,PATH_SW1_Pin,GPIO_PIN_RESET);//CLOCK
  2212. }
  2213. if(bluecell_Currdatastatus.Selftest2==0){
  2214. // printf("Selftest1 : 0 \r\n");
  2215. HAL_GPIO_WritePin(_PATH_SW2_GPIO_Port,_PATH_SW2_Pin,GPIO_PIN_RESET);//CLOCK
  2216. HAL_GPIO_WritePin(PATH_SW2_GPIO_Port,PATH_SW2_Pin,GPIO_PIN_SET);//CLOCK
  2217. }else{
  2218. // printf("Selftest2 : 1 \r\n");
  2219. HAL_GPIO_WritePin(_PATH_SW2_GPIO_Port,_PATH_SW2_Pin,GPIO_PIN_SET);//CLOCK
  2220. HAL_GPIO_WritePin(PATH_SW2_GPIO_Port,PATH_SW2_Pin,GPIO_PIN_RESET);//CLOCK
  2221. }
  2222. if(bluecell_Currdatastatus.Selftest3==0){
  2223. // printf("Selftest1 : 0 \r\n");
  2224. HAL_GPIO_WritePin(_PATH_SW3_GPIO_Port,_PATH_SW3_Pin,GPIO_PIN_RESET);//CLOCK
  2225. HAL_GPIO_WritePin(PATH_SW3_GPIO_Port,PATH_SW3_Pin,GPIO_PIN_SET);//CLOCK
  2226. }else{
  2227. // printf("Selftest3 : 1 \r\n");
  2228. HAL_GPIO_WritePin(_PATH_SW3_GPIO_Port,_PATH_SW3_Pin,GPIO_PIN_SET);//CLOCK
  2229. HAL_GPIO_WritePin(PATH_SW3_GPIO_Port,PATH_SW3_Pin,GPIO_PIN_RESET);//CLOCK
  2230. }
  2231. if(bluecell_Currdatastatus.Selftest4==0){
  2232. // printf("Selftest4 : 0 \r\n");
  2233. HAL_GPIO_WritePin(_PATH_SW4_GPIO_Port,_PATH_SW4_Pin,GPIO_PIN_RESET);//CLOCK
  2234. HAL_GPIO_WritePin(PATH_SW4_GPIO_Port,PATH_SW4_Pin,GPIO_PIN_SET);//CLOCK
  2235. }else{
  2236. // printf("Selftest4 : 1 \r\n");
  2237. HAL_GPIO_WritePin(_PATH_SW4_GPIO_Port,_PATH_SW4_Pin,GPIO_PIN_SET);//CLOCK
  2238. HAL_GPIO_WritePin(PATH_SW4_GPIO_Port,PATH_SW4_Pin,GPIO_PIN_RESET);//CLOCK
  2239. }
  2240. DataStatusSet();
  2241. }
  2242. //uint8_t ResultData[1024] = {0,};
  2243. uint8_t* MBIC_HeaderDataSetting(uint8_t* data){
  2244. static uint8_t ResultData[1024] = {0,}; /*NOT YET*/
  2245. return ResultData;
  2246. }
  2247. void ALARM_Value_Get(uint8_t datatype,uint8_t* ret){
  2248. switch(datatype){
  2249. }
  2250. }
  2251. #define MBIC_AID 0xE0
  2252. uint32_t MBIC_DataSend(uint8_t* data){
  2253. uint32_t i = 0;
  2254. uint32_t Length = 0;
  2255. int16_t tmpdata = 0;
  2256. /*ALARM BIT LIST*/
  2257. data[MBIC_PAYLOADSTART + i++] = MBIC_AID;
  2258. data[MBIC_PAYLOADSTART + i++] = Alarm_Bit_List;
  2259. Length += 10;
  2260. data[MBIC_PAYLOADSTART + i++] = 10; // LENGTH
  2261. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.ALARM_MASK1;
  2262. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.ALARM_MASK2;
  2263. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.ALARM_MASK3;
  2264. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.ALARM_MASK4;
  2265. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.ALARM_MASK5;
  2266. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.ALARM_TEMP_HIGH;
  2267. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.ALARM_DLI_Level;
  2268. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.ALARM_DLI_SHTUTDOWN;
  2269. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.ALARM_ULO_Level;
  2270. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.ALARM_ULO_SHTUTDOWN;
  2271. /*ALARM BIT MASK*/
  2272. data[MBIC_PAYLOADSTART + i++] = MBIC_AID;
  2273. data[MBIC_PAYLOADSTART + i++] = Alarm_Mask;
  2274. Length += 5;
  2275. data[MBIC_PAYLOADSTART + i++] = 5; // LENGTH
  2276. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.ALARM_MASK1;
  2277. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.ALARM_MASK2;
  2278. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.ALARM_MASK3;
  2279. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.ALARM_MASK4;
  2280. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.ALARM_MASK5;
  2281. /*Alarm_Test_Mode*/
  2282. data[MBIC_PAYLOADSTART + i++] = MBIC_AID;
  2283. data[MBIC_PAYLOADSTART + i++] = Alarm_Test_Mode;
  2284. Length += 1;
  2285. data[MBIC_PAYLOADSTART + i++] = 1; // LENGTH
  2286. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.ALARM_TESTMODE;
  2287. /*Alarm_Test_Mode*/
  2288. data[MBIC_PAYLOADSTART + i++] = MBIC_AID;
  2289. data[MBIC_PAYLOADSTART + i++] = Alarm_Test_Dummy;
  2290. Length += 5;
  2291. data[MBIC_PAYLOADSTART + i++] = 5; // LENGTH
  2292. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.ALARM_Test_Dummy1;
  2293. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.ALARM_Test_Dummy2;
  2294. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.ALARM_Test_Dummy3;
  2295. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.ALARM_Test_Dummy4;
  2296. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.ALARM_Test_Dummy5;
  2297. /*CPU_Version*/
  2298. data[MBIC_PAYLOADSTART + i++] = MBIC_AID;
  2299. data[MBIC_PAYLOADSTART + i++] = CPU_Version;
  2300. Length += 3;
  2301. data[MBIC_PAYLOADSTART + i++] = 3; // LENGTH
  2302. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.CPUVERSION1 = 0x00;
  2303. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.CPUVERSION2 = 0x00;
  2304. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.CPUVERSION3 = 0x01;
  2305. /*CPU_Current_Bank*/
  2306. data[MBIC_PAYLOADSTART + i++] = MBIC_AID;
  2307. data[MBIC_PAYLOADSTART + i++] = CPU_Current_Bank;
  2308. Length += 1;
  2309. data[MBIC_PAYLOADSTART + i++] = 1; // LENGTH
  2310. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.CPU_Current_Bank;
  2311. /*CPU_Bank1_Image_Version*/
  2312. data[MBIC_PAYLOADSTART + i++] = MBIC_AID;
  2313. data[MBIC_PAYLOADSTART + i++] = CPU_Bank1_Image_Version;
  2314. data[MBIC_PAYLOADSTART + i++] = 3; // LENGTH
  2315. Length += 3;
  2316. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.CPU_Bank1_Image_Version1;
  2317. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.CPU_Bank1_Image_Version2;
  2318. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.CPU_Bank1_Image_Version3;
  2319. /*CPU_Bank1_Image_BuildTime*/
  2320. data[MBIC_PAYLOADSTART + i++] = MBIC_AID;
  2321. data[MBIC_PAYLOADSTART + i++] = CPU_Bank1_Image_BuildTime;
  2322. data[MBIC_PAYLOADSTART + i++] = 6; // LENGTH
  2323. Length += 6;
  2324. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.CPU_Bank1_Image_BuildTime1;
  2325. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.CPU_Bank1_Image_BuildTime2;
  2326. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.CPU_Bank1_Image_BuildTime3;
  2327. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.CPU_Bank1_Image_BuildTime4;
  2328. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.CPU_Bank1_Image_BuildTime5;
  2329. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.CPU_Bank1_Image_BuildTime6;
  2330. /*CPU_Bank1_Image_Name*/
  2331. data[MBIC_PAYLOADSTART + i++] = MBIC_AID;
  2332. data[MBIC_PAYLOADSTART + i++] = CPU_Bank1_Image_Name;
  2333. data[MBIC_PAYLOADSTART + i++] = 32; // LENGTH
  2334. Length += 32;
  2335. for(int a = 0; a < 32; a++){
  2336. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.CPU_Bank1_Image_Name[a];
  2337. }
  2338. /*CPU_Bank2_Image_Version*/
  2339. data[MBIC_PAYLOADSTART + i++] = MBIC_AID;
  2340. data[MBIC_PAYLOADSTART + i++] = CPU_Bank2_Image_Version;
  2341. data[MBIC_PAYLOADSTART + i++] = 3; // LENGTH
  2342. Length += 3;
  2343. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.CPU_Bank2_Image_Version1;
  2344. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.CPU_Bank2_Image_Version2;
  2345. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.CPU_Bank2_Image_Version3;
  2346. /*CPU_Bank2_Image_BuildTime*/
  2347. data[MBIC_PAYLOADSTART + i++] = MBIC_AID;
  2348. data[MBIC_PAYLOADSTART + i++] = CPU_Bank2_Image_BuildTime;
  2349. data[MBIC_PAYLOADSTART + i++] = 6; // LENGTH
  2350. Length += 6;
  2351. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.CPU_Bank2_Image_BuildTime1;
  2352. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.CPU_Bank2_Image_BuildTime2;
  2353. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.CPU_Bank2_Image_BuildTime3;
  2354. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.CPU_Bank2_Image_BuildTime4;
  2355. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.CPU_Bank2_Image_BuildTime5;
  2356. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.CPU_Bank2_Image_BuildTime6;
  2357. /*CPU_Bank2_Image_Name*/
  2358. data[MBIC_PAYLOADSTART + i++] = MBIC_AID;
  2359. data[MBIC_PAYLOADSTART + i++] = CPU_Bank2_Image_Name;
  2360. data[MBIC_PAYLOADSTART + i++] = 32; // LENGTH
  2361. Length += 32;
  2362. for(int a = 0; a < 32; a++){
  2363. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.CPU_Bank2_Image_Name[a];
  2364. }
  2365. /*Temperature*/
  2366. data[MBIC_PAYLOADSTART + i++] = MBIC_AID;
  2367. data[MBIC_PAYLOADSTART + i++] = Temperature;
  2368. data[MBIC_PAYLOADSTART + i++] = 1; // LENGTH
  2369. Length += 1;
  2370. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.DET_TEMP;
  2371. /*Temperature_Offset*/
  2372. data[MBIC_PAYLOADSTART + i++] = MBIC_AID;
  2373. data[MBIC_PAYLOADSTART + i++] = Temperature_Offset;
  2374. data[MBIC_PAYLOADSTART + i++] = 1; // LENGTH
  2375. Length += 1 ;
  2376. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.bluecell_User_TEMP_OFFSET;
  2377. /*Temperature_Offset*/
  2378. data[MBIC_PAYLOADSTART + i++] = MBIC_AID;
  2379. data[MBIC_PAYLOADSTART + i++] = Temp_High_Threshold;
  2380. data[MBIC_PAYLOADSTART + i++] = 1; // LENGTH
  2381. Length += 1;
  2382. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.Temp_High_Threshold;
  2383. /*Node*/
  2384. data[MBIC_PAYLOADSTART + i++] = MBIC_AID;
  2385. data[MBIC_PAYLOADSTART + i++] = Node;
  2386. data[MBIC_PAYLOADSTART + i++] = 1; // LENGTH
  2387. Length += 1;
  2388. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.NODE;
  2389. /*Type*/
  2390. data[MBIC_PAYLOADSTART + i++] = MBIC_AID;
  2391. data[MBIC_PAYLOADSTART + i++] = Type;
  2392. data[MBIC_PAYLOADSTART + i++] = 1; // LENGTH
  2393. Length += 1;
  2394. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.Type;
  2395. printf(" bluecell_Currdatastatus.Type : %x \r\n", bluecell_Currdatastatus.Type);
  2396. /*PCB_Version*/
  2397. data[MBIC_PAYLOADSTART + i++] = MBIC_AID;
  2398. data[MBIC_PAYLOADSTART + i++] = PCB_Version;
  2399. data[MBIC_PAYLOADSTART + i++] = 2; // LENGTH
  2400. Length += 2;
  2401. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.PCB_Version[0];
  2402. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.PCB_Version[1];
  2403. /*Serial_Number*/
  2404. data[MBIC_PAYLOADSTART + i++] = MBIC_AID;
  2405. data[MBIC_PAYLOADSTART + i++] = Serial_Number;
  2406. data[MBIC_PAYLOADSTART + i++] = 20; // LENGTH
  2407. Length += 20 ;
  2408. for(int a = 0; a < 20; a++){
  2409. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.Serial_Number[a];
  2410. }
  2411. /*Manufacture*/
  2412. data[MBIC_PAYLOADSTART + i++] = MBIC_AID;
  2413. data[MBIC_PAYLOADSTART + i++] = Manufacture;
  2414. data[MBIC_PAYLOADSTART + i++] = 1; // LENGTH
  2415. Length += 1 ;
  2416. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.Manufacture;
  2417. /*Manufacture_Date*/
  2418. data[MBIC_PAYLOADSTART + i++] = MBIC_AID;
  2419. data[MBIC_PAYLOADSTART + i++] = Manufacture_Date;
  2420. data[MBIC_PAYLOADSTART + i++] = 3; // LENGTH
  2421. Length += 3 ;
  2422. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.Manufacture_Date[0];
  2423. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.Manufacture_Date[1];
  2424. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.Manufacture_Date[2];
  2425. /*Freq_ID*/
  2426. data[MBIC_PAYLOADSTART + i++] = MBIC_AID;
  2427. data[MBIC_PAYLOADSTART + i++] = Freq_ID;
  2428. data[MBIC_PAYLOADSTART + i++] = 1; // LENGTH
  2429. Length += 1 ;
  2430. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.Freq_ID;
  2431. /*Carrier_ID*/
  2432. data[MBIC_PAYLOADSTART + i++] = MBIC_AID;
  2433. data[MBIC_PAYLOADSTART + i++] = Carrier_ID;
  2434. data[MBIC_PAYLOADSTART + i++] = 1; // LENGTH
  2435. Length += 1 ;
  2436. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.Carrier_ID;
  2437. /*Carrier_ID*/
  2438. data[MBIC_PAYLOADSTART + i++] = MBIC_AID;
  2439. data[MBIC_PAYLOADSTART + i++] = Carrier_ON_OFF;
  2440. data[MBIC_PAYLOADSTART + i++] = 1; // LENGTH
  2441. Length += 1 ;
  2442. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.Carrier_ON_OFF;
  2443. /*DLI_P1_Level*/
  2444. data[MBIC_PAYLOADSTART + i++] = MBIC_AID;
  2445. data[MBIC_PAYLOADSTART + i++] = DLI_P1_Level;
  2446. data[MBIC_PAYLOADSTART + i++] = 2; // LENGTH
  2447. Length += 2 ;
  2448. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.DLI_P1_Level1_H;
  2449. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.DLI_P1_Level1_L;
  2450. /*DLI_P2_Level*/
  2451. data[MBIC_PAYLOADSTART + i++] = MBIC_AID;
  2452. data[MBIC_PAYLOADSTART + i++] = DLI_P2_Level;
  2453. data[MBIC_PAYLOADSTART + i++] = 2; // LENGTH
  2454. Length += 2 ;
  2455. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.DLI_P2_Level2_H;
  2456. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.DLI_P2_Level2_L;
  2457. /*DLI_P3_Level*/
  2458. data[MBIC_PAYLOADSTART + i++] = MBIC_AID;
  2459. data[MBIC_PAYLOADSTART + i++] = DLI_P3_Level;
  2460. data[MBIC_PAYLOADSTART + i++] = 2; // LENGTH
  2461. Length += 2 ;
  2462. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.DLI_P3_Level3_H;
  2463. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.DLI_P3_Level3_L;
  2464. /*DLI_P4_Level*/
  2465. data[MBIC_PAYLOADSTART + i++] = MBIC_AID;
  2466. data[MBIC_PAYLOADSTART + i++] = DLI_P4_Level;
  2467. data[MBIC_PAYLOADSTART + i++] = 2; // LENGTH
  2468. Length += 2 ;
  2469. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.DLI_P4_Level4_H;
  2470. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.DLI_P4_Level4_L;
  2471. /*ULO_P1_Level*/
  2472. data[MBIC_PAYLOADSTART + i++] = MBIC_AID;
  2473. data[MBIC_PAYLOADSTART + i++] = ULO_P1_Level;
  2474. data[MBIC_PAYLOADSTART + i++] = 2; // LENGTH
  2475. Length += 2 ;
  2476. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.ULO_P1_Level1_H;
  2477. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.ULO_P1_Level1_L;
  2478. /*ULO_P2_Level*/
  2479. data[MBIC_PAYLOADSTART + i++] = MBIC_AID;
  2480. data[MBIC_PAYLOADSTART + i++] = ULO_P2_Level;
  2481. data[MBIC_PAYLOADSTART + i++] = 2; // LENGTH
  2482. Length += 2 ;
  2483. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.ULO_P2_Level2_H;
  2484. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.ULO_P2_Level2_L;
  2485. /*ULO_P3_Level*/
  2486. data[MBIC_PAYLOADSTART + i++] = MBIC_AID;
  2487. data[MBIC_PAYLOADSTART + i++] = ULO_P3_Level;
  2488. data[MBIC_PAYLOADSTART + i++] = 2; // LENGTH
  2489. Length += 2 ;
  2490. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.ULO_P3_Level3_H;
  2491. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.ULO_P3_Level3_L;
  2492. /*ULO_P4_Level*/
  2493. data[MBIC_PAYLOADSTART + i++] = MBIC_AID;
  2494. data[MBIC_PAYLOADSTART + i++] = ULO_P4_Level;
  2495. data[MBIC_PAYLOADSTART + i++] = 2; // LENGTH
  2496. Length += 2 ;
  2497. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.ULO_P4_Level4_H;
  2498. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.ULO_P4_Level4_L;
  2499. /*DLI_RF_Path1_ON_OFF*/
  2500. data[MBIC_PAYLOADSTART + i++] = MBIC_AID;
  2501. // printf("data[%d]:%x\r\n",MBIC_PAYLOADSTART + i-1,data[MBIC_PAYLOADSTART + i-1]);
  2502. data[MBIC_PAYLOADSTART + i++] = DLI_RF_Path1_ON_OFF;
  2503. // printf("data[%d]:%x\r\n",MBIC_PAYLOADSTART + i-1,data[MBIC_PAYLOADSTART + i-1]);
  2504. data[MBIC_PAYLOADSTART + i++] = 1; // LENGTH
  2505. Length += 1 ;
  2506. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.ATT_DL1_PATH;
  2507. // printf("data[%d]:%x\r\n",MBIC_PAYLOADSTART + i-1,data[MBIC_PAYLOADSTART + i-1]);
  2508. // printf("bluecell_Currdatastatus.ATT_DL1_PATH : %d\r\n",bluecell_Currdatastatus.ATT_DL1_PATH);
  2509. /*DLI_RF_Path2_ON_OFF*/
  2510. data[MBIC_PAYLOADSTART + i++] = MBIC_AID;
  2511. data[MBIC_PAYLOADSTART + i++] = DLI_RF_Path2_ON_OFF;
  2512. data[MBIC_PAYLOADSTART + i++] = 1; // LENGTH
  2513. Length += 1 ;
  2514. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.ATT_DL2_PATH;
  2515. /*DLI_RF_Path3_ON_OFF*/
  2516. data[MBIC_PAYLOADSTART + i++] = MBIC_AID;
  2517. data[MBIC_PAYLOADSTART + i++] = DLI_RF_Path3_ON_OFF;
  2518. data[MBIC_PAYLOADSTART + i++] = 1; // LENGTH
  2519. Length += 1 ;
  2520. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.ATT_DL3_PATH;
  2521. /*DLI_RF_Path4_ON_OFF*/
  2522. data[MBIC_PAYLOADSTART + i++] = MBIC_AID;
  2523. data[MBIC_PAYLOADSTART + i++] = DLI_RF_Path4_ON_OFF;
  2524. data[MBIC_PAYLOADSTART + i++] = 1; // LENGTH
  2525. Length += 1 ;
  2526. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.ATT_DL4_PATH;
  2527. /*DLI_Gain_Atten1*/
  2528. data[MBIC_PAYLOADSTART + i++] = MBIC_AID;
  2529. data[MBIC_PAYLOADSTART + i++] = DLI_Gain_Atten1;
  2530. data[MBIC_PAYLOADSTART + i++] = 2; // LENGTH
  2531. Length += 2 ;
  2532. tmpdata = bluecell_Currdatastatus.ATT_DL1_H << 8 | bluecell_Currdatastatus.ATT_DL1_L;
  2533. // tmpdata *= 10;
  2534. // printf("tmpdata : %x \r\n",tmpdata);
  2535. data[MBIC_PAYLOADSTART + i++] = ((tmpdata & 0xFF00) >> 8);
  2536. data[MBIC_PAYLOADSTART + i++] = (tmpdata & 0x00FF);
  2537. /*DLI_Gain_Atten2*/
  2538. data[MBIC_PAYLOADSTART + i++] = MBIC_AID;
  2539. data[MBIC_PAYLOADSTART + i++] = DLI_Gain_Atten2;
  2540. data[MBIC_PAYLOADSTART + i++] = 2; // LENGTH
  2541. Length += 2 ;
  2542. tmpdata = bluecell_Currdatastatus.ATT_DL2_H << 8 | bluecell_Currdatastatus.ATT_DL2_L;
  2543. // tmpdata *= 10;
  2544. data[MBIC_PAYLOADSTART + i++] = ((tmpdata & 0xFF00) >> 8);
  2545. data[MBIC_PAYLOADSTART + i++] = (tmpdata & 0x00FF);
  2546. /*DLI_Gain_Atten3*/
  2547. data[MBIC_PAYLOADSTART + i++] = MBIC_AID;
  2548. data[MBIC_PAYLOADSTART + i++] = DLI_Gain_Atten3;
  2549. data[MBIC_PAYLOADSTART + i++] = 2; // LENGTH
  2550. Length += 2 ;
  2551. tmpdata = bluecell_Currdatastatus.ATT_DL3_H << 8 | bluecell_Currdatastatus.ATT_DL3_L;
  2552. // tmpdata *= 10;
  2553. data[MBIC_PAYLOADSTART + i++] = ((tmpdata & 0xFF00) >> 8);
  2554. data[MBIC_PAYLOADSTART + i++] = (tmpdata & 0x00FF);
  2555. /*DLI_Gain_Atten4*/
  2556. data[MBIC_PAYLOADSTART + i++] = MBIC_AID;
  2557. data[MBIC_PAYLOADSTART + i++] = DLI_Gain_Atten4;
  2558. data[MBIC_PAYLOADSTART + i++] = 2; // LENGTH
  2559. Length += 2 ;
  2560. tmpdata = bluecell_Currdatastatus.ATT_DL4_H << 8 | bluecell_Currdatastatus.ATT_DL4_L;
  2561. // tmpdata *= 10;
  2562. data[MBIC_PAYLOADSTART + i++] = ((tmpdata & 0xFF00) >> 8);
  2563. data[MBIC_PAYLOADSTART + i++] = (tmpdata & 0x00FF);
  2564. /*DLI_Gain_Atten_Offset1*/
  2565. data[MBIC_PAYLOADSTART + i++] = MBIC_AID;
  2566. data[MBIC_PAYLOADSTART + i++] = DLI_Gain_Atten_Offset1;
  2567. data[MBIC_PAYLOADSTART + i++] = 2; // LENGTH
  2568. Length += 2;
  2569. tmpdata = bluecell_Currdatastatus.bluecell_User_DL1_H << 8 | bluecell_Currdatastatus.bluecell_User_DL1_L;
  2570. // tmpdata *= 10;
  2571. data[MBIC_PAYLOADSTART + i++] = ((tmpdata & 0xFF00) >> 8);
  2572. data[MBIC_PAYLOADSTART + i++] = (tmpdata & 0x00FF);
  2573. /*DLI_Gain_Atten_Offset2*/
  2574. data[MBIC_PAYLOADSTART + i++] = MBIC_AID;
  2575. data[MBIC_PAYLOADSTART + i++] = DLI_Gain_Atten_Offset2;
  2576. data[MBIC_PAYLOADSTART + i++] = 2; // LENGTH
  2577. Length += 2 ;
  2578. tmpdata = bluecell_Currdatastatus.bluecell_User_DL2_H << 8 | bluecell_Currdatastatus.bluecell_User_DL2_L;
  2579. // tmpdata *= 10;
  2580. data[MBIC_PAYLOADSTART + i++] = ((tmpdata & 0xFF00) >> 8);
  2581. data[MBIC_PAYLOADSTART + i++] = (tmpdata & 0x00FF);
  2582. /*DLI_Gain_Atten_Offset3*/
  2583. data[MBIC_PAYLOADSTART + i++] = MBIC_AID;
  2584. data[MBIC_PAYLOADSTART + i++] = DLI_Gain_Atten_Offset3;
  2585. data[MBIC_PAYLOADSTART + i++] = 2; // LENGTH
  2586. Length += 2 ;
  2587. tmpdata = bluecell_Currdatastatus.bluecell_User_DL3_H << 8 | bluecell_Currdatastatus.bluecell_User_DL3_L;
  2588. // tmpdata *= 10;
  2589. data[MBIC_PAYLOADSTART + i++] = ((tmpdata & 0xFF00) >> 8);
  2590. data[MBIC_PAYLOADSTART + i++] = (tmpdata & 0x00FF);
  2591. /*DLI_Gain_Atten_Offset4*/
  2592. data[MBIC_PAYLOADSTART + i++] = MBIC_AID;
  2593. data[MBIC_PAYLOADSTART + i++] = DLI_Gain_Atten_Offset4;
  2594. data[MBIC_PAYLOADSTART + i++] = 2; // LENGTH
  2595. Length += 2 ;
  2596. tmpdata = bluecell_Currdatastatus.bluecell_User_DL4_H << 8 | bluecell_Currdatastatus.bluecell_User_DL4_L;
  2597. // tmpdata *= 10;
  2598. data[MBIC_PAYLOADSTART + i++] = ((tmpdata & 0xFF00) >> 8);
  2599. data[MBIC_PAYLOADSTART + i++] = (tmpdata & 0x00FF);
  2600. /*DLI_Level_High_Threshold*/
  2601. data[MBIC_PAYLOADSTART + i++] = MBIC_AID;
  2602. data[MBIC_PAYLOADSTART + i++] = DLI_Level_High_Threshold;
  2603. data[MBIC_PAYLOADSTART + i++] = 2; // LENGTH
  2604. Length += 2 ;
  2605. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.DLI_Level_High_Threshold_H;
  2606. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.DLI_Level_High_Threshold_L;
  2607. /*DLI_Level_Low_Threshold*/
  2608. data[MBIC_PAYLOADSTART + i++] = MBIC_AID;
  2609. data[MBIC_PAYLOADSTART + i++] = DLI_Level_Low_Threshold;
  2610. data[MBIC_PAYLOADSTART + i++] = 2; // LENGTH
  2611. Length += 2 ;
  2612. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.DLI_Level_Low_Threshold_H;
  2613. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.DLI_Level_Low_Threshold_L;
  2614. /*DLI_Level*/
  2615. data[MBIC_PAYLOADSTART + i++] = MBIC_AID;
  2616. data[MBIC_PAYLOADSTART + i++] = DLI_Level;
  2617. data[MBIC_PAYLOADSTART + i++] = 8; // LENGTH
  2618. Length += 8 ;
  2619. tmpdata = bluecell_Currdatastatus.DLI_Level1_H << 8 | bluecell_Currdatastatus.DLI_Level1_L;
  2620. tmpdata *= 10;
  2621. data[MBIC_PAYLOADSTART + i++] = ((tmpdata & 0xFF00) >> 8);
  2622. data[MBIC_PAYLOADSTART + i++] = (tmpdata & 0x00FF);
  2623. tmpdata = bluecell_Currdatastatus.DLI_Level2_H << 8 | bluecell_Currdatastatus.DLI_Level2_L;
  2624. tmpdata *= 10;
  2625. data[MBIC_PAYLOADSTART + i++] = ((tmpdata & 0xFF00) >> 8);
  2626. data[MBIC_PAYLOADSTART + i++] = (tmpdata & 0x00FF);
  2627. tmpdata = bluecell_Currdatastatus.DLI_Level3_H << 8 | bluecell_Currdatastatus.DLI_Level3_L;
  2628. tmpdata *= 10;
  2629. data[MBIC_PAYLOADSTART + i++] = ((tmpdata & 0xFF00) >> 8);
  2630. data[MBIC_PAYLOADSTART + i++] = (tmpdata & 0x00FF);
  2631. tmpdata = bluecell_Currdatastatus.DLI_Level4_H << 8 | bluecell_Currdatastatus.DLI_Level4_L;
  2632. tmpdata *= 10;
  2633. data[MBIC_PAYLOADSTART + i++] = ((tmpdata & 0xFF00) >> 8);
  2634. data[MBIC_PAYLOADSTART + i++] = (tmpdata & 0x00FF);
  2635. /*DLI_FRBT_Atten*/
  2636. data[MBIC_PAYLOADSTART + i++] = MBIC_AID;
  2637. data[MBIC_PAYLOADSTART + i++] = DLI_FRBT_Atten;
  2638. data[MBIC_PAYLOADSTART + i++] = 8; // LENGTH
  2639. Length += 8 ;
  2640. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.DLI_FRBT_Atten1_H;
  2641. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.DLI_FRBT_Atten1_L;
  2642. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.DLI_FRBT_Atten2_H;
  2643. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.DLI_FRBT_Atten2_L;
  2644. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.DLI_FRBT_Atten3_H;
  2645. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.DLI_FRBT_Atten3_L;
  2646. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.DLI_FRBT_Atten4_H;
  2647. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.DLI_FRBT_Atten4_L;
  2648. /*DLI_FRBT_D_Day*/
  2649. data[MBIC_PAYLOADSTART + i++] = MBIC_AID;
  2650. data[MBIC_PAYLOADSTART + i++] = DLI_FRBT_D_Day;
  2651. data[MBIC_PAYLOADSTART + i++] = 1; // LENGTH
  2652. Length += 1 ;
  2653. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.DLI_FRBT_D_Day;
  2654. /*DLI_FRBT_Status*/
  2655. data[MBIC_PAYLOADSTART + i++] = MBIC_AID;
  2656. data[MBIC_PAYLOADSTART + i++] = DLI_FRBT_Status;
  2657. data[MBIC_PAYLOADSTART + i++] = 1; // LENGTH
  2658. Length += 1 ;
  2659. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.DLI_FRBT_Status;
  2660. /*DLI_AGC_ON_OFF*/
  2661. data[MBIC_PAYLOADSTART + i++] = MBIC_AID;
  2662. data[MBIC_PAYLOADSTART + i++] = DLI_AGC_ON_OFF;
  2663. data[MBIC_PAYLOADSTART + i++] = 1; // LENGTH
  2664. Length += 1 ;
  2665. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.DLI_AGC_ON_OFF;
  2666. /*DLI_AGC_Threshold*/
  2667. data[MBIC_PAYLOADSTART + i++] = MBIC_AID;
  2668. data[MBIC_PAYLOADSTART + i++] = DLI_AGC_Threshold;
  2669. data[MBIC_PAYLOADSTART + i++] = 2; // LENGTH
  2670. Length += 2 ;
  2671. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.DLI_AGC_Threshold_H;
  2672. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.DLI_AGC_Threshold_L;
  2673. /*DLI_Shutdown_ON_OFF*/
  2674. data[MBIC_PAYLOADSTART + i++] = MBIC_AID;
  2675. data[MBIC_PAYLOADSTART + i++] = DLI_Shutdown_ON_OFF;
  2676. data[MBIC_PAYLOADSTART + i++] = 1; // LENGTH
  2677. Length += 1 ;
  2678. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.DLI_Shutdown_ON_OFF;
  2679. /*DLI_Shutdown_ON_OFF*/
  2680. data[MBIC_PAYLOADSTART + i++] = MBIC_AID;
  2681. data[MBIC_PAYLOADSTART + i++] = DLI_Shutdown_Threshold;
  2682. data[MBIC_PAYLOADSTART + i++] = 2; // LENGTH
  2683. Length += 2 ;
  2684. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.DLI_Shutdown_Threshold_H;
  2685. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.DLI_Shutdown_Threshold_L;
  2686. /*DLI_Shutdown_Count*/
  2687. data[MBIC_PAYLOADSTART + i++] = MBIC_AID;
  2688. data[MBIC_PAYLOADSTART + i++] = DLI_Shutdown_Count;
  2689. data[MBIC_PAYLOADSTART + i++] = 4; // LENGTH
  2690. Length += 4 ;
  2691. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.DLI_Shutdown_Retry_Count1;
  2692. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.DLI_Shutdown_Retry_Count2;
  2693. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.DLI_Shutdown_Retry_Count3;
  2694. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.DLI_Shutdown_Retry_Count4;
  2695. /*ULO_RF_Path1_ON_OFF*/
  2696. data[MBIC_PAYLOADSTART + i++] = MBIC_AID;
  2697. data[MBIC_PAYLOADSTART + i++] = ULO_RF_Path1_ON_OFF;
  2698. data[MBIC_PAYLOADSTART + i++] = 1; // LENGTH
  2699. Length += 1 ;
  2700. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.ATT_UL1_PATH;
  2701. /*ULO_RF_Path3_ON_OFF*/
  2702. data[MBIC_PAYLOADSTART + i++] = MBIC_AID;
  2703. data[MBIC_PAYLOADSTART + i++] = ULO_RF_Path2_ON_OFF;
  2704. data[MBIC_PAYLOADSTART + i++] = 1; // LENGTH
  2705. Length += 1 ;
  2706. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.ATT_UL2_PATH;
  2707. /*ULO_RF_Path3_ON_OFF*/
  2708. data[MBIC_PAYLOADSTART + i++] = MBIC_AID;
  2709. data[MBIC_PAYLOADSTART + i++] = ULO_RF_Path3_ON_OFF;
  2710. data[MBIC_PAYLOADSTART + i++] = 1; // LENGTH
  2711. Length += 1 ;
  2712. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.ATT_UL3_PATH;
  2713. /*ULO_RF_Path4_ON_OFF*/
  2714. data[MBIC_PAYLOADSTART + i++] = MBIC_AID;
  2715. data[MBIC_PAYLOADSTART + i++] = ULO_RF_Path4_ON_OFF;
  2716. data[MBIC_PAYLOADSTART + i++] = 1; // LENGTH
  2717. Length += 1 ;
  2718. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.ATT_UL4_PATH;
  2719. /*ULO_Gain_Atten1*/
  2720. data[MBIC_PAYLOADSTART + i++] = MBIC_AID;
  2721. data[MBIC_PAYLOADSTART + i++] = ULO_Gain_Atten1;
  2722. data[MBIC_PAYLOADSTART + i++] = 2; // LENGTH
  2723. Length += 2 ;
  2724. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.ATT_UL1_H;
  2725. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.ATT_UL1_L;
  2726. /*ULO_Gain_Atten2*/
  2727. data[MBIC_PAYLOADSTART + i++] = MBIC_AID;
  2728. data[MBIC_PAYLOADSTART + i++] = ULO_Gain_Atten2;
  2729. data[MBIC_PAYLOADSTART + i++] = 2; // LENGTH
  2730. Length += 2 ;
  2731. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.ATT_UL2_H;
  2732. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.ATT_UL2_L;
  2733. /*ULO_Gain_Atten3*/
  2734. data[MBIC_PAYLOADSTART + i++] = MBIC_AID;
  2735. data[MBIC_PAYLOADSTART + i++] = ULO_Gain_Atten3;
  2736. data[MBIC_PAYLOADSTART + i++] = 2; // LENGTH
  2737. Length += 2 ;
  2738. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.ATT_UL3_H;
  2739. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.ATT_UL3_L;
  2740. /*ULO_Gain_Atten4*/
  2741. data[MBIC_PAYLOADSTART + i++] = MBIC_AID;
  2742. data[MBIC_PAYLOADSTART + i++] = ULO_Gain_Atten4;
  2743. data[MBIC_PAYLOADSTART + i++] = 2; // LENGTH
  2744. Length += 2 ;
  2745. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.ATT_UL4_H;
  2746. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.ATT_UL4_L;
  2747. /*ULO_Gain_Atten_Offset1*/
  2748. data[MBIC_PAYLOADSTART + i++] = MBIC_AID;
  2749. data[MBIC_PAYLOADSTART + i++] = ULO_Gain_Atten_Offset1;
  2750. data[MBIC_PAYLOADSTART + i++] = 2; // LENGTH
  2751. Length += 2 ;
  2752. tmpdata = bluecell_Currdatastatus.bluecell_User_UL1_H << 8 | bluecell_Currdatastatus.bluecell_User_UL1_L;
  2753. // tmpdata *= 10;
  2754. data[MBIC_PAYLOADSTART + i++] = ((tmpdata & 0xFF00) >> 8);
  2755. data[MBIC_PAYLOADSTART + i++] = (tmpdata & 0x00FF);
  2756. /*ULO_Gain_Atten_Offset2*/
  2757. data[MBIC_PAYLOADSTART + i++] = MBIC_AID;
  2758. data[MBIC_PAYLOADSTART + i++] = ULO_Gain_Atten_Offset2;
  2759. data[MBIC_PAYLOADSTART + i++] = 2; // LENGTH
  2760. Length += 2 ;
  2761. tmpdata = bluecell_Currdatastatus.bluecell_User_UL2_H << 8 | bluecell_Currdatastatus.bluecell_User_UL2_L;
  2762. // tmpdata *= 10;
  2763. data[MBIC_PAYLOADSTART + i++] = ((tmpdata & 0xFF00) >> 8);
  2764. data[MBIC_PAYLOADSTART + i++] = (tmpdata & 0x00FF);
  2765. /*ULO_Gain_Atten_Offset3*/
  2766. data[MBIC_PAYLOADSTART + i++] = MBIC_AID;
  2767. data[MBIC_PAYLOADSTART + i++] = ULO_Gain_Atten_Offset3;
  2768. data[MBIC_PAYLOADSTART + i++] = 2; // LENGTH
  2769. Length += 2 ;
  2770. tmpdata = bluecell_Currdatastatus.bluecell_User_UL3_H << 8 | bluecell_Currdatastatus.bluecell_User_UL3_L;
  2771. // tmpdata *= 10;
  2772. data[MBIC_PAYLOADSTART + i++] = ((tmpdata & 0xFF00) >> 8);
  2773. data[MBIC_PAYLOADSTART + i++] = (tmpdata & 0x00FF);
  2774. /*ULO_Gain_Atten_Offset4*/
  2775. data[MBIC_PAYLOADSTART + i++] = MBIC_AID;
  2776. data[MBIC_PAYLOADSTART + i++] = ULO_Gain_Atten_Offset4;
  2777. data[MBIC_PAYLOADSTART + i++] = 2; // LENGTH
  2778. Length += 2 ;
  2779. tmpdata = bluecell_Currdatastatus.bluecell_User_UL4_H << 8 | bluecell_Currdatastatus.bluecell_User_UL4_L;
  2780. // tmpdata *= 10;
  2781. data[MBIC_PAYLOADSTART + i++] = ((tmpdata & 0xFF00) >> 8);
  2782. data[MBIC_PAYLOADSTART + i++] = (tmpdata & 0x00FF);
  2783. /*ULO_Level_High_Threshold*/
  2784. data[MBIC_PAYLOADSTART + i++] = MBIC_AID;
  2785. data[MBIC_PAYLOADSTART + i++] = ULO_Level_High_Threshold;
  2786. data[MBIC_PAYLOADSTART + i++] = 2; // LENGTH
  2787. Length += 2 ;
  2788. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.ULO_Level_High_Threshold_H;
  2789. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.ULO_Level_High_Threshold_L;
  2790. /*ULO_Level*/
  2791. data[MBIC_PAYLOADSTART + i++] = MBIC_AID;
  2792. data[MBIC_PAYLOADSTART + i++] = ULO_Level;
  2793. data[MBIC_PAYLOADSTART + i++] = 8; // LENGTH
  2794. Length += 8 ;
  2795. tmpdata = bluecell_Currdatastatus.ULO_Level1_H << 8 | bluecell_Currdatastatus.ULO_Level1_L;
  2796. tmpdata *= 10;
  2797. data[MBIC_PAYLOADSTART + i++] = ((tmpdata & 0xFF00) >> 8);
  2798. data[MBIC_PAYLOADSTART + i++] = (tmpdata & 0x00FF);
  2799. tmpdata = bluecell_Currdatastatus.ULO_Level2_H << 8 | bluecell_Currdatastatus.ULO_Level2_L;
  2800. tmpdata *= 10;
  2801. data[MBIC_PAYLOADSTART + i++] = ((tmpdata & 0xFF00) >> 8);
  2802. data[MBIC_PAYLOADSTART + i++] = (tmpdata & 0x00FF);
  2803. tmpdata = bluecell_Currdatastatus.ULO_Level3_H << 8 | bluecell_Currdatastatus.ULO_Level3_L;
  2804. tmpdata *= 10;
  2805. data[MBIC_PAYLOADSTART + i++] = ((tmpdata & 0xFF00) >> 8);
  2806. data[MBIC_PAYLOADSTART + i++] = (tmpdata & 0x00FF);
  2807. tmpdata = bluecell_Currdatastatus.ULO_Level4_H << 8 | bluecell_Currdatastatus.ULO_Level4_L;
  2808. tmpdata *= 10;
  2809. data[MBIC_PAYLOADSTART + i++] = ((tmpdata & 0xFF00) >> 8);
  2810. data[MBIC_PAYLOADSTART + i++] = (tmpdata & 0x00FF);
  2811. /*ULO_ALC_ON_OFF*/
  2812. data[MBIC_PAYLOADSTART + i++] = MBIC_AID;
  2813. data[MBIC_PAYLOADSTART + i++] = ULO_ALC_ON_OFF;
  2814. data[MBIC_PAYLOADSTART + i++] = 1; // LENGTH
  2815. Length += 1 ;
  2816. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.ULO_ALC_ON_OFF;
  2817. /*ULO_ALC_Threshold*/
  2818. data[MBIC_PAYLOADSTART + i++] = MBIC_AID;
  2819. data[MBIC_PAYLOADSTART + i++] = ULO_ALC_Threshold;
  2820. data[MBIC_PAYLOADSTART + i++] = 2; // LENGTH
  2821. Length += 2 ;
  2822. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.ULO_ALC_Threshold_H;
  2823. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.ULO_ALC_Threshold_L;
  2824. /*ULO_ALC_Threshold*/
  2825. data[MBIC_PAYLOADSTART + i++] = MBIC_AID;
  2826. data[MBIC_PAYLOADSTART + i++] = ULO_Shutdown_ON_OFF;
  2827. data[MBIC_PAYLOADSTART + i++] = 1; // LENGTH
  2828. Length += 1;
  2829. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.ULO_Shutdown_ON_OFF;
  2830. /*ULO_ALC_Threshold*/
  2831. data[MBIC_PAYLOADSTART + i++] = MBIC_AID;
  2832. data[MBIC_PAYLOADSTART + i++] = ULO_Shutdown_Threshold;
  2833. data[MBIC_PAYLOADSTART + i++] = 2; // LENGTH
  2834. Length += 2;
  2835. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.ULO_Shutdown_Threshold_H;
  2836. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.ULO_Shutdown_Threshold_L;
  2837. /*ULO_Shutdown_Threshold*/
  2838. data[MBIC_PAYLOADSTART + i++] = MBIC_AID;
  2839. data[MBIC_PAYLOADSTART + i++] = ULO_Shutdown_Retry_Count;
  2840. data[MBIC_PAYLOADSTART + i++] = 4; // LENGTH
  2841. Length += 4;
  2842. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.ULO_Shutdown_Retry_Count1;
  2843. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.ULO_Shutdown_Retry_Count2;
  2844. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.ULO_Shutdown_Retry_Count3;
  2845. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.ULO_Shutdown_Retry_Count4;
  2846. #if 1 // PYJ.2020.06.20_BEGIN --
  2847. /*ULO_ALC_Atten*/
  2848. data[MBIC_PAYLOADSTART + i++] = MBIC_AID;
  2849. data[MBIC_PAYLOADSTART + i++] = ULO_ALC_Atten;
  2850. data[MBIC_PAYLOADSTART + i++] = 8; // LENGTH
  2851. Length += 8 ;
  2852. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.MBIC_ULO_ALC_Atten1_H;
  2853. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.MBIC_ULO_ALC_Atten1_L;
  2854. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.MBIC_ULO_ALC_Atten2_H;
  2855. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.MBIC_ULO_ALC_Atten2_L;
  2856. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.MBIC_ULO_ALC_Atten3_H;
  2857. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.MBIC_ULO_ALC_Atten3_L;
  2858. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.MBIC_ULO_ALC_Atten4_H;
  2859. data[MBIC_PAYLOADSTART + i++] = bluecell_Currdatastatus.MBIC_ULO_ALC_Atten4_L;
  2860. #endif // PYJ.2020.06.20_END --
  2861. uint32_t HeaderLength = 75;
  2862. data[MBIC_LENGTH_0] = (((Length + (3 * HeaderLength)) & 0xFF00) >> 8);
  2863. data[MBIC_LENGTH_1] = ((Length + (3 * HeaderLength)) & 0x00FF);
  2864. data[MBIC_HEADERCHECKSUM_0] = Chksum_Create(data);
  2865. data[MBIC_PAYLOADSTART + i++] = ((CRC16_Generate(&data[MBIC_PAYLOADSTART], (Length + (3 * HeaderLength))) & 0xFF00) >> 8);
  2866. data[MBIC_PAYLOADSTART + i++] = CRC16_Generate(&data[MBIC_PAYLOADSTART], (Length + (3 * HeaderLength))) & 0x00FF;
  2867. data[MBIC_PAYLOADSTART + i++] = 0x03;
  2868. Uart1_Data_Send(data, (Length + (3 * HeaderLength)) + 22 + 3);
  2869. return Length;
  2870. }
  2871. bool MBIC_Operate(uint8_t* data){
  2872. uint8_t datatype = data[MBIC_PAYLOADSTART + 1];
  2873. // uint8_t Length = (data[MBIC_PROT_SUB_DATA_INDEX + 2]);
  2874. uint8_t cmd = data[MBIC_PROT_CMD_INDEX];
  2875. //uint16_t Temp_ADC = 0;
  2876. //uint16_t i = 0;
  2877. //double temp = 0;
  2878. //int16_t Level = 0;
  2879. //int16_t tmpdata = 0;
  2880. uint16_t Length = data[MBIC_LENGTH_0] << 8 | data[MBIC_LENGTH_1];
  2881. //uint8_t* Tempdata;
  2882. uint16_t occurlen = Length;
  2883. /*AID*/
  2884. /* for(int i = 0; i < Length; i++){
  2885. SubData[i] = (data[MBIC_PROT_SUB_DATA_INDEX + 3 + i]);
  2886. }*/
  2887. // SubData 임시 데이터 변수 선언 Subdata로 데이터 전송
  2888. data[MBIC_PREAMBLE_0] = MBIC_PREAMBLE0;
  2889. data[MBIC_PREAMBLE_1] = MBIC_PREAMBLE1;
  2890. data[MBIC_PREAMBLE_2] = MBIC_PREAMBLE2;
  2891. data[MBIC_PREAMBLE_3] = MBIC_PREAMBLE3;
  2892. data[MBIC_SUBUID_0] = MBIC_SUBUID0;
  2893. data[MBIC_SUBUID_1] = MBIC_SUBUID1;
  2894. data[MBIC_RCODE_0] = data[MBIC_RCODE_0];
  2895. data[MBIC_TRID_0] = data[MBIC_TRID_0];
  2896. data[MBIC_TRID_1] = data[MBIC_TRID_1];
  2897. data[MBIC_SEQSUM_0] = data[MBIC_SEQSUM_0];
  2898. data[MBIC_TTL_0] = data[MBIC_TTL_0];
  2899. data[MBIC_TIME_0] = data[MBIC_TIME_0];
  2900. data[MBIC_TIME_1] = data[MBIC_TIME_1];
  2901. data[MBIC_TIME_2] = data[MBIC_TIME_2];
  2902. data[MBIC_TIME_3] = data[MBIC_TIME_3];
  2903. data[MBIC_TIME_4] = data[MBIC_TIME_4];
  2904. data[MBIC_TIME_5] = data[MBIC_TIME_5];
  2905. data[MBIC_ERRRESPONSE_0] = MBIC_ERRRESPONSE;
  2906. if(cmd == MBIC_GET){
  2907. if(Initialize == false){
  2908. Bluecell_DataInit();
  2909. Bluecell_AttenInitialize();
  2910. Initialize = true;
  2911. }
  2912. data[MBIC_CMD_0] = 0x80;//MBIC_ERRRESPONSE;
  2913. Length = MBIC_DataSend(data);
  2914. }
  2915. else if(cmd == MBIC_SET){
  2916. protocolReplay:
  2917. datatype = data[MBIC_PAYLOADSTART + 1];
  2918. switch(datatype){
  2919. case Alarm_Mask :
  2920. bluecell_Currdatastatus.ALARM_MASK1 = data[MBIC_PAYLOADSTART + 3];
  2921. bluecell_Currdatastatus.ALARM_MASK2 = data[MBIC_PAYLOADSTART + 4];
  2922. bluecell_Currdatastatus.ALARM_MASK3 = data[MBIC_PAYLOADSTART + 5];
  2923. bluecell_Currdatastatus.ALARM_MASK4 = data[MBIC_PAYLOADSTART + 6];
  2924. bluecell_Currdatastatus.ALARM_MASK5 = data[MBIC_PAYLOADSTART + 7];
  2925. break;
  2926. case Alarm_Test_Mode :
  2927. bluecell_Currdatastatus.ALARM_TESTMODE = data[MBIC_PAYLOADSTART + 3];
  2928. break;
  2929. case Alarm_Test_Dummy :
  2930. bluecell_Currdatastatus.ALARM_Test_Dummy1 = data[MBIC_PAYLOADSTART + 3];
  2931. bluecell_Currdatastatus.ALARM_Test_Dummy2 = data[MBIC_PAYLOADSTART + 4];
  2932. bluecell_Currdatastatus.ALARM_Test_Dummy3 = data[MBIC_PAYLOADSTART + 5];
  2933. bluecell_Currdatastatus.ALARM_Test_Dummy4 = data[MBIC_PAYLOADSTART + 6];
  2934. bluecell_Currdatastatus.ALARM_Test_Dummy5 = data[MBIC_PAYLOADSTART + 7];
  2935. break;
  2936. case CPU_Bank_Select_Reboot_by :
  2937. bluecell_Currdatastatus.CPU_Bank_Select = data[MBIC_PAYLOADSTART + 3];
  2938. break;
  2939. case SW_Reset :
  2940. bluecell_Currdatastatus.S_W_Reset = data[MBIC_PAYLOADSTART + 3];
  2941. break;
  2942. case Factory_Set_Initialization :
  2943. bluecell_Currdatastatus.Factory_Set_Initialization = data[MBIC_PAYLOADSTART + 3];
  2944. break;
  2945. case Temperature_Offset :
  2946. bluecell_Currdatastatus.bluecell_User_TEMP_OFFSET = data[MBIC_PAYLOADSTART + 3];
  2947. printf("%s : %d \r\n",__func__,__LINE__);
  2948. break;
  2949. case Temp_High_Threshold :
  2950. bluecell_Currdatastatus.Temp_High_Threshold = data[MBIC_PAYLOADSTART + 3];
  2951. break;
  2952. case Temp_High_Threshold_Default :
  2953. bluecell_Currdatastatus.Temp_High_Threshold_Default = data[MBIC_PAYLOADSTART + 3];
  2954. break;
  2955. case LED_TEST :
  2956. bluecell_Currdatastatus.LED_TEST = data[MBIC_PAYLOADSTART + 3];
  2957. case Carrier_ON_OFF :
  2958. break;
  2959. case DLI_RF_Path1_ON_OFF :
  2960. bluecell_Currdatastatus.ATT_DL1_PATH = data[MBIC_PAYLOADSTART + 3];
  2961. if(data[MBIC_PAYLOADSTART + 3]==0){
  2962. HAL_GPIO_WritePin(PATH_EN_DL1_GPIO_Port,PATH_EN_DL1_Pin,GPIO_PIN_RESET);//CLOCK
  2963. }
  2964. else{
  2965. bluecell_Prevdatastatus.ATT_DL1_H = 0xFF;
  2966. bluecell_Prevdatastatus.ATT_DL1_L =0xFF;
  2967. HAL_GPIO_WritePin(PATH_EN_DL1_GPIO_Port,PATH_EN_DL1_Pin,GPIO_PIN_SET);//CLOCK
  2968. }
  2969. CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
  2970. break;
  2971. case DLI_RF_Path2_ON_OFF :
  2972. bluecell_Currdatastatus.ATT_DL2_PATH = data[MBIC_PAYLOADSTART + 3];
  2973. if(data[MBIC_PAYLOADSTART + 3]==0){
  2974. HAL_GPIO_WritePin(PATH_EN_DL2_GPIO_Port,PATH_EN_DL2_Pin,GPIO_PIN_RESET);//CLOCK
  2975. }
  2976. else{
  2977. bluecell_Prevdatastatus.ATT_DL2_H = 0xFF;
  2978. bluecell_Prevdatastatus.ATT_DL2_L = 0xFF;
  2979. HAL_GPIO_WritePin(PATH_EN_DL2_GPIO_Port,PATH_EN_DL2_Pin,GPIO_PIN_SET);//CLOCK
  2980. }
  2981. CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
  2982. break;
  2983. case DLI_RF_Path3_ON_OFF :
  2984. bluecell_Currdatastatus.ATT_DL3_PATH = data[MBIC_PAYLOADSTART + 3];
  2985. if(data[MBIC_PAYLOADSTART + 3]==0){
  2986. HAL_GPIO_WritePin(PATH_EN_DL3_GPIO_Port,PATH_EN_DL3_Pin,GPIO_PIN_RESET);//CLOCK
  2987. }
  2988. else{
  2989. bluecell_Prevdatastatus.ATT_DL3_H = 0xFF;
  2990. bluecell_Prevdatastatus.ATT_DL3_L = 0xFF;
  2991. HAL_GPIO_WritePin(PATH_EN_DL3_GPIO_Port,PATH_EN_DL3_Pin,GPIO_PIN_SET);//CLOCK
  2992. }
  2993. CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
  2994. break;
  2995. case DLI_RF_Path4_ON_OFF :
  2996. bluecell_Currdatastatus.ATT_DL4_PATH = data[MBIC_PAYLOADSTART + 3];
  2997. if(data[MBIC_PAYLOADSTART + 3]==0){
  2998. HAL_GPIO_WritePin(PATH_EN_DL4_GPIO_Port,PATH_EN_DL4_Pin,GPIO_PIN_RESET);//CLOCK
  2999. }
  3000. else{
  3001. bluecell_Prevdatastatus.ATT_DL4_H =0xFF;
  3002. bluecell_Prevdatastatus.ATT_DL4_L = 0xFF;
  3003. HAL_GPIO_WritePin(PATH_EN_DL4_GPIO_Port,PATH_EN_DL4_Pin,GPIO_PIN_SET);//CLOCK
  3004. }
  3005. CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
  3006. break;
  3007. case DLI_Gain_Atten1 :
  3008. bluecell_Currdatastatus.ATT_DL1_H = data[MBIC_PAYLOADSTART + 3];
  3009. bluecell_Currdatastatus.ATT_DL1_L = data[MBIC_PAYLOADSTART + 4];
  3010. printf("bluecell_Currdatastatus.ATT_DL1_H : %x\r\n",bluecell_Currdatastatus.ATT_DL1_H);
  3011. printf("bluecell_Currdatastatus.ATT_DL1_L : %x\r\n",bluecell_Currdatastatus.ATT_DL1_L);
  3012. CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
  3013. break;
  3014. case DLI_Gain_Atten2 :
  3015. bluecell_Currdatastatus.ATT_DL2_H = data[MBIC_PAYLOADSTART + 3];
  3016. bluecell_Currdatastatus.ATT_DL2_L = data[MBIC_PAYLOADSTART + 4];
  3017. CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
  3018. printf("bluecell_Currdatastatus.ATT_DL2_H : %x\r\n",bluecell_Currdatastatus.ATT_DL2_H);
  3019. printf("bluecell_Currdatastatus.ATT_DL2_L : %x\r\n",bluecell_Currdatastatus.ATT_DL2_L);
  3020. break;
  3021. case DLI_Gain_Atten3 :
  3022. bluecell_Currdatastatus.ATT_DL3_H = data[MBIC_PAYLOADSTART + 3];
  3023. bluecell_Currdatastatus.ATT_DL3_L = data[MBIC_PAYLOADSTART + 4];
  3024. CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
  3025. break;
  3026. case DLI_Gain_Atten4 :
  3027. bluecell_Currdatastatus.ATT_DL4_H = data[MBIC_PAYLOADSTART + 3];
  3028. bluecell_Currdatastatus.ATT_DL4_L = data[MBIC_PAYLOADSTART + 4];
  3029. CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
  3030. break;
  3031. case DLI_Gain_Atten_Offset1 :
  3032. bluecell_Currdatastatus.bluecell_User_DL1_H = data[MBIC_PAYLOADSTART + 3];
  3033. bluecell_Currdatastatus.bluecell_User_DL1_L = data[MBIC_PAYLOADSTART + 4];
  3034. // printf("bluecell_Currdatastatus.bluecell_User_DL1_H : %x\r\n",bluecell_Currdatastatus.bluecell_User_DL1_H);
  3035. // printf("bluecell_Currdatastatus.bluecell_User_DL1_L : %x\r\n",bluecell_Currdatastatus.bluecell_User_DL1_L);
  3036. CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
  3037. break;
  3038. case DLI_Gain_Atten_Offset2 :
  3039. bluecell_Currdatastatus.bluecell_User_DL2_H = data[MBIC_PAYLOADSTART + 3];
  3040. bluecell_Currdatastatus.bluecell_User_DL2_L = data[MBIC_PAYLOADSTART + 4];
  3041. CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
  3042. break;
  3043. case DLI_Gain_Atten_Offset3 :
  3044. bluecell_Currdatastatus.bluecell_User_DL3_H = data[MBIC_PAYLOADSTART + 3];
  3045. bluecell_Currdatastatus.bluecell_User_DL3_L = data[MBIC_PAYLOADSTART + 4];
  3046. CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
  3047. break;
  3048. case DLI_Gain_Atten_Offset4 :
  3049. bluecell_Currdatastatus.bluecell_User_DL4_H = data[MBIC_PAYLOADSTART + 3];
  3050. bluecell_Currdatastatus.bluecell_User_DL4_L = data[MBIC_PAYLOADSTART + 4];
  3051. CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
  3052. break;
  3053. case DLI_Level_High_Threshold :
  3054. bluecell_Currdatastatus.DLI_Level_High_Threshold_H = data[MBIC_PAYLOADSTART + 3];
  3055. bluecell_Currdatastatus.DLI_Level_High_Threshold_L = data[MBIC_PAYLOADSTART + 4];
  3056. break;
  3057. case DLI_Level_Low_Threshold :
  3058. bluecell_Currdatastatus.DLI_Level_Low_Threshold_H = data[MBIC_PAYLOADSTART + 3];
  3059. bluecell_Currdatastatus.DLI_Level_Low_Threshold_L = data[MBIC_PAYLOADSTART + 4];
  3060. break;
  3061. case DLI_Level_High_Low_Threshold_default :
  3062. bluecell_Currdatastatus.DLI_Level_High_Low_Threshold_default = data[MBIC_PAYLOADSTART + 3];
  3063. break;
  3064. case DLI_FRBT_D_Day:
  3065. bluecell_Currdatastatus.DLI_FRBT_D_Day = data[MBIC_PAYLOADSTART + 3];
  3066. break;
  3067. case DLI_AGC_ON_OFF :
  3068. /*AGC multi apply*/
  3069. bluecell_Currdatastatus.DLI_AGC_ON_OFF = data[MBIC_PAYLOADSTART + 3];
  3070. break;
  3071. case DLI_AGC_Threshold :
  3072. bluecell_Currdatastatus.DLI_AGC_Threshold_H = data[MBIC_PAYLOADSTART + 3];
  3073. bluecell_Currdatastatus.DLI_AGC_Threshold_L = data[MBIC_PAYLOADSTART + 4];
  3074. break;
  3075. case DLI_AGC_Threshold_Default :
  3076. bluecell_Currdatastatus.DLI_AGC_Threshold_default = data[MBIC_PAYLOADSTART + 3];
  3077. break;
  3078. case DLI_Shutdown_ON_OFF :
  3079. bluecell_Currdatastatus.DLI_Shutdown_ON_OFF = data[MBIC_PAYLOADSTART + 3];
  3080. break;
  3081. case DLI_Shutdown_Threshold :
  3082. bluecell_Currdatastatus.DLI_Shutdown_Threshold_H = data[MBIC_PAYLOADSTART + 3];
  3083. bluecell_Currdatastatus.DLI_Shutdown_Threshold_L = data[MBIC_PAYLOADSTART + 4];
  3084. break;
  3085. case DLI_Shutdown_Threshold_Default :
  3086. bluecell_Currdatastatus.DLI_Shutdown_Threshold_Default = data[MBIC_PAYLOADSTART + 3];
  3087. break;
  3088. case ULO_RF_Path1_ON_OFF :
  3089. bluecell_Currdatastatus.ATT_UL1_PATH = data[MBIC_PAYLOADSTART + 3];
  3090. if(data[MBIC_PAYLOADSTART + 3]==0){
  3091. HAL_GPIO_WritePin(PATH_EN_UL1_GPIO_Port,PATH_EN_UL1_Pin,GPIO_PIN_RESET);//CLOCK
  3092. }
  3093. else{
  3094. bluecell_Prevdatastatus.ATT_UL1_H = 0xFF;
  3095. bluecell_Prevdatastatus.ATT_UL1_L = 0xFF;
  3096. HAL_GPIO_WritePin(PATH_EN_UL1_GPIO_Port,PATH_EN_UL1_Pin,GPIO_PIN_SET);//CLOCK
  3097. }
  3098. CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
  3099. break;
  3100. case ULO_RF_Path2_ON_OFF :
  3101. bluecell_Currdatastatus.ATT_UL2_PATH = data[MBIC_PAYLOADSTART + 3];
  3102. if(data[MBIC_PAYLOADSTART + 3]==0){
  3103. HAL_GPIO_WritePin(PATH_EN_UL2_GPIO_Port,PATH_EN_UL2_Pin,GPIO_PIN_RESET);//CLOCK
  3104. }
  3105. else{
  3106. bluecell_Prevdatastatus.ATT_UL2_H = 0xFF;
  3107. bluecell_Prevdatastatus.ATT_UL2_L = 0xFF;
  3108. HAL_GPIO_WritePin(PATH_EN_UL2_GPIO_Port,PATH_EN_UL2_Pin,GPIO_PIN_SET);//CLOCK
  3109. }
  3110. CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
  3111. break;
  3112. case ULO_RF_Path3_ON_OFF :
  3113. bluecell_Currdatastatus.ATT_UL3_PATH = data[MBIC_PAYLOADSTART + 3];
  3114. if(data[MBIC_PAYLOADSTART + 3]==0){
  3115. HAL_GPIO_WritePin(PATH_EN_UL3_GPIO_Port,PATH_EN_UL3_Pin,GPIO_PIN_RESET);//CLOCK
  3116. }
  3117. else{
  3118. bluecell_Prevdatastatus.ATT_UL3_H = 0xFF;
  3119. bluecell_Prevdatastatus.ATT_UL3_L =0xFF;
  3120. HAL_GPIO_WritePin(PATH_EN_UL3_GPIO_Port,PATH_EN_UL3_Pin,GPIO_PIN_SET);//CLOCK
  3121. }
  3122. CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
  3123. break;
  3124. case ULO_RF_Path4_ON_OFF :
  3125. bluecell_Currdatastatus.ATT_UL4_PATH = data[MBIC_PAYLOADSTART + 3];
  3126. if(data[MBIC_PAYLOADSTART + 3]==0){
  3127. HAL_GPIO_WritePin(PATH_EN_UL4_GPIO_Port,PATH_EN_UL4_Pin,GPIO_PIN_RESET);//CLOCK
  3128. }
  3129. else{
  3130. bluecell_Prevdatastatus.ATT_UL4_H = 0xFF;
  3131. bluecell_Prevdatastatus.ATT_UL4_L = 0xFF;
  3132. HAL_GPIO_WritePin(PATH_EN_UL4_GPIO_Port,PATH_EN_UL4_Pin,GPIO_PIN_SET);//CLOCK
  3133. }
  3134. CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
  3135. break;
  3136. case ULO_Gain_Atten1 :
  3137. bluecell_Currdatastatus.ATT_UL1_H = data[MBIC_PAYLOADSTART + 3];
  3138. bluecell_Currdatastatus.ATT_UL1_L = data[MBIC_PAYLOADSTART + 4];
  3139. CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
  3140. break;
  3141. case ULO_Gain_Atten2 :
  3142. bluecell_Currdatastatus.ATT_UL2_H = data[MBIC_PAYLOADSTART + 3];
  3143. bluecell_Currdatastatus.ATT_UL2_L = data[MBIC_PAYLOADSTART + 4];
  3144. CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
  3145. break;
  3146. case ULO_Gain_Atten3 :
  3147. bluecell_Currdatastatus.ATT_UL3_H = data[MBIC_PAYLOADSTART + 3];
  3148. bluecell_Currdatastatus.ATT_UL3_L = data[MBIC_PAYLOADSTART + 4];
  3149. CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
  3150. break;
  3151. case ULO_Gain_Atten4 :
  3152. bluecell_Currdatastatus.ATT_UL4_H = data[MBIC_PAYLOADSTART + 3];
  3153. bluecell_Currdatastatus.ATT_UL4_L = data[MBIC_PAYLOADSTART + 4];
  3154. CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
  3155. break;
  3156. case ULO_Gain_Atten_Offset1 :
  3157. bluecell_Currdatastatus.bluecell_User_UL1_H = data[MBIC_PAYLOADSTART + 3];
  3158. bluecell_Currdatastatus.bluecell_User_UL1_L = data[MBIC_PAYLOADSTART + 4];
  3159. CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
  3160. break;
  3161. case ULO_Gain_Atten_Offset2 :
  3162. bluecell_Currdatastatus.bluecell_User_UL2_H = data[MBIC_PAYLOADSTART + 3];
  3163. bluecell_Currdatastatus.bluecell_User_UL2_L = data[MBIC_PAYLOADSTART + 4];
  3164. printf("ATTEN OFFSET START \r\n");
  3165. printf("OFFSET HIGH : %02X \r\n", bluecell_Currdatastatus.bluecell_User_UL2_H);
  3166. printf("OFFSET LOW : %02X \r\n", bluecell_Currdatastatus.bluecell_User_UL2_L);
  3167. CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
  3168. break;
  3169. case ULO_Gain_Atten_Offset3 :
  3170. bluecell_Currdatastatus.bluecell_User_UL3_H = data[MBIC_PAYLOADSTART + 3];
  3171. bluecell_Currdatastatus.bluecell_User_UL3_L = data[MBIC_PAYLOADSTART + 4];
  3172. CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
  3173. break;
  3174. case ULO_Gain_Atten_Offset4 :
  3175. bluecell_Currdatastatus.bluecell_User_UL4_H = data[MBIC_PAYLOADSTART + 3];
  3176. bluecell_Currdatastatus.bluecell_User_UL4_L = data[MBIC_PAYLOADSTART + 4];
  3177. CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
  3178. break;
  3179. case ULO_Level_High_Threshold :
  3180. bluecell_Currdatastatus.ULO_Level_High_Threshold_H = data[MBIC_PAYLOADSTART + 3];
  3181. bluecell_Currdatastatus.ULO_Level_High_Threshold_L = data[MBIC_PAYLOADSTART + 4];
  3182. break;
  3183. case ULO_Level_High_Threshold_default :
  3184. bluecell_Currdatastatus.ULO_Level_High_Threshold_default = data[MBIC_PAYLOADSTART + 3];
  3185. break;
  3186. case ULO_ALC_ON_OFF :
  3187. bluecell_Currdatastatus.ULO_ALC_ON_OFF = data[MBIC_PAYLOADSTART + 3];
  3188. break;
  3189. case ULO_ALC_Threshold :
  3190. bluecell_Currdatastatus.ULO_ALC_Threshold_H = data[MBIC_PAYLOADSTART + 3];
  3191. bluecell_Currdatastatus.ULO_ALC_Threshold_L = data[MBIC_PAYLOADSTART + 4];
  3192. break;
  3193. case ULO_ALC_Threshold_Default :
  3194. bluecell_Currdatastatus.ULO_ALC_Threshold_Default = data[MBIC_PAYLOADSTART + 3];
  3195. break;
  3196. case ULO_Shutdown_ON_OFF :
  3197. bluecell_Currdatastatus.ULO_Shutdown_ON_OFF = data[MBIC_PAYLOADSTART + 3];
  3198. break;
  3199. case ULO_Shutdown_Threshold :
  3200. bluecell_Currdatastatus.ULO_Shutdown_Threshold_H = data[MBIC_PAYLOADSTART + 3];
  3201. bluecell_Currdatastatus.ULO_Shutdown_Threshold_L = data[MBIC_PAYLOADSTART + 4];
  3202. break;
  3203. case ULO_Shutdown_Threshold_Default :
  3204. bluecell_Currdatastatus.ULO_Shutdown_Threshold_Default = data[MBIC_PAYLOADSTART + 3];
  3205. break;
  3206. }
  3207. if(data[MBIC_PAYLOADSTART + data[MBIC_PAYLOADSTART + 2] + 3 ] == 0xE0 && occurlen > 0){
  3208. occurlen -= data[MBIC_PAYLOADSTART + 2] + 3;
  3209. for(int k = 0; k < occurlen; k++){
  3210. data[MBIC_PAYLOADSTART + k] = data[MBIC_PAYLOADSTART + data[MBIC_PAYLOADSTART + 2] + 3 + k];
  3211. }
  3212. goto protocolReplay;
  3213. }
  3214. data[MBIC_CMD_0] = 0x81;//MBIC_ERRRESPONSE;
  3215. Length = MBIC_DataSend(data);
  3216. Bluecell_StructCpy(&DataWrite[0],&bluecell_Currdatastatus.bluecell_header,sizeof(BLUESTATUS_st));
  3217. EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_WINDOW_STATUS_ADDRESDS),&DataWrite[0],sizeof(BLUESTATUS_st));
  3218. }
  3219. else if(cmd == MBIC_Table_Get){
  3220. /*Table Get */
  3221. // data[MBIC_PAYLOADSTART + 1] //Reserve Data
  3222. //protocolTableLoadReplay:
  3223. switch(data[MBIC_PAYLOADSTART + 2]){
  3224. case DLI_P1_Level_Table_Number :
  3225. case DLI_P2_Level_Table_Number :
  3226. case DLI_P3_Level_Table_Number :
  3227. case DLI_P4_Level_Table_Number :
  3228. case ULO_P1_Level_Table_Number :
  3229. case ULO_P2_Level_Table_Number :
  3230. case ULO_P3_Level_Table_Number :
  3231. case ULO_P4_Level_Table_Number :
  3232. case DLI_P1_ATT_Temp_guarantee_Table_Number :
  3233. case DLI_P2_ATT_Temp_guarantee_Table_Number :
  3234. case DLI_P3_ATT_Temp_guarantee_Table_Number :
  3235. case DLI_P4_ATT_Temp_guarantee_Table_Number :
  3236. case ULO_P1_ATT_Temp_guarantee_Table_Number :
  3237. case ULO_P2_ATT_Temp_guarantee_Table_Number :
  3238. case ULO_P3_ATT_Temp_guarantee_Table_Number :
  3239. case ULO_P4_ATT_Temp_guarantee_Table_Number :
  3240. case DLI_P1_ATT_Accuracy_Table_Number :
  3241. case DLI_P2_ATT_Accuracy_Table_Number :
  3242. case DLI_P3_ATT_Accuracy_Table_Number :
  3243. case DLI_P4_ATT_Accuracy_Table_Number :
  3244. case ULO_P1_ATT_Accuracy_Table_Number :
  3245. case ULO_P2_ATT_Accuracy_Table_Number :
  3246. case ULO_P3_ATT_Accuracy_Table_Number :
  3247. case ULO_P4_ATT_Accuracy_Table_Number :
  3248. MBIC_TableLoad(data,data[MBIC_PAYLOADSTART + 2]);
  3249. if(data[MBIC_PAYLOADSTART + MBIC_TableIndex_Number] >= DLI_P1_ATT_Accuracy_Table_Number
  3250. &&data[MBIC_TableIndex_Number] <= ULO_P4_ATT_Accuracy_Table_Number ){
  3251. MBIC_HeaderMergeFunction(data,data[MBIC_PAYLOADSTART + 4] + 5);
  3252. data[MBIC_HEADERCHECKSUM_0] = Chksum_Create(data);
  3253. uint16_t crcret = ((CRC16_Generate(&data[MBIC_PAYLOADSTART], (data[MBIC_PAYLOADSTART + 4] ) + 5) ) );
  3254. printf("\r\n crc ret : %x \r\n",crcret);
  3255. data[MBIC_PAYLOADSTART + (data[MBIC_PAYLOADSTART + MBIC_TableIndex_Length] ) + 5] =(( crcret & 0xFF00)>> 8);
  3256. data[MBIC_PAYLOADSTART + (data[MBIC_PAYLOADSTART + MBIC_TableIndex_Length] ) + 6] = (( crcret & 0x00FF));
  3257. data[MBIC_PAYLOADSTART + (data[MBIC_PAYLOADSTART + MBIC_TableIndex_Length] ) + 7] = 0x03;
  3258. Uart1_Data_Send(data, (data[MBIC_PAYLOADSTART + 4]) + 5 + 22 + 3);
  3259. }else{
  3260. MBIC_HeaderMergeFunction(data,(data[MBIC_PAYLOADSTART + 4] * 2) + 5);
  3261. data[MBIC_HEADERCHECKSUM_0] = Chksum_Create(data);
  3262. uint16_t crcret = ((CRC16_Generate(&data[MBIC_PAYLOADSTART], (data[MBIC_PAYLOADSTART + MBIC_TableIndex_Length] * 2) + 5) ) );
  3263. printf("\r\n crc ret : %x \r\n",crcret);
  3264. data[MBIC_PAYLOADSTART + (data[MBIC_PAYLOADSTART + MBIC_TableIndex_Length] * 2) + 5] =(( crcret & 0xFF00)>> 8);
  3265. data[MBIC_PAYLOADSTART + (data[MBIC_PAYLOADSTART + MBIC_TableIndex_Length] * 2) + 6] = (( crcret & 0x00FF));
  3266. data[MBIC_PAYLOADSTART + (data[MBIC_PAYLOADSTART + MBIC_TableIndex_Length] * 2) + 7] = 0x03;
  3267. printf("==data[MBIC_PAYLOADSTART + MBIC_TableIndex_Length] : %d \r\n",data[MBIC_PAYLOADSTART + MBIC_TableIndex_Length]);
  3268. Uart1_Data_Send(data, (data[MBIC_PAYLOADSTART + MBIC_TableIndex_Length] * 2) + 5 + 22 + 3);
  3269. }
  3270. break;
  3271. }
  3272. // if(/*data[MBIC_PAYLOADSTART + data[MBIC_PAYLOADSTART + 4] + 2 ] == 0xE0 && */occurlen > 0){
  3273. // occurlen -= data[MBIC_PAYLOADSTART + 2] + 5;
  3274. // for(int k = 0; k < occurlen; k++){
  3275. // data[MBIC_PAYLOADSTART + k] = data[MBIC_PAYLOADSTART + data[MBIC_PAYLOADSTART + 2] + 5 + k];
  3276. // }
  3277. // goto protocolTableLoadReplay;
  3278. // }
  3279. }
  3280. else if(cmd == MBIC_Table_Set){
  3281. // protocolTableSaveReplay:
  3282. // data[MBIC_PAYLOADSTART + 1] //Reserve Data
  3283. switch(data[MBIC_PAYLOADSTART + 2]){
  3284. case DLI_P1_Level_Table_Number :
  3285. case DLI_P2_Level_Table_Number :
  3286. case DLI_P3_Level_Table_Number :
  3287. case DLI_P4_Level_Table_Number :
  3288. case ULO_P1_Level_Table_Number :
  3289. case ULO_P2_Level_Table_Number :
  3290. case ULO_P3_Level_Table_Number :
  3291. case ULO_P4_Level_Table_Number :
  3292. case DLI_P1_ATT_Temp_guarantee_Table_Number :
  3293. case DLI_P2_ATT_Temp_guarantee_Table_Number :
  3294. case DLI_P3_ATT_Temp_guarantee_Table_Number :
  3295. case DLI_P4_ATT_Temp_guarantee_Table_Number :
  3296. case ULO_P1_ATT_Temp_guarantee_Table_Number :
  3297. case ULO_P2_ATT_Temp_guarantee_Table_Number :
  3298. case ULO_P3_ATT_Temp_guarantee_Table_Number :
  3299. case ULO_P4_ATT_Temp_guarantee_Table_Number :
  3300. case DLI_P1_ATT_Accuracy_Table_Number :
  3301. case DLI_P2_ATT_Accuracy_Table_Number :
  3302. case DLI_P3_ATT_Accuracy_Table_Number :
  3303. case DLI_P4_ATT_Accuracy_Table_Number :
  3304. case ULO_P1_ATT_Accuracy_Table_Number :
  3305. case ULO_P2_ATT_Accuracy_Table_Number :
  3306. case ULO_P3_ATT_Accuracy_Table_Number :
  3307. case ULO_P4_ATT_Accuracy_Table_Number :
  3308. //Header 문장 + sizeof(ATT_TABLE_st) + EXT 문장 Length 추가
  3309. MBIC_TableSave(data,data[MBIC_PAYLOADSTART + 2]);
  3310. if(data[MBIC_PAYLOADSTART + MBIC_TableIndex_Number] >= DLI_P1_ATT_Accuracy_Table_Number
  3311. &&data[MBIC_TableIndex_Number] <= ULO_P4_ATT_Accuracy_Table_Number ){
  3312. MBIC_HeaderMergeFunction(data,1);
  3313. data[MBIC_HEADERCHECKSUM_0] = Chksum_Create(data);
  3314. // Uart1_Data_Send(data, (data[MBIC_PAYLOADSTART + 4]) + 5 + 22 + 3);
  3315. uint16_t crcret = (CRC16_Generate(&data[MBIC_PAYLOADSTART], 1 ) );
  3316. printf("\r\n crc ret : %x \r\n",crcret);
  3317. data[MBIC_PAYLOADSTART + 1] =(( crcret & 0xFF00)>> 8);
  3318. data[MBIC_PAYLOADSTART + 2] = (( crcret & 0x00FF));
  3319. data[MBIC_PAYLOADSTART + 3] = 0x03;
  3320. Uart1_Data_Send(data, 22 + 3 + 1);
  3321. }
  3322. else{
  3323. MBIC_HeaderMergeFunction(data,1);
  3324. data[MBIC_HEADERCHECKSUM_0] = Chksum_Create(data);
  3325. uint16_t crcret = (CRC16_Generate(&data[MBIC_PAYLOADSTART], 1) ) ;
  3326. printf("\r\n crc ret : %x \r\n",crcret);
  3327. data[MBIC_PAYLOADSTART + 1] =(( crcret & 0xFF00)>> 8);
  3328. data[MBIC_PAYLOADSTART + 2] = (( crcret & 0x00FF));
  3329. data[MBIC_PAYLOADSTART + 3] = 0x03;
  3330. Uart1_Data_Send(data, 22 + 3 + 1);
  3331. // Uart1_Data_Send(data, (data[MBIC_PAYLOADSTART + 4] * 2) + 5 + 22 + 3);
  3332. }
  3333. }
  3334. // if(/*data[MBIC_PAYLOADSTART + data[MBIC_PAYLOADSTART + 4] + 2 ] == 0xE0 && */occurlen > 0){
  3335. // occurlen -= data[MBIC_PAYLOADSTART + 2] + 5;
  3336. // for(int k = 0; k < occurlen; k++){
  3337. // data[MBIC_PAYLOADSTART + k] = data[MBIC_PAYLOADSTART + data[MBIC_PAYLOADSTART + 2] + 5 + k];
  3338. // }
  3339. // goto protocolTableSaveReplay;
  3340. // }
  3341. }
  3342. else{
  3343. // MBIC_Bootloader_FirmwareUpdate();
  3344. /*NOP*/
  3345. printf("DATA ERR\r\n");
  3346. }
  3347. // Uart1_Data_Send(&data[0], data[BLUECELL_LENGTH] + 3);
  3348. return true;
  3349. }
  3350. uint16_t Ascendingcompare(const void *a, const void *b) // 오름차순 비교 함수 구현
  3351. {
  3352. uint16_t num1 = *(int *)a; // void 포인터를 int 포인터로 변환한 뒤 역참조하여 값을 가져옴
  3353. uint16_t num2 = *(int *)b; // void 포인터를 int 포인터로 변환한 뒤 역참조하여 값을 가져옴
  3354. if (num1 < num2) // a가 b보다 작을 때는
  3355. return -1; // -1 반환
  3356. if (num1 > num2) // a가 b보다 클 때는
  3357. return 1; // 1 반환
  3358. return 0; // a와 b가 같을 때는 0 반환
  3359. }
  3360. uint16_t Descendingcompare(const void *a, const void *b) // 내림차순 비교 함수 구현
  3361. {
  3362. uint16_t num1 = *(uint16_t *)a; // void 포인터를 uint16_t 포인터로 변환한 뒤 역참조하여 값을 가져옴
  3363. uint16_t num2 = *(uint16_t *)b; // void 포인터를 uint16_t 포인터로 변환한 뒤 역참조하여 값을 가져옴
  3364. if (num1 > num2) // a가 b보다 클 때는
  3365. return -1; // -1 반환
  3366. if (num1 < num2) // a가 b보다 작을 때는
  3367. return 1; // 1 반환
  3368. return 0; // a와 b가 같을 때는 0 반환
  3369. }
  3370. void DascendigFunc(uint16_t* data,uint32_t size ){
  3371. int temp;
  3372. for(int i = 0 ; i < size - 1 ; i ++) {
  3373. for(int j = i+1 ; j < size ; j ++) {
  3374. if(data[i] < data[j]) {
  3375. temp = data[j];
  3376. data[j] = data[i];
  3377. data[i] = temp;
  3378. }
  3379. }
  3380. }
  3381. }
  3382. uint32_t SumFunc(uint16_t* data,uint16_t size){
  3383. uint32_t ret = 0;
  3384. for (uint16_t i = 0; i < size; i++) // 배열의 요소 개수만큼 반복
  3385. {
  3386. ret += data[i]; // sum과 배열의 요소를 더해서 다시 sum에 저장
  3387. }
  3388. return ret;
  3389. }
  3390. bool ADC_Alarm_DL_High_Set[DET_Alarm_DL_Index_MAX] = {false,} ;
  3391. bool ADC_Alarm_DL_Low_Set[DET_Alarm_DL_Index_MAX] = {false,} ;
  3392. bool ADC_Alarm_UL_Set[DET_Alarm_UL_Index_MAX] = {false,} ;
  3393. bool ADC_Alarm_DL_Shutdown_Set[DET_Alarm_DL_Shutdown_Index_MAX] = {false,} ;
  3394. bool ADC_Alarm_UL_Shutdown_Set[DET_Alarm_UL_Shutdown_Index_MAX] = {false,} ;
  3395. void DET_LevelAlarmCheck(){
  3396. //int16_t DL[DET_Alarm_DL_Index_MAX] = {0,};
  3397. //int16_t UL[DET_Alarm_UL_Index_MAX] = {0,};
  3398. int16_t LimitData_UL_High = 0;
  3399. int16_t LimitData_DL_High = 0;
  3400. int16_t LimitData_DL_Low = 0;
  3401. int16_t LimitData_DL_Shutdown = 0;
  3402. int16_t LimitData_UL_Shutdown = 0;
  3403. double ret = 0;
  3404. int8_t Res_DL_dBm[DET_Alarm_DL_Index_MAX] = {0,};
  3405. int8_t Res_UL_dBm[DET_Alarm_UL_Index_MAX] = {0,};
  3406. LimitData_UL_High = ConvertTo2byte(bluecell_Currdatastatus.ULO_Level_High_Threshold_H,bluecell_Currdatastatus.ULO_Level_High_Threshold_L) / 10;
  3407. LimitData_DL_High = ConvertTo2byte(bluecell_Currdatastatus.DLI_Level_High_Threshold_H,bluecell_Currdatastatus.DLI_Level_High_Threshold_L)/ 10;
  3408. LimitData_DL_Low = ConvertTo2byte(bluecell_Currdatastatus.DLI_Level_Low_Threshold_H,bluecell_Currdatastatus.DLI_Level_Low_Threshold_L)/ 10;
  3409. LimitData_DL_Shutdown = ConvertTo2byte(bluecell_Currdatastatus.DLI_Shutdown_Threshold_H,bluecell_Currdatastatus.DLI_Shutdown_Threshold_L)/ 10;
  3410. LimitData_UL_Shutdown = ConvertTo2byte(bluecell_Currdatastatus.ULO_Shutdown_Threshold_H,bluecell_Currdatastatus.ULO_Shutdown_Threshold_L)/ 10;
  3411. /*DL[DET_Alarm_DL1_Index] = ConvertTo2byte(bluecell_Currdatastatus.DLI_P1_Level1_H,bluecell_Currdatastatus.DLI_P1_Level1_L);
  3412. DL[DET_Alarm_DL2_Index] = ConvertTo2byte(bluecell_Currdatastatus.DLI_P2_Level2_H,bluecell_Currdatastatus.DLI_P2_Level2_L);
  3413. DL[DET_Alarm_DL3_Index] = ConvertTo2byte(bluecell_Currdatastatus.DLI_P3_Level3_H,bluecell_Currdatastatus.DLI_P3_Level3_L);
  3414. DL[DET_Alarm_DL4_Index] = ConvertTo2byte(bluecell_Currdatastatus.DLI_P4_Level4_H,bluecell_Currdatastatus.DLI_P4_Level4_L);
  3415. UL[DET_Alarm_UL1_Index] = ConvertTo2byte(bluecell_Currdatastatus.ULO_P1_Level1_H,bluecell_Currdatastatus.ULO_P1_Level1_L);
  3416. UL[DET_Alarm_UL2_Index] = ConvertTo2byte(bluecell_Currdatastatus.ULO_P2_Level2_H,bluecell_Currdatastatus.ULO_P2_Level2_L);
  3417. UL[DET_Alarm_UL3_Index] = ConvertTo2byte(bluecell_Currdatastatus.ULO_P3_Level3_H,bluecell_Currdatastatus.ULO_P3_Level3_L);
  3418. UL[DET_Alarm_UL4_Index] = ConvertTo2byte(bluecell_Currdatastatus.ULO_P4_Level4_H,bluecell_Currdatastatus.ULO_P4_Level4_L);*/
  3419. ret = bluecell_Currdatastatus.DLI_P1_Level1_H << 8;
  3420. ret += bluecell_Currdatastatus.DLI_P1_Level1_L;
  3421. ret *= 0.001;
  3422. Res_DL_dBm[DET_Alarm_DL1_Index]
  3423. = (int8_t)Bluecell_TestPro(AGC_AutoControl_ADC_Compare(ret,&Det_DL1.Table_Det5_dBm_H,sizeof(DET_TABLEDL_st)));
  3424. ret = bluecell_Currdatastatus.DLI_P2_Level2_H << 8;
  3425. ret += bluecell_Currdatastatus.DLI_P2_Level2_L;
  3426. ret *= 0.001;
  3427. Res_DL_dBm[DET_Alarm_DL2_Index]
  3428. = (int8_t)Bluecell_TestPro(AGC_AutoControl_ADC_Compare(ret,&Det_DL2.Table_Det5_dBm_H,sizeof(DET_TABLEDL_st)));
  3429. ret = bluecell_Currdatastatus.DLI_P3_Level3_H << 8;
  3430. ret += bluecell_Currdatastatus.DLI_P3_Level3_L;
  3431. ret *= 0.001;
  3432. Res_DL_dBm[DET_Alarm_DL3_Index]
  3433. = (int8_t)Bluecell_TestPro(AGC_AutoControl_ADC_Compare(ret,&Det_DL3.Table_Det5_dBm_H,sizeof(DET_TABLEDL_st)));
  3434. ret = bluecell_Currdatastatus.DLI_P4_Level4_H << 8;
  3435. ret += bluecell_Currdatastatus.DLI_P4_Level4_L;
  3436. ret *= 0.001;
  3437. Res_DL_dBm[DET_Alarm_DL4_Index]
  3438. = (int8_t)Bluecell_TestPro(AGC_AutoControl_ADC_Compare(ret,&Det_DL4.Table_Det5_dBm_H,sizeof(DET_TABLEDL_st)));
  3439. ret = bluecell_Currdatastatus.ULO_P1_Level1_H << 8;
  3440. ret += bluecell_Currdatastatus.ULO_P1_Level1_L;
  3441. ret *= 0.001;
  3442. Res_UL_dBm[DET_Alarm_UL1_Index]
  3443. = (int8_t)Bluecell_TestPro(AutoControl_ADC_Compare(ret,&Det_UL1.Table_Det_15_dBm_H,sizeof(DET_TABLEUL_st)));
  3444. // printf("LimitData_UL_High : %d \r\n",LimitData_UL_High);
  3445. // printf("DET_High : %d \r\n",Res_UL_dBm[DET_Alarm_UL1_Index] );
  3446. ret = bluecell_Currdatastatus.ULO_P2_Level2_H << 8;
  3447. ret += bluecell_Currdatastatus.ULO_P2_Level2_L;
  3448. ret *= 0.001;
  3449. Res_UL_dBm[DET_Alarm_UL2_Index]
  3450. = (int8_t)Bluecell_TestPro(AutoControl_ADC_Compare(ret,&Det_UL2.Table_Det_15_dBm_H,sizeof(DET_TABLEUL_st)));
  3451. ret = bluecell_Currdatastatus.ULO_P3_Level3_H << 8;
  3452. ret += bluecell_Currdatastatus.ULO_P3_Level3_L;
  3453. ret *= 0.001;
  3454. Res_UL_dBm[DET_Alarm_UL3_Index]
  3455. = (int8_t)Bluecell_TestPro(AutoControl_ADC_Compare(ret,&Det_UL3.Table_Det_15_dBm_H,sizeof(DET_TABLEUL_st)));
  3456. ret = bluecell_Currdatastatus.ULO_P4_Level4_H << 8;
  3457. ret += bluecell_Currdatastatus.ULO_P4_Level4_L;
  3458. ret *= 0.001;
  3459. Res_UL_dBm[DET_Alarm_UL4_Index]
  3460. = (int8_t)Bluecell_TestPro(AutoControl_ADC_Compare(ret,&Det_UL4.Table_Det_15_dBm_H,sizeof(DET_TABLEUL_st)));
  3461. // printf("LimitData_DL_High : %d \r\n",LimitData_DL_High);
  3462. // printf("LimitData_DL_Low : %d \r\n",LimitData_DL_Low);
  3463. /*
  3464. DL Level Alarm Check Part
  3465. */
  3466. for(int i = 0 ; i < DET_Alarm_DL_Index_MAX; i++){
  3467. if(LimitData_DL_High < Res_DL_dBm[DET_Alarm_DL1_Index + i]){
  3468. ADC_Alarm_DL_High_Set[DET_Alarm_DL1_Index + i] = true;
  3469. // printf("ADC_Alarm_DL_High_Set %d ,Value : %d\r\n",DET_Alarm_UL1_Index + i,ADC_Alarm_DL_High_Set[DET_Alarm_UL1_Index + i]);
  3470. }
  3471. else{
  3472. ADC_Alarm_DL_High_Set[DET_Alarm_DL1_Index + i] = false;
  3473. // printf("ADC_Alarm_DL_High_Set %d ,Value : %d\r\n",DET_Alarm_UL1_Index + i,ADC_Alarm_DL_High_Set[DET_Alarm_UL1_Index + i]);
  3474. }
  3475. // printf("LimitData_DL_High: %d Res_DL_dBm [%d] : %d ,Value : %d\r\n",
  3476. // LimitData_DL_Low,
  3477. // DET_Alarm_UL1_Index + i,
  3478. // Res_DL_dBm[DET_Alarm_DL1_Index + i],
  3479. // ADC_Alarm_DL_High_Set[LimitData_DL_High + i]);
  3480. }
  3481. /*
  3482. DL Shutdown Alarm Check Part
  3483. */
  3484. for(int i = 0 ; i < DET_Alarm_DL_Shutdown_Index_MAX; i++){
  3485. if(LimitData_DL_Shutdown < Res_DL_dBm[DET_Alarm_DL1_Shutdown_Index + i])
  3486. ADC_Alarm_DL_Shutdown_Set[DET_Alarm_DL1_Shutdown_Index + i] = true;
  3487. else
  3488. ADC_Alarm_DL_Shutdown_Set[DET_Alarm_DL1_Shutdown_Index + i] = false;
  3489. }
  3490. for(int i = 0 ; i < DET_Alarm_DL_Index_MAX; i++){
  3491. if(LimitData_DL_Low > Res_DL_dBm[DET_Alarm_DL1_Index + i]){
  3492. ADC_Alarm_DL_Low_Set[DET_Alarm_DL1_Index + i] = true;
  3493. }
  3494. else{
  3495. ADC_Alarm_DL_Low_Set[DET_Alarm_DL1_Index + i] = false;
  3496. }
  3497. // printf("LimitData_DL_Low: %d Res_DL_dBm [%d] : %d ,Value : %d\r\n",LimitData_DL_Low,DET_Alarm_UL1_Index + i,Res_DL_dBm[DET_Alarm_DL1_Index + i],ADC_Alarm_DL_Low_Set[LimitData_DL_High + i]);
  3498. }
  3499. /*
  3500. UL Shutdown Alarm Check Part
  3501. */
  3502. for(int i = 0 ; i < DET_Alarm_UL_Shutdown_Index_MAX; i++){
  3503. if(LimitData_UL_Shutdown < Res_UL_dBm[DET_Alarm_UL1_Shutdown_Index + i]){
  3504. ADC_Alarm_UL_Shutdown_Set[DET_Alarm_UL1_Shutdown_Index + i] = true;
  3505. }
  3506. else{
  3507. ADC_Alarm_UL_Shutdown_Set[DET_Alarm_UL1_Shutdown_Index + i] = false;
  3508. }
  3509. }
  3510. /*
  3511. UL Level Alarm Check Part
  3512. */
  3513. for(int i = 0 ; i < DET_Alarm_UL_Index_MAX; i++){
  3514. if(LimitData_UL_High < Res_UL_dBm[DET_Alarm_UL1_Index + i]){
  3515. ADC_Alarm_UL_Set[DET_Alarm_UL1_Index + i] = true;
  3516. // printf("ADC_Alarm_UL_Set %d ,Value : %d\r\n",DET_Alarm_UL1_Index + i,ADC_Alarm_UL_Set[DET_Alarm_UL1_Index + i]);
  3517. }
  3518. else{
  3519. ADC_Alarm_UL_Set[DET_Alarm_UL1_Index + i] = false;
  3520. // printf("ADC_Alarm_UL_Set %d ,Value : %d\r\n",DET_Alarm_UL1_Index + i,ADC_Alarm_UL_Set[DET_Alarm_UL1_Index + i] );
  3521. }
  3522. }
  3523. }
  3524. void Temp_AttenCheck(int8_t Temp){
  3525. int8_t CurrentTemp = 0;
  3526. }
  3527. void ADC_Check(void){
  3528. //static uint8_t Cnt = 0;
  3529. double ADC1DoubleRet[4];
  3530. double ADC3DoubleRet[5];
  3531. uint32_t ADC1_Average_value[ADC1_CNT];
  3532. uint32_t ADC3_Average_value[ADC3_CNT];
  3533. // double ret = 0;
  3534. uint16_t MIN_ADC[ADC3_CNT] = {0,};
  3535. uint16_t cnt[ADC3_CNT] = {0,};
  3536. double temp;
  3537. // if(AdcTimerCnt > 10){
  3538. // 정렬할 배열, 요소 개수, 요소 크기, 비교 함수를 넣어줌
  3539. if(adc3cnt >= ADC_AVERAGECNT){
  3540. // printf("%f\r\n",ADC3value[4]*3.3/4095);
  3541. #if 1 // PYJ.2020.05.25_BEGIN --
  3542. for(int i = 0; i < ADC3_CNT; i++){
  3543. DascendigFunc(&ADC3valuearray[i][0],ADC_AVERAGECNT);
  3544. MIN_ADC[i] = ADC3valuearray[i][0] - 12;
  3545. for(int a = 0; a < ADC_AVERAGECNT; a++){
  3546. // printf("ADC3valuearray[%d][%d] : %d \r\n",i,a,ADC3valuearray[i][a]);
  3547. if(ADC3valuearray[i][a] < MIN_ADC[i]){
  3548. cnt[i] = a;
  3549. // printf("cnt[i] %d \r\n",cnt[i]);
  3550. break;
  3551. }else{
  3552. cnt[i] = ADC_AVERAGECNT;
  3553. }
  3554. }
  3555. ADC3_Average_value[i] = SumFunc(&ADC3valuearray[i][0],cnt[i]);
  3556. // printf("ADC3_Average_value[%d] : %d / %f \r\n",i,ADC3_Average_value[i],ADC3_Average_value[i]/cnt[i] * Volt_Calc_val);
  3557. }
  3558. for(int i = 0; i < ADC3_CNT; i++){
  3559. ADC3DoubleRet[i] = (((ADC3_Average_value[i] / cnt[i]) * 3.3 /4095) * 1000);
  3560. ADC3Ret[i] = ADC3DoubleRet[i];
  3561. ADC3_Average_value[i] = 0;
  3562. }
  3563. bluecell_Currdatastatus.DLI_P1_Level1_H
  3564. = ((ADC3Ret[1] & 0xFF00) >> 8);
  3565. bluecell_Currdatastatus.DLI_P1_Level1_L
  3566. = ((ADC3Ret[1] & 0x00FF));
  3567. bluecell_Currdatastatus.DLI_P2_Level2_H
  3568. = ((ADC3Ret[2] & 0xFF00) >> 8);
  3569. bluecell_Currdatastatus.DLI_P2_Level2_L
  3570. = ((ADC3Ret[2] & 0x00FF) );
  3571. bluecell_Currdatastatus.DLI_P3_Level3_H
  3572. = ((ADC3Ret[3] & 0xFF00) >> 8);
  3573. bluecell_Currdatastatus.DLI_P3_Level3_L
  3574. = ((ADC3Ret[3] & 0x00FF) );
  3575. bluecell_Currdatastatus.DLI_P4_Level4_H
  3576. = ((ADC3Ret[4] & 0xFF00) >> 8);
  3577. bluecell_Currdatastatus.DLI_P4_Level4_L
  3578. = ((ADC3Ret[4] & 0x00FF) );
  3579. bluecell_Currdatastatus.ULO_P4_Level4_H
  3580. = ((ADC3Ret[0] & 0xFF00) >> 8);
  3581. bluecell_Currdatastatus.ULO_P4_Level4_L
  3582. = ((ADC3Ret[0] & 0x00FF) );
  3583. #endif // PYJ.2020.05.25_END --
  3584. #if 0 // PYJ.2020.04.26_BEGIN --
  3585. double ret = 0;
  3586. ret = (ADC3Ret[0]) * 0.001;
  3587. printf("ADC3Ret[0] : %d UL4 : %f\r\n",ADC3Ret[0],ret);
  3588. ret = (ADC3Ret[1]) * 0.001;
  3589. printf("ADC3Ret[1] : %d DL1 : %f\r\n",ADC3Ret[1],ret);
  3590. ret = (ADC3Ret[2]) * 0.001;
  3591. printf("ADC3Ret[2] : %d DL2 : %f\r\n",ADC3Ret[2],ret);
  3592. ret = (ADC3Ret[3]) * 0.001;
  3593. printf("ADC3Ret[3] : %d DL3 : %f\r\n",ADC3Ret[3],ret);
  3594. ret = (ADC3Ret[4]) * 0.001;
  3595. printf("ADC3Ret[4] : %d DL4 : %f\r\n",ADC3Ret[4],ret);
  3596. #endif // PYJ.2020.04.26_END --
  3597. adc3cnt = 0;
  3598. }
  3599. if(adc1cnt >= ADC_AVERAGECNT){
  3600. for(int i = 0; i < ADC1_CNT; i++){
  3601. DascendigFunc(&ADC1valuearray[i][0],ADC_AVERAGECNT);
  3602. MIN_ADC[i] = ADC1valuearray[i][0] - 12;
  3603. for(int a = 0; a < ADC_AVERAGECNT; a++){
  3604. // printf("ADC1valuearray[%d][%d] : %d \r\n",i,a,ADC1valuearray[i][a]);
  3605. if(ADC1valuearray[i][a] < MIN_ADC[i]){
  3606. cnt[i] = a;
  3607. // printf("cnt[i] %d \r\n",cnt[i]);
  3608. break;
  3609. }else{
  3610. cnt[i] = ADC_AVERAGECNT;
  3611. }
  3612. }
  3613. ADC1_Average_value[i] = SumFunc(&ADC1valuearray[i][0],cnt[i]);
  3614. // printf("ADC1_Average_value[%d] : %d / %f \r\n",i,ADC1_Average_value[i],ADC1_Average_value[i]/cnt[i] * Volt_Calc_val);
  3615. }
  3616. for(int i = 0; i < 4; i++){
  3617. ADC1DoubleRet[i] = (((ADC1_Average_value[i] / cnt[i]) * 3.3 /4095) * 1000);
  3618. ADC1Ret[i] = ADC1DoubleRet[i];
  3619. // ADC1Ret[i] = ADC1_Average_value[i] / cnt[i];
  3620. ADC1_Average_value[i] = 0;
  3621. }
  3622. bluecell_Currdatastatus.ULO_P1_Level1_H
  3623. = ((ADC1Ret[0] & 0xFF00) >> 8);
  3624. bluecell_Currdatastatus.ULO_P1_Level1_L
  3625. = ((ADC1Ret[0] & 0x00FF) );
  3626. bluecell_Currdatastatus.ULO_P2_Level2_H
  3627. = ((ADC1Ret[1] & 0xFF00) >> 8);
  3628. bluecell_Currdatastatus.ULO_P2_Level2_L
  3629. = ((ADC1Ret[1] & 0x00FF) );
  3630. bluecell_Currdatastatus.ULO_P3_Level3_H
  3631. = ((ADC1Ret[2] & 0xFF00) >> 8);
  3632. bluecell_Currdatastatus.ULO_P3_Level3_L
  3633. = ((ADC1Ret[2] & 0x00FF) );
  3634. // printf("ADC1_Average_value[%d] : %d / %f \r\n",i,ADC1_Average_value[i],ADC1_Average_value[i]/cnt[i] * Volt_Calc_val);
  3635. #if 0 // PYJ.2020.05.14_BEGIN --
  3636. bluecell_Currdatastatus.DET_TEMP_H
  3637. =((ADC1Ret[3] & 0xFF00) >> 8);
  3638. bluecell_Currdatastatus.DET_TEMP_L
  3639. =((ADC1Ret[3] & 0x00FF) );
  3640. #else
  3641. /* *
  3642. 온도 소수점 제거
  3643. */
  3644. temp = (ADC1Ret[3] * 0.001);
  3645. // printf("DetEnd");
  3646. // printf("temp %f \r\n",temp );
  3647. bluecell_Currdatastatus.DET_TEMP = (uint8_t)( (temp - 0.5) * 100);
  3648. // printf("DET_TEMP %d \r\n",bluecell_Currdatastatus.DET_TEMP );
  3649. bluecell_Currdatastatus.DET_TEMP += bluecell_Currdatastatus.bluecell_User_TEMP_OFFSET;
  3650. // printf("DET_TEMP + bluecell_Currdatastatus.bluecell_User_TEMP_OFFSET : %d \r\n",bluecell_Currdatastatus.DET_TEMP );
  3651. // temp= ((( - 0.5 ) * 100) + );
  3652. #endif // PYJ.2020.05.14_END --
  3653. // ret = ((ADC1Ret[0]) * Volt_Calc_val);
  3654. // printf("UL1 : %f\r\n",ret);
  3655. // ret = ((ADC1Ret[1]) * Volt_Calc_val);
  3656. // printf("UL2 : %f\r\n",ret);
  3657. // ret = ((ADC1Ret[2]) * Volt_Calc_val);
  3658. //// printf("UL3 : %f\r\n",ret);
  3659. // bluecell_Currdatastatus.DET_TEMP_H
  3660. // =((ADC1Ret[3] & 0xFF00) >> 8);
  3661. // bluecell_Currdatastatus.DET_TEMP_L
  3662. // =((ADC1Ret[3] & 0x00FF) );
  3663. // printf("bluecell_Currdatastatus.DET_TEMP %d \r\n",bluecell_Currdatastatus.DET_TEMP );
  3664. // printf(" ADC1Ret[3] %x \r\n", ADC1Ret[3] );
  3665. // ret = ((ADC1Ret[3]) * Volt_Calc_val);
  3666. // printf("Temp : %f\r\n",ret);
  3667. adc1cnt = 0;
  3668. }
  3669. /*
  3670. After ADC calculation is completed, start Det Alarm check.
  3671. */
  3672. DET_LevelAlarmCheck();/*DL UL Alarm Check*/
  3673. }
  3674. #if 1 // PYJ.2020.05.12_BEGIN --
  3675. /*One Point round*/
  3676. double Bluecell_round( double value )
  3677. {
  3678. unsigned short data = value * 1000;
  3679. unsigned short temp = 0;
  3680. double ret = 0;
  3681. // printf("1: %d\r\n",data);
  3682. temp = data % 10;
  3683. if(temp >= 5){
  3684. data = data - temp + 10;
  3685. }else{
  3686. data = data - temp;
  3687. }
  3688. // printf("2: %d\r\n",data);
  3689. temp = (data % 100) / 10;
  3690. // printf("3: %d\r\n",temp);
  3691. if(temp >= 5){
  3692. data = data - (temp * 10)+ 100;
  3693. }else{
  3694. data = data - (temp * 10);
  3695. }
  3696. // printf("4: %d\r\n",data);
  3697. ret = data;
  3698. // printf("ret : %f\r\n",ret / 1000);
  3699. return ret / 1000;
  3700. }
  3701. /*One Point round*/
  3702. double Bluecell_TestPro(double value )
  3703. {
  3704. int16_t temp = (value * 10);
  3705. double temp_float = 0;
  3706. bool minus_set = 0;
  3707. // printf("0. temp : %d\r\n",temp);
  3708. temp = temp % 10;
  3709. // printf("1. temp : %d\r\n",temp);
  3710. if((int16_t)temp == 0)
  3711. return value;
  3712. if(temp < 0){
  3713. temp *= -1;//Convert Minus To plus
  3714. // printf("MInus set : 2. temp : %d\r\n",temp);
  3715. minus_set = true;
  3716. }
  3717. temp_float = temp * 0.1;
  3718. // printf("3. temp_float: %f temp : %f\r\n",temp_float,temp);
  3719. // printf("4. value : %f temp : %d temp_float : %f \r\n",value,temp,temp_float);
  3720. if(temp >= 5){
  3721. if(minus_set == true){
  3722. value -= 1;
  3723. value += temp_float;
  3724. }else{
  3725. value += 1;
  3726. value -= temp_float;
  3727. }
  3728. // printf("temp_float : %f \r\n",temp_float);
  3729. }
  3730. else{
  3731. #if 1 // PYJ.2020.05.25_BEGIN --
  3732. if(minus_set == true){
  3733. value += temp_float;
  3734. }
  3735. else{
  3736. value -= temp_float;
  3737. }
  3738. #else
  3739. value -= temp_float;
  3740. #endif // PYJ.2020.05.25_END --
  3741. // printf("temp_float : %f \r\n",temp_float);
  3742. }
  3743. // printf("temp : %f \r\n",value);
  3744. return (value);
  3745. }
  3746. #endif // PYJ.2020.05.12_END --
  3747. #if 0 // PYJ.2020.05.12_BEGIN --
  3748. double AutoControl_ADC_Compare(double CurrentAdc,uint8_t* CompareAdc,uint8_t size){
  3749. double ret = 0xFF,CurrRet = 0,TableAdc,TableAdcret;
  3750. uint8_t LastIndex = 0;
  3751. double Max_ADC = 0,Min_ADC = 0;
  3752. double step = 0;
  3753. double dot = 0,tempret = 0xFF;
  3754. for(int i =0; i < size / 2; i++){
  3755. TableAdc = CompareAdc[i * 2] << 8;
  3756. TableAdc += CompareAdc[i * 2 + 1];
  3757. TableAdc /= 1000;
  3758. // printf("TableAdc[%d] : %f \r\n",i,TableAdc);
  3759. CurrRet = TableAdc - CurrentAdc;
  3760. if(CurrRet < 0){ // plus 공식
  3761. CurrRet = (CurrRet * -2) + CurrRet;
  3762. }
  3763. if(ret > CurrRet){
  3764. ret = CurrRet;
  3765. TableAdcret = TableAdc;
  3766. LastIndex = i;
  3767. }
  3768. }
  3769. /*MIN*/
  3770. TableAdc = CompareAdc[LastIndex * 2] << 8;
  3771. TableAdc += CompareAdc[LastIndex * 2 + 1];
  3772. TableAdc /= 1000;
  3773. Min_ADC = TableAdc;
  3774. /*MAX*/
  3775. TableAdc = CompareAdc[LastIndex * 2 - 2 ] << 8;
  3776. TableAdc += CompareAdc[LastIndex * 2 - 1];
  3777. TableAdc /= 1000;
  3778. Max_ADC = TableAdc;
  3779. step = ((Max_ADC - Min_ADC) / 10);
  3780. // Min_ADC = Bluecell_round(Min_ADC);
  3781. // CurrentAdc = Bluecell_round(CurrentAdc);
  3782. // printf("1:STEP : %f , %f > %f > %f \r\n",step,Max_ADC,CurrentAdc,Min_ADC);
  3783. for(double d = 0; d < 1; d += 0.1){
  3784. CurrRet = CurrentAdc - Min_ADC;
  3785. if(tempret >= CurrRet & CurrRet > 0){
  3786. // printf("(%f >= %f)\r\n",tempret,CurrRet);
  3787. tempret = CurrRet;
  3788. // printf("2:STEP : %f , %f > %f > %f \r\n",step,Max_ADC,CurrentAdc,Min_ADC);
  3789. Min_ADC += step;
  3790. dot = d;
  3791. }
  3792. }
  3793. // printf("dot : %f \r\n",dot);
  3794. dot = AutoControl_Save[LastIndex] - dot;
  3795. // printf("AutoControl_Save[LastIndex]:%d + dot:%f : %f \r\n",AutoControl_Save[LastIndex] + dot);
  3796. // printf(" %f > %f > %f \r\n",Max_ADC,CurrentAdc,Min_ADC);
  3797. return dot;
  3798. }
  3799. #else
  3800. #if 0 // PYJ.2020.05.15_BEGIN --
  3801. int8_t AutoControl_ADC_Compare(double CurrentAdc,uint8_t* CompareAdc,uint8_t size){
  3802. double ret = 0xFF,CurrRet = 0,TableAdc;
  3803. uint8_t LastIndex = 0;
  3804. for(int i =0; i < size / 2; i++){
  3805. TableAdc = CompareAdc[i * 2] << 8;
  3806. TableAdc += CompareAdc[i * 2 + 1];
  3807. TableAdc /= 1000;
  3808. // printf("TableAdc[%d] : %f \r\n",i,TableAdc);
  3809. CurrRet = TableAdc - CurrentAdc;
  3810. if(CurrRet < 0){
  3811. CurrRet = (CurrRet * -2) + CurrRet;
  3812. }
  3813. if(ret > CurrRet){
  3814. ret = CurrRet;
  3815. LastIndex = i;
  3816. }
  3817. }
  3818. return AutoControl_Save[LastIndex];
  3819. }
  3820. #else
  3821. double AutoControl_ADC_Compare(double CurrentAdc,uint8_t* CompareAdc,uint8_t size){
  3822. double ret = 0xFF,CurrRet = 0,TableAdc,NextTableAdc;
  3823. double Vitual_array[10] = {0,};
  3824. double step = 0;
  3825. uint8_t LastIndex = 0;
  3826. uint8_t dot = 0;
  3827. // printf("size: %d \r\n",size);
  3828. for(int i =0; i < size / 2; i++){
  3829. TableAdc = CompareAdc[i * 2] << 8;
  3830. TableAdc += CompareAdc[i * 2 + 1];
  3831. if(TableAdc == 0)
  3832. continue;
  3833. TableAdc /= 1000;
  3834. NextTableAdc = CompareAdc[i * 2 + 2] << 8;
  3835. NextTableAdc += CompareAdc[i * 2 + 3];
  3836. NextTableAdc /= 1000;
  3837. // printf("TableAdc[%d] : %f \r\n",i,TableAdc);
  3838. // CurrRet = TableAdc - CurrentAdc;
  3839. step = (TableAdc - NextTableAdc) / 10;
  3840. for(int a = 0; a < 10; a++){
  3841. Vitual_array[a] = TableAdc - (step * a);
  3842. CurrRet = (Vitual_array[a]) - (CurrentAdc);
  3843. // printf("Vitual_array[%d] : %f \r\n",a,Vitual_array[a]);
  3844. if(CurrRet < 0){
  3845. CurrRet = (CurrRet * -2) + CurrRet;
  3846. }
  3847. if(ret > CurrRet){
  3848. ret = CurrRet;
  3849. LastIndex = i;
  3850. dot = a;
  3851. }
  3852. }
  3853. }
  3854. TableAdc = CompareAdc[0] << 8;
  3855. TableAdc += CompareAdc[1];
  3856. TableAdc /= 1000;
  3857. if(CurrentAdc < TableAdc){
  3858. // printf("LastIndex : %d / dot : %d TableAdc : %f \r\n",LastIndex,dot,(AutoControl_Save[LastIndex] - (dot * 0.1)));
  3859. return (AutoControl_Save[LastIndex] - (dot * 0.1));
  3860. }
  3861. else{
  3862. // printf("CurrentAdc : %f TableAdc : %f \r\n",CurrentAdc,TableAdc);
  3863. return (AutoControl_Save[0]);
  3864. }
  3865. }
  3866. double AGC_AutoControl_ADC_Compare(double CurrentAdc,uint8_t* CompareAdc,uint8_t size){
  3867. double ret = 0xFF,CurrRet = 0,TableAdc,NextTableAdc;
  3868. double Vitual_array[10] = {0,};
  3869. double step = 0;
  3870. uint8_t LastIndex = 0;
  3871. uint8_t dot = 0;
  3872. for(int i =0; i < size / 2; i++){
  3873. TableAdc = CompareAdc[i * 2] << 8;
  3874. TableAdc += CompareAdc[i * 2 + 1];
  3875. TableAdc /= 1000;
  3876. NextTableAdc = CompareAdc[i * 2 + 2] << 8;
  3877. NextTableAdc += CompareAdc[i * 2 + 3];
  3878. NextTableAdc /= 1000;
  3879. // printf("TableAdc[%d] : %f \r\n",i,TableAdc);
  3880. // CurrRet = TableAdc - CurrentAdc;
  3881. step = (TableAdc - NextTableAdc) / 10;
  3882. for(int a = 0; a < 10; a++){
  3883. Vitual_array[a] = TableAdc - (step * a);
  3884. CurrRet = (Vitual_array[a]) - (CurrentAdc);
  3885. // printf("Vitual_array[%d] : %f \r\n",a,Vitual_array[a]);
  3886. if(CurrRet < 0){
  3887. CurrRet = (CurrRet * -2) + CurrRet;
  3888. }
  3889. if(ret > CurrRet){
  3890. ret = CurrRet;
  3891. LastIndex = i;
  3892. dot = a;
  3893. }
  3894. }
  3895. }
  3896. TableAdc = CompareAdc[0] << 8;
  3897. TableAdc += CompareAdc[1];
  3898. TableAdc /= 1000;
  3899. if(CurrentAdc < TableAdc){
  3900. // printf("LastIndex : %d / dot : %d TableAdc : %f \r\n",LastIndex,dot,(AutoControl_Save[LastIndex] - (dot * 0.1)));
  3901. return (AutoControl_Save[LastIndex] - (dot * 0.1));
  3902. }
  3903. else{
  3904. // printf("CurrentAdc : %f TableAdc : %f \r\n",CurrentAdc,TableAdc);
  3905. // for(int a = 0; a < sizeof(AGC_dBm_t); a++)
  3906. // printf("AutoControl_Save[%d] : %d \r\n",a,AutoControl_Save[a]);
  3907. return (AutoControl_Save[0]);
  3908. }
  3909. }
  3910. #endif // PYJ.2020.05.15_END --
  3911. #endif // PYJ.2020.05.12_END --
  3912. #if 0 // PYJ.2020.05.21_BEGIN --
  3913. int32_t MinusConvert(uint8_t Temp_h, int32_t Value){
  3914. int32_t ret;
  3915. if((((bluecell_Currdatastatus.ATT_ALC1_MAX_H << 8) & 0xFF00) & 0xF000) == 0xF000){
  3916. Value = 0x0000FFFF - (Value & 0x0000FFFF);
  3917. Value += 0x01;
  3918. Value *= -1;
  3919. }
  3920. Value /= 100;
  3921. ret = Value;
  3922. return ret;
  3923. }
  3924. #endif // PYJ.2020.05.21_END --
  3925. uint8_t ALC_AlarmSet[ALC_Alarm_UL_Index_MAX] = {0,};
  3926. int16_t ALC_Calc(uint8_t num,double CurrAtten ,int8_t threshold,double CurrDet){
  3927. double ret = 0;
  3928. // CurrAtten *= -1;
  3929. if(CurrDet == threshold){
  3930. return 0;
  3931. }
  3932. // ret = CurrDet - threshold;
  3933. #if 0 // PYJ.2020.05.25_BEGIN --
  3934. if(CurrAtten >= 20){
  3935. if(CurrDet - threshold < 0){
  3936. if(CurrAtten + (CurrDet - threshold) > 0){
  3937. // ret = CurrAtten + (CurrDet - threshold);
  3938. printf("5. %f : %f %d\r\n",ret,CurrDet,threshold);
  3939. }
  3940. else{
  3941. ret = CurrAtten * -1;
  3942. printf("6. %f : %f %d\r\n",ret,CurrDet,threshold);
  3943. }
  3944. }else{
  3945. ALC_AlarmSet[num] = true;
  3946. }
  3947. printf("4. %f : %f %d\r\n",ret,CurrDet,threshold);
  3948. return ret;
  3949. }
  3950. #endif // PYJ.2020.05.25_END --
  3951. #if 0 // PYJ.2020.06.20_BEGIN --
  3952. if(CurrDet < threshold){
  3953. ret = CurrDet - threshold;
  3954. printf("1. %f : %f - %d\r\n",ret,CurrDet,threshold);
  3955. // if(((ret * 10) % 10 ) != 0)
  3956. ret = Bluecell_TestPro(ret);
  3957. printf("ret = %f \r\n",ret);
  3958. }
  3959. else if(CurrDet > threshold){
  3960. ret = CurrDet - threshold;
  3961. printf("2. %f : %f %d\r\n",ret,CurrDet,threshold);
  3962. // if(((ret * 10) % 10 ) != 0)
  3963. ret = Bluecell_TestPro(ret);
  3964. }
  3965. printf("Result : ret = %f \r\n",ret);
  3966. #if 0 // PYJ.2020.06.20_BEGIN --
  3967. if(CurrAtten + ret >= 0){
  3968. ret = CurrAtten * -1;
  3969. printf("3. ret0 : %f \r\n",ret);
  3970. }else{
  3971. ALC_AlarmSet[num] = false;
  3972. }
  3973. #endif // PYJ.2020.06.20_END --
  3974. ret *= -1;
  3975. if(CurrAtten < 0){
  3976. if(CurrAtten < ret){
  3977. ret += CurrAtten;
  3978. }
  3979. }
  3980. #endif // PYJ.2020.06.20_END --
  3981. if(threshold < CurrDet){
  3982. ret = CurrDet - threshold ;
  3983. printf("1. %f : %f - %d\r\n",ret,CurrDet,threshold);
  3984. printf("2. %f : %f - %d\r\n",ret,CurrDet,threshold);
  3985. ret = Bluecell_TestPro(ret +( CurrAtten * -1));
  3986. ret *= -1;
  3987. }
  3988. else if(threshold -2 > CurrDet){
  3989. if(CurrAtten < 0){
  3990. ret = (threshold - 2) - CurrDet ;// -27 ///// - 29
  3991. printf("%f = %d - %f\r\n",ret,(threshold - 2),CurrDet);
  3992. printf("CurrAtten : %f\r\n",CurrAtten);
  3993. ret = Bluecell_TestPro(ret);
  3994. printf("3.ret : %f\r\n",ret);
  3995. ret += CurrAtten;
  3996. // ret *= -1;
  3997. printf("4.ret : %f\r\n",ret);
  3998. }
  3999. }
  4000. if(ret < -20){
  4001. printf("5. ret1 : %f \r\n",ret);
  4002. ret = -20;
  4003. ALC_AlarmSet[num] = true;
  4004. }else{
  4005. if(ret > 0){
  4006. printf("6. ret1 : %f \r\n",ret);
  4007. ret = 0;
  4008. }
  4009. ALC_AlarmSet[num] = false;
  4010. }
  4011. printf("ret7 : %f \r\n",ret);
  4012. return ret * 10;
  4013. }
  4014. #define UL_DL_DATASEND_MULTIPLE 10
  4015. void ALC_Function(){ //DL
  4016. //double Volt_Calc_val = 3.3 / 4095;
  4017. //double tempret = 0;
  4018. double ret = 0;
  4019. // double CurrnALCValue = 0;
  4020. double CurrentATTENVALUE = 0;
  4021. uint8_t tempcurratten = 0;
  4022. // int32_t CurrnALC_MAX_SettingValue = 0;
  4023. // int32_t CurrnALC_MIN_SettingValue = 0;
  4024. // int32_t ALC_Result = 0;
  4025. int16_t Limitdata = 0;
  4026. double ResdBm = 0;
  4027. int16_t ResultData = 0;
  4028. int16_t IwillGiveAtten = 0;
  4029. uint8_t tempadc[256];
  4030. ALC_dBm_t ALC_Table_ref = {
  4031. -15 , -16 , -17 , -18 , -19 ,
  4032. -20 , -21 , -22 , -23 , -24 , -25 , -26 , -27 ,
  4033. -28 , -29 , -30 , -31 , -32 , -33 , -34 , -35 ,
  4034. -36 , -37 , -38 , -39 , -40 , -41 , -42 , -43 ,
  4035. -44 , -45 , -46 , -47 , -48 , -49 , -50 , -51 ,
  4036. -52 , -53 , -54 , -55 , -56 , -57 , -58 , -59 ,
  4037. -60 ,
  4038. };
  4039. Bluecell_StructCpy(&AutoControl_Save[0],&ALC_Table_ref.DET_UL_0,sizeof(ALC_dBm_t));
  4040. Bluecell_StructCpy(&tempadc[0],&Det_UL1.Table_Det_15_dBm_H,sizeof(DET_TABLEUL_st));
  4041. if(ALCTimerCnt > 400){
  4042. if(bluecell_Currdatastatus.ULO_ALC_ON_OFF == true){
  4043. #if 1 // PYJ.2020.06.20_BEGIN --
  4044. /***************************************************************************************************************/
  4045. /* ALC 1 */
  4046. /***************************************************************************************************************/
  4047. //ret 현재 Voltage 값 출력
  4048. //ret 에 따른 현재 DBM 구현
  4049. ret = bluecell_Currdatastatus.ULO_P1_Level1_H << 8;
  4050. ret += bluecell_Currdatastatus.ULO_P1_Level1_L;
  4051. ret *= 0.001;
  4052. Limitdata = (( bluecell_Currdatastatus.ULO_ALC_Threshold_H << 8) & 0xFF00) ;
  4053. Limitdata += bluecell_Currdatastatus.ULO_ALC_Threshold_L ;
  4054. Limitdata /= 10;
  4055. ResdBm = AutoControl_ADC_Compare(ret,&Det_UL1.Table_Det_15_dBm_H,Det_UL1.Table_Length * 2);
  4056. ResultData = ResdBm;
  4057. #if 0 // PYJ.2020.06.20_BEGIN --
  4058. printf("==================START================\r\n");
  4059. printf("Current UL ADC VALUE : %f \r\n",ret);
  4060. printf("ResdBm : UL1 : %f \r\n",ResdBm);
  4061. printf("ResdBm : %x ///// bluecell_Currdatastatus.ULO_Level1_H : %x \r\n",ResultData,bluecell_Currdatastatus.ULO_Level1_H);
  4062. printf("ResdBm : %x ///// bluecell_Currdatastatus.ULO_Level1_L : %x \r\n",ResultData,bluecell_Currdatastatus.ULO_Level1_L);
  4063. printf("==================END================\r\n");
  4064. #endif // PYJ.2020.06.20_END --
  4065. CurrentATTENVALUE = PE43711_Double(bluecell_Currdatastatus.ATT_UL1_H,bluecell_Currdatastatus.ATT_UL1_L);
  4066. bluecell_Currdatastatus.ULO_Level1_H = ((int16_t)ResultData & 0xFF00) >> 8;
  4067. bluecell_Currdatastatus.ULO_Level1_L = ((int16_t)ResultData & 0x00FF);
  4068. // tempret = (((bluecell_Currdatastatus.ATT_UL1_H << 8) & 0xFF00) | (bluecell_Currdatastatus.ATT_UL1_L & 0x00FF)) / 10;
  4069. //if(ResdBm < Limitdata && CurrentATTENVALUE != 0){
  4070. // printf("db %f \r\n",ResdBm);
  4071. // printf("==================START================\r\n");
  4072. // printf("Current UL ADC VALUE : %f \r\n",ret);
  4073. // printf("ResdBm : UL1 : %f \r\n",ResdBm);
  4074. //CurrnALC_MIN_SettingValue = MinusConvert(bluecell_Currdatastatus.ULO_P1_Level1_H,CurrnALC_MIN_SettingValue);
  4075. // Limitdata = (( bluecell_Currdatastatus.ATT_UL1_H << 8) & 0xFF00) ;
  4076. // Limitdata += bluecell_Currdatastatus.ATT_UL1_L ;
  4077. //
  4078. // Limitdata /= 10;
  4079. // printf("CurrentATTENVALUE : %f\r\n",CurrentATTENVALUE);
  4080. bluecell_Currdatastatus.ULO_Level1_H = ((int16_t)ResultData & 0xFF00) >> 8;
  4081. bluecell_Currdatastatus.ULO_Level1_L = ((int16_t)ResultData & 0x00FF);
  4082. IwillGiveAtten = ALC_Calc(ALC_Alarm_UL1_Index,CurrentATTENVALUE,Limitdata,ResdBm);
  4083. printf("CurrentATTENVALUE : %f I WILL GIVE ATTEN : %d \r\n",CurrentATTENVALUE,IwillGiveAtten);
  4084. printf("ADC : %f Current : %f Threas : %d : I WILL GIVE ATTEN : %f \r\n",ret,ResdBm , Limitdata,IwillGiveAtten);
  4085. // printf("CurrentATTENVALUE : %f \r\n",CurrentATTENVALUE);
  4086. // if(CurrentATTENVALUE < 20 && IwillGiveAtten != 0){
  4087. // IwillGiveAtten = CurrentATTENVALUE + IwillGiveAtten ;
  4088. // }
  4089. // printf("ADC : %f Current : %f Threas : %d : I WILL GIVE ATTEN : %d \r\n",ret,ResdBm , Limitdata,IwillGiveAtten);
  4090. // printf("CurrentATTENVALUE : %f I WILL GIVE ATTEN : %d \r\n",CurrentATTENVALUE,IwillGiveAtten);
  4091. // printf("CurrentATTENVALUE : %f I WILL GIVE ATTEN : %d \r\n",CurrentATTENVALUE,IwillGiveAtten);
  4092. // if(IwillGiveAtten < 0)
  4093. // printf("CurrentATTENVALUE %f \r\n",CurrentATTENVALUE);
  4094. if( (IwillGiveAtten > 0) || (CurrentATTENVALUE >= (IwillGiveAtten))){
  4095. tempcurratten = CurrentATTENVALUE * 10;
  4096. bluecell_Currdatastatus.MBIC_ULO_ALC_Atten1_H = (((uint16_t)((tempcurratten + IwillGiveAtten)) & 0xFF00) >> 8);
  4097. bluecell_Currdatastatus.MBIC_ULO_ALC_Atten1_L = ((uint16_t)(tempcurratten + IwillGiveAtten)) & 0x00FF;
  4098. CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
  4099. }
  4100. CurrentATTENVALUE = PE43711_Double(bluecell_Currdatastatus.MBIC_ULO_ALC_Atten1_H,bluecell_Currdatastatus.MBIC_ULO_ALC_Atten1_L);
  4101. // printf("CurrentATTENVALUE : %f\r\n",CurrentATTENVALUE );
  4102. // printf("==================END================\r\n");
  4103. #endif // PYJ.2020.05.23_END --
  4104. // HAL_Delay(1000);
  4105. //}
  4106. #if 1 // PYJ.2020.05.22_BEGIN --
  4107. /***************************************************************************************************************/
  4108. /* ALC 2 */
  4109. /***************************************************************************************************************/
  4110. //ret 현재 Voltage 값 출력
  4111. //ret 에 따른 현재 DBM 구현
  4112. ret = bluecell_Currdatastatus.ULO_P2_Level2_H << 8;
  4113. ret += bluecell_Currdatastatus.ULO_P2_Level2_L;
  4114. ret *= 0.001;
  4115. Limitdata = (( bluecell_Currdatastatus.ULO_ALC_Threshold_H << 8) & 0xFF00) ;
  4116. Limitdata += bluecell_Currdatastatus.ULO_ALC_Threshold_L ;
  4117. Limitdata /= 10;
  4118. printf("Det_UL2.Table_Length: %d \r\n",Det_UL2.Table_Length);
  4119. ResdBm = AutoControl_ADC_Compare(ret,&Det_UL2.Table_Det_15_dBm_H,Det_UL2.Table_Length* 2);
  4120. ResultData = ResdBm;
  4121. CurrentATTENVALUE = PE43711_Double(bluecell_Currdatastatus.MBIC_ULO_ALC_Atten2_H,bluecell_Currdatastatus.MBIC_ULO_ALC_Atten2_L);
  4122. bluecell_Currdatastatus.ULO_Level2_H = ((int16_t)ResultData & 0xFF00) >> 8;
  4123. bluecell_Currdatastatus.ULO_Level2_L = ((int16_t)ResultData & 0x00FF);
  4124. IwillGiveAtten = ALC_Calc(ALC_Alarm_UL2_Index,CurrentATTENVALUE,Limitdata,ResdBm);
  4125. printf("CurrentATTENVALUE : %f I WILL GIVE ATTEN : %d \r\n",CurrentATTENVALUE,IwillGiveAtten);
  4126. printf("ADC : %f Current : %f Threas : %d : I WILL GIVE ATTEN : %d \r\n",ret,ResdBm , Limitdata,IwillGiveAtten);
  4127. if( (IwillGiveAtten > 0) || (CurrentATTENVALUE >= (IwillGiveAtten))){
  4128. tempcurratten = CurrentATTENVALUE * 10;
  4129. bluecell_Currdatastatus.MBIC_ULO_ALC_Atten2_H = (((uint16_t)((tempcurratten + IwillGiveAtten)) & 0xFF00) >> 8);
  4130. bluecell_Currdatastatus.MBIC_ULO_ALC_Atten2_L = ((uint16_t)(tempcurratten + IwillGiveAtten)) & 0x00FF;
  4131. CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
  4132. }
  4133. CurrentATTENVALUE = PE43711_Double(bluecell_Currdatastatus.MBIC_ULO_ALC_Atten2_H,bluecell_Currdatastatus.MBIC_ULO_ALC_Atten2_L);
  4134. #if 0 // PYJ.2020.06.20_BEGIN --
  4135. printf("==================START================\r\n");
  4136. printf("Current UL ADC VALUE : %f \r\n",ret);
  4137. printf("ResdBm : UL2 : %f \r\n",ResdBm);
  4138. printf("ResdBm : %x ///// bluecell_Currdatastatus.ULO_Level2_H : %x \r\n",ResultData,bluecell_Currdatastatus.ULO_Level2_H);
  4139. printf("ResdBm : %x ///// bluecell_Currdatastatus.ULO_Level2_L : %x \r\n",ResultData,bluecell_Currdatastatus.ULO_Level2_L);
  4140. printf("==================END================\r\n");
  4141. printf("bluecell_Currdatastatus.MBIC_ULO_ALC_Atten2_H : %x \r\n",bluecell_Currdatastatus.MBIC_ULO_ALC_Atten2_H);
  4142. printf("bluecell_Currdatastatus.MBIC_ULO_ALC_Atten2_L : %x \r\n",bluecell_Currdatastatus.MBIC_ULO_ALC_Atten2_L);
  4143. #endif // PYJ.2020.06.20_END --
  4144. #if 1 // PYJ.2020.06.20_BEGIN --
  4145. #else
  4146. printf("bluecell_Currdatastatus.ATT_UL2_H : %x \r\n",bluecell_Currdatastatus.MBIC_ULO_ALC_Atten2_H);
  4147. printf("bluecell_Currdatastatus.ATT_UL2_L : %x \r\n",bluecell_Currdatastatus.MBIC_ULO_ALC_Atten2_L);
  4148. #endif // PYJ.2020.06.20_END --
  4149. /***************************************************************************************************************/
  4150. /* ALC 3 */
  4151. /***************************************************************************************************************/
  4152. //ret 현재 Voltage 값 출력
  4153. //ret 에 따른 현재 DBM 구현
  4154. ret = bluecell_Currdatastatus.ULO_P3_Level3_H << 8;
  4155. ret += bluecell_Currdatastatus.ULO_P3_Level3_L;
  4156. ret *= 0.001;
  4157. Limitdata = (( bluecell_Currdatastatus.ULO_ALC_Threshold_H << 8) & 0xFF00) ;
  4158. Limitdata += bluecell_Currdatastatus.ULO_ALC_Threshold_L ;
  4159. Limitdata /= 10;
  4160. bluecell_Currdatastatus.ULO_Level3_H = ((int16_t)ResdBm & 0xFF00) >> 8;
  4161. bluecell_Currdatastatus.ULO_Level3_L = ((int16_t)ResdBm & 0x00FF);
  4162. // printf("==================START================\r\n");
  4163. ResdBm = AutoControl_ADC_Compare(ret,&Det_UL3.Table_Det_15_dBm_H,Det_UL3.Table_Length* 2);
  4164. ResultData = ResdBm;
  4165. CurrentATTENVALUE = PE43711_Double(bluecell_Currdatastatus.MBIC_ULO_ALC_Atten3_H,bluecell_Currdatastatus.MBIC_ULO_ALC_Atten3_L);
  4166. bluecell_Currdatastatus.ULO_Level3_H = ((int16_t)ResultData & 0xFF00) >> 8;
  4167. bluecell_Currdatastatus.ULO_Level3_L = ((int16_t)ResultData & 0x00FF);
  4168. IwillGiveAtten = ALC_Calc(ALC_Alarm_UL3_Index,CurrentATTENVALUE,Limitdata,ResdBm);
  4169. // printf("ADC : %f Current : %f Threas : %d : I WILL GIVE ATTEN : %d \r\n",ret,ResdBm , Limitdata,IwillGiveAtten);
  4170. if( (IwillGiveAtten > 0) || (CurrentATTENVALUE >= (IwillGiveAtten * -1))){
  4171. tempcurratten = CurrentATTENVALUE * 10;
  4172. bluecell_Currdatastatus.MBIC_ULO_ALC_Atten3_H = (((tempcurratten + IwillGiveAtten) & 0xFF00) >> 8);
  4173. bluecell_Currdatastatus.MBIC_ULO_ALC_Atten3_L = (tempcurratten + IwillGiveAtten) & 0x00FF;
  4174. CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
  4175. }
  4176. CurrentATTENVALUE = PE43711_Double(bluecell_Currdatastatus.MBIC_ULO_ALC_Atten3_H,bluecell_Currdatastatus.MBIC_ULO_ALC_Atten3_L);
  4177. // printf("CurrentATTENVALUE : %f\r\n",CurrentATTENVALUE );
  4178. // printf("==================END================\r\n");
  4179. /***************************************************************************************************************/
  4180. /* ALC 4 */
  4181. /***************************************************************************************************************/
  4182. //ret 현재 Voltage 값 출력
  4183. //ret 에 따른 현재 DBM 구현
  4184. ret = bluecell_Currdatastatus.ULO_P4_Level4_H << 8;
  4185. ret += bluecell_Currdatastatus.ULO_P4_Level4_L;
  4186. ret *= 0.001;
  4187. Limitdata = (( bluecell_Currdatastatus.ULO_ALC_Threshold_H << 8) & 0xFF00) ;
  4188. Limitdata += bluecell_Currdatastatus.ULO_ALC_Threshold_L ;
  4189. Limitdata /= 10;
  4190. ResdBm = AutoControl_ADC_Compare(ret,&Det_UL4.Table_Det_15_dBm_H,Det_UL4.Table_Length* 2);
  4191. ResultData = ResdBm;
  4192. #if 0 // PYJ.2020.06.20_BEGIN --
  4193. printf("==================START================\r\n");
  4194. printf("Current UL ADC VALUE : %f \r\n",ret);
  4195. printf("ResdBm : UL4 : %f \r\n",ResdBm);
  4196. printf("ResultData : %x ///// bluecell_Currdatastatus.ULO_Level4_H : %x \r\n",ResultData,bluecell_Currdatastatus.ULO_Level4_H);
  4197. printf("ResultData : %x ///// bluecell_Currdatastatus.ULO_Level4_L : %x \r\n",ResultData,bluecell_Currdatastatus.ULO_Level4_L);
  4198. printf("==================END================\r\n");
  4199. #endif // PYJ.2020.06.20_END --
  4200. CurrentATTENVALUE = PE43711_Double(bluecell_Currdatastatus.MBIC_ULO_ALC_Atten4_H,bluecell_Currdatastatus.MBIC_ULO_ALC_Atten4_L);
  4201. bluecell_Currdatastatus.ULO_Level4_H = ((int16_t)ResultData & 0xFF00) >> 8;
  4202. bluecell_Currdatastatus.ULO_Level4_L = ((int16_t)ResultData & 0x00FF);
  4203. IwillGiveAtten = ALC_Calc(ALC_Alarm_UL4_Index,CurrentATTENVALUE,Limitdata,ResdBm);
  4204. if( (IwillGiveAtten > 0) || (CurrentATTENVALUE >= (IwillGiveAtten * -1))){
  4205. tempcurratten = CurrentATTENVALUE * 10;
  4206. bluecell_Currdatastatus.MBIC_ULO_ALC_Atten4_H = (((tempcurratten + IwillGiveAtten) & 0xFF00) >> 8);
  4207. bluecell_Currdatastatus.MBIC_ULO_ALC_Atten4_L = (tempcurratten + IwillGiveAtten) & 0x00FF;
  4208. CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
  4209. }
  4210. CurrentATTENVALUE = PE43711_Double(bluecell_Currdatastatus.MBIC_ULO_ALC_Atten4_H,bluecell_Currdatastatus.MBIC_ULO_ALC_Atten4_L);
  4211. #endif // PYJ.2020.05.22_END --
  4212. ALCTimerCnt = 0;
  4213. }else{
  4214. ret = bluecell_Currdatastatus.ULO_P1_Level1_H << 8;
  4215. ret += bluecell_Currdatastatus.ULO_P1_Level1_L;
  4216. ret *= 0.001;
  4217. ResdBm = AutoControl_ADC_Compare(ret,&Det_UL1.Table_Det_15_dBm_H,Det_UL1.Table_Length* 2);
  4218. ResultData = ResdBm;
  4219. // if(ResultData == 0){
  4220. // ResultData =
  4221. // }
  4222. bluecell_Currdatastatus.ULO_Level1_H = ((int16_t)ResultData & 0xFF00) >> 8;
  4223. bluecell_Currdatastatus.ULO_Level1_L = ((int16_t)ResultData & 0x00FF);
  4224. #if 0 // PYJ.2020.06.20_BEGIN --
  4225. printf("============ALC_OFF======START================\r\n");
  4226. printf("Current UL ADC VALUE : %f \r\n",ret);
  4227. printf("ResdBm : UL1 : %f \r\n",ResdBm);
  4228. printf("ResdBm : %x ///// bluecell_Currdatastatus.ULO_Level1_H : %x \r\n",ResultData,bluecell_Currdatastatus.ULO_Level1_H);
  4229. printf("ResdBm : %x ///// bluecell_Currdatastatus.ULO_Level1_L : %x \r\n",ResultData,bluecell_Currdatastatus.ULO_Level1_L);
  4230. printf("==================END================\r\n");
  4231. #endif // PYJ.2020.06.20_END --
  4232. ret = bluecell_Currdatastatus.ULO_P2_Level2_H << 8;
  4233. ret += bluecell_Currdatastatus.ULO_P2_Level2_L;
  4234. ret *= 0.001;
  4235. ResdBm = AutoControl_ADC_Compare(ret,&Det_UL2.Table_Det_15_dBm_H,Det_UL2.Table_Length * 2);
  4236. ResultData = ResdBm;
  4237. CurrentATTENVALUE = PE43711_Double(bluecell_Currdatastatus.MBIC_ULO_ALC_Atten2_H,bluecell_Currdatastatus.MBIC_ULO_ALC_Atten2_L);
  4238. // printf("CurrentATTENVALUE : %f I WILL GIVE ATTEN : %d \r\n",CurrentATTENVALUE,IwillGiveAtten);
  4239. bluecell_Currdatastatus.ULO_Level2_H = ((int16_t)ResultData & 0xFF00) >> 8;
  4240. bluecell_Currdatastatus.ULO_Level2_L = ((int16_t)ResultData & 0x00FF);
  4241. printf("=========ALC_OFF=========START================\r\n");
  4242. printf("Current UL ADC VALUE : %f \r\n",ret);
  4243. printf("ResdBm : UL2 : %f \r\n",ResdBm);
  4244. printf("ResdBm : %x ///// bluecell_Currdatastatus.ULO_Level2_H : %x \r\n",ResultData,bluecell_Currdatastatus.ULO_Level2_H);
  4245. printf("ResdBm : %x ///// bluecell_Currdatastatus.ULO_Level2_L : %x \r\n",ResultData,bluecell_Currdatastatus.ULO_Level2_L);
  4246. printf("==================END================\r\n");
  4247. #if 1 // PYJ.2020.06.20_BEGIN --
  4248. ret = bluecell_Currdatastatus.ULO_P3_Level3_H << 8;
  4249. ret += bluecell_Currdatastatus.ULO_P3_Level3_L;
  4250. ret *= 0.001;
  4251. ResdBm = AutoControl_ADC_Compare(ret,&Det_UL3.Table_Det_15_dBm_H,Det_UL3.Table_Length* 2);
  4252. ResultData = ResdBm;;
  4253. bluecell_Currdatastatus.MBIC_ULO_ALC_Atten3_H = ((int16_t)ResultData & 0xFF00) >> 8;
  4254. bluecell_Currdatastatus.MBIC_ULO_ALC_Atten3_L = ((int16_t)ResultData & 0x00FF);
  4255. ret = bluecell_Currdatastatus.ULO_P4_Level4_H << 8;
  4256. ret += bluecell_Currdatastatus.ULO_P4_Level4_L;
  4257. ret *= 0.001;
  4258. ResdBm = AutoControl_ADC_Compare(ret,&Det_UL4.Table_Det_15_dBm_H,Det_UL4.Table_Length* 2);
  4259. ResultData = ResdBm;;
  4260. bluecell_Currdatastatus.MBIC_ULO_ALC_Atten4_H = ((int16_t)ResultData & 0xFF00) >> 8;
  4261. bluecell_Currdatastatus.MBIC_ULO_ALC_Atten4_L = ((int16_t)ResultData & 0x00FF);
  4262. #endif // PYJ.2020.06.20_END --
  4263. }
  4264. }
  4265. }
  4266. //-15 ~ -5
  4267. int8_t AGC_Calc(int8_t threshold,int8_t CurrDet){
  4268. int8_t Attenret = 0;
  4269. if(threshold > CurrDet)
  4270. return Attenret;
  4271. if(threshold != CurrDet){
  4272. Attenret = (threshold - CurrDet) * -1;
  4273. }
  4274. // printf("Attenret : %d \r\n",Attenret);
  4275. return Attenret;
  4276. }
  4277. bool AGC_AlarmSet[AGC_Alarm_DL_Index_MAX] = {0,};
  4278. //bool AGC_AlarmTimerSet[AGC_Alarm_DL_Index_MAX] = {false,};
  4279. void AGC_Alarm_Check(uint8_t Path_Index,double AGC_Det,uint8_t* AGC_Table,uint16_t CurrAtten){
  4280. double TableAdc = 0;
  4281. double PrevTableAdc = 0;
  4282. double step = 0;
  4283. TableAdc = AGC_Table[0] << 8;
  4284. TableAdc += AGC_Table[1];
  4285. TableAdc /= 1000;
  4286. PrevTableAdc = AGC_Table[2] << 8;
  4287. PrevTableAdc += AGC_Table[3];
  4288. PrevTableAdc /= 1000;
  4289. step = TableAdc - PrevTableAdc;
  4290. if(AGC_Det > TableAdc + step){/*Alarm Enable*/
  4291. AGC_AlarmSet[Path_Index] = true; /*Alarm Check val*/
  4292. // AGC_AlarmTimerSet[Path_Index] = false;/*Alarm Timer Setting Val*/
  4293. // AGCAlarmTimerCnt[Path_Index] = 0;/*Alarm Time Cnt Val*/
  4294. // printf("AGC ALARM ON %d \r\n",Path_Index + 1);
  4295. }else{/*Alarm Disable*/
  4296. // if(AGC_AlarmSet[Path_Index] == true && CurrAtten <= 18){/*Alarm Disalbe Condition*/
  4297. // AGC_AlarmTimerSet[Path_Index] = true;
  4298. // }else{/*Alarm Disalbe Fail*/
  4299. // AGC_AlarmTimerSet[Path_Index] = false;
  4300. // AGCAlarmTimerCnt[Path_Index] = 0;
  4301. // }
  4302. // if(AGCAlarmTimerCnt[Path_Index] > 3000){
  4303. AGC_AlarmSet[Path_Index] = false;
  4304. // }
  4305. }
  4306. }
  4307. void AGC_Function(){//DL
  4308. double ret = 0;
  4309. int8_t ResdBm = 0;
  4310. int16_t Levelret = 0;
  4311. int i = 0;
  4312. int16_t Limitdata = 0;
  4313. uint16_t IwillgiveAtten = 0;
  4314. int16_t ResultData = 0;
  4315. if(AGCTimerCnt > 100){
  4316. if(bluecell_Currdatastatus.DLI_AGC_ON_OFF == true){
  4317. #if 1 // PYJ.2020.05.25_BEGIN --
  4318. ret = bluecell_Currdatastatus.DLI_P1_Level1_H << 8;
  4319. ret += bluecell_Currdatastatus.DLI_P1_Level1_L;
  4320. ret *= 0.001;
  4321. ResdBm = (int8_t)Bluecell_TestPro(AGC_AutoControl_ADC_Compare(ret,&Det_DL1.Table_Det5_dBm_H,sizeof(DET_TABLEDL_st)));
  4322. bluecell_Currdatastatus.DLI_Level1_H = ((int16_t)ResdBm & 0xFF00) >> 8;
  4323. bluecell_Currdatastatus.DLI_Level1_L = ((int16_t)ResdBm & 0x00FF);
  4324. //ret 현재 Voltage 값 출력
  4325. //ret 에 따른 현재 DBM 구현
  4326. for(i = 0; i < sizeof(AGC_dBm_t); i++){
  4327. if(AGC_Table_ref[i] == ResdBm)
  4328. break;
  4329. }
  4330. Limitdata = (( bluecell_Currdatastatus.DLI_AGC_Threshold_H << 8) & 0xFF00) ;
  4331. Limitdata += bluecell_Currdatastatus.DLI_AGC_Threshold_L ;
  4332. Limitdata /= 10;
  4333. // printf("==================================\r\n");
  4334. // printf("Current DL1 ADC VALUE : %f \r\n",ret);
  4335. // printf("ResdBm : DL1 : %d \r\n",ResdBm);
  4336. // printf("AGC_Table_ref[%d] : %d\r\n",i,AGC_Table_ref[i]);
  4337. // printf("I WILL GIVE YOU ATTEN : %d\r\n",AGC_Calc(Limitdata,ResdBm));
  4338. // printf("AGC : %d\r\n",Limitdata);
  4339. // HAL_Delay(1000);
  4340. IwillgiveAtten = AGC_Calc(Limitdata,ResdBm);
  4341. AGC_Alarm_Check(AGC_Alarm_DL1_Index,ret,&Det_DL1.Table_Det5_dBm_H,IwillgiveAtten);
  4342. bluecell_Currdatastatus.ATT_DL1_H = (((IwillgiveAtten * 10) & 0xFF00) >> 8) ;
  4343. bluecell_Currdatastatus.ATT_DL1_L = (((IwillgiveAtten * 10) & 0x00FF));
  4344. CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
  4345. ret = bluecell_Currdatastatus.DLI_P2_Level2_H << 8;
  4346. ret += bluecell_Currdatastatus.DLI_P2_Level2_L;
  4347. ret *= 0.001;
  4348. ResdBm = (int8_t)Bluecell_TestPro(AGC_AutoControl_ADC_Compare(ret,&Det_DL2.Table_Det5_dBm_H,sizeof(DET_TABLEDL_st)));
  4349. bluecell_Currdatastatus.DLI_Level2_H = ((int16_t)ResdBm & 0xFF00) >> 8;
  4350. bluecell_Currdatastatus.DLI_Level2_L = ((int16_t)ResdBm & 0x00FF);
  4351. for(i = 0; i < sizeof(AGC_dBm_t); i++){
  4352. if(AGC_Table_ref[i] == ResdBm)
  4353. break;
  4354. }
  4355. Limitdata = (( bluecell_Currdatastatus.DLI_AGC_Threshold_H << 8) & 0xFF00) ;
  4356. Limitdata += bluecell_Currdatastatus.DLI_AGC_Threshold_L ;
  4357. Limitdata /= 10;
  4358. // printf("==================================\r\n");
  4359. // printf("Current DL2 ADC VALUE : %f \r\n",ret);
  4360. // printf("ResdBm : DL2 : %d \r\n",ResdBm);
  4361. // printf("AGC_Table_ref[%d] : %d\r\n",i,AGC_Table_ref[i]);
  4362. // printf("I WILL GIVE YOU ATTEN : %d\r\n",AGC_Calc(Limitdata,ResdBm));
  4363. // printf("AGC : %d\r\n",Limitdata);
  4364. // HAL_Delay(1000);
  4365. IwillgiveAtten = AGC_Calc(Limitdata,ResdBm);
  4366. AGC_Alarm_Check(AGC_Alarm_DL2_Index,ret,&Det_DL2.Table_Det5_dBm_H,IwillgiveAtten);
  4367. bluecell_Currdatastatus.ATT_DL2_H = (((IwillgiveAtten * 10) & 0xFF00) >> 8) ;
  4368. bluecell_Currdatastatus.ATT_DL2_L = (((IwillgiveAtten * 10) & 0x00FF));
  4369. CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
  4370. ret = bluecell_Currdatastatus.DLI_P3_Level3_H << 8;
  4371. ret += bluecell_Currdatastatus.DLI_P3_Level3_L;
  4372. ret *= 0.001;
  4373. ResdBm = (int8_t)Bluecell_TestPro(AGC_AutoControl_ADC_Compare(ret,&Det_DL3.Table_Det5_dBm_H,sizeof(DET_TABLEDL_st)));
  4374. bluecell_Currdatastatus.DLI_Level3_H = ((int16_t)ResdBm & 0xFF00) >> 8;
  4375. bluecell_Currdatastatus.DLI_Level3_L = ((int16_t)ResdBm & 0x00FF);
  4376. for(i = 0; i < sizeof(AGC_dBm_t); i++){
  4377. if(AGC_Table_ref[i] == ResdBm)
  4378. break;
  4379. }
  4380. Limitdata = (( bluecell_Currdatastatus.DLI_AGC_Threshold_H << 8) & 0xFF00) ;
  4381. Limitdata += bluecell_Currdatastatus.DLI_AGC_Threshold_L ;
  4382. Limitdata /= 10;
  4383. // printf("==================================\r\n");
  4384. // printf("Current DL3 ADC VALUE : %f \r\n",ret);
  4385. // printf("ResdBm : DL3 : %d \r\n",ResdBm);
  4386. // printf("AGC_Table_ref[%d] : %d\r\n",i,AGC_Table_ref[i]);
  4387. // printf("I WILL GIVE YOU ATTEN : %d\r\n",AGC_Calc(Limitdata,ResdBm));
  4388. // printf("AGC : %d\r\n",Limitdata);
  4389. // HAL_Delay(1000);
  4390. IwillgiveAtten = AGC_Calc(Limitdata,ResdBm);
  4391. AGC_Alarm_Check(AGC_Alarm_DL3_Index,ret,&Det_DL3.Table_Det5_dBm_H,IwillgiveAtten);
  4392. bluecell_Currdatastatus.ATT_DL3_H = (((IwillgiveAtten * 10) & 0xFF00) >> 8) ;
  4393. bluecell_Currdatastatus.ATT_DL3_L = (((IwillgiveAtten * 10) & 0x00FF));
  4394. CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
  4395. #endif // PYJ.2020.05.25_END --
  4396. ret = bluecell_Currdatastatus.DLI_P4_Level4_H << 8;
  4397. ret += bluecell_Currdatastatus.DLI_P4_Level4_L;
  4398. ret *= 0.001;
  4399. ResdBm = (int8_t)Bluecell_TestPro(AGC_AutoControl_ADC_Compare(ret,&Det_DL4.Table_Det5_dBm_H,sizeof(DET_TABLEDL_st)));
  4400. bluecell_Currdatastatus.DLI_Level4_H = ((int16_t)ResdBm & 0xFF00) >> 8;
  4401. bluecell_Currdatastatus.DLI_Level4_L = ((int16_t)ResdBm & 0x00FF);
  4402. for(i = 0; i < sizeof(AGC_dBm_t); i++){
  4403. if(AGC_Table_ref[i] == ResdBm)
  4404. break;
  4405. }
  4406. Limitdata = (( bluecell_Currdatastatus.DLI_AGC_Threshold_H << 8) & 0xFF00) ;
  4407. Limitdata += bluecell_Currdatastatus.DLI_AGC_Threshold_L ;
  4408. Limitdata /= 10;
  4409. // printf("==================================\r\n");
  4410. // printf("Current DL4 ADC VALUE : %f \r\n",ret);
  4411. // printf("ResdBm : DL4 : %d \r\n",ResdBm);
  4412. // printf("AGC_Table_ref[%d] : %d\r\n",i,AGC_Table_ref[i]);
  4413. // printf("I WILL GIVE YOU ATTEN : %d\r\n",AGC_Calc(Limitdata,ResdBm));
  4414. // printf("AGC : %d\r\n",Limitdata);
  4415. // HAL_Delay(1000);
  4416. IwillgiveAtten = AGC_Calc(Limitdata,ResdBm);
  4417. AGC_Alarm_Check(AGC_Alarm_DL4_Index,ret,&Det_DL4.Table_Det5_dBm_H,IwillgiveAtten);
  4418. bluecell_Currdatastatus.ATT_DL4_H = (((IwillgiveAtten * 10) & 0xFF00) >> 8) ;
  4419. bluecell_Currdatastatus.ATT_DL4_L = (((IwillgiveAtten * 10) & 0x00FF));
  4420. CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
  4421. }else{
  4422. ret = bluecell_Currdatastatus.DLI_P1_Level1_H << 8;
  4423. ret += bluecell_Currdatastatus.DLI_P1_Level1_L;
  4424. ret *= 0.001;
  4425. Levelret = (int16_t)Bluecell_TestPro(AGC_AutoControl_ADC_Compare(ret,&Det_DL1.Table_Det5_dBm_H,sizeof(DET_TABLEDL_st)));
  4426. bluecell_Currdatastatus.DLI_Level1_H = (Levelret & 0xFF00) >> 8;
  4427. bluecell_Currdatastatus.DLI_Level1_L = (Levelret & 0x00FF);
  4428. #if 0 // PYJ.2020.06.20_BEGIN --
  4429. printf("==================START================\r\n");
  4430. printf("Current DL ADC VALUE : %f \r\n",ret);
  4431. printf("Levelret : DL1 : %f \r\n",Levelret);
  4432. printf("Levelret : %x ///// bluecell_Currdatastatus.DLI_Level1_H : %x \r\n",Levelret,bluecell_Currdatastatus.DLI_Level1_H);
  4433. printf("Levelret : %x ///// bluecell_Currdatastatus.ULO_Level1_L : %x \r\n",Levelret,bluecell_Currdatastatus.DLI_Level1_L);
  4434. printf("==================END================\r\n");
  4435. #endif // PYJ.2020.06.20_END --
  4436. // printf("==================================\r\n");
  4437. // printf("Current DL1 ADC VALUE : %f \r\n",ret);
  4438. // printf("ResdBm : DL1 : %d \r\n",ResdBm);
  4439. // HAL_Delay(1000);
  4440. ret = bluecell_Currdatastatus.DLI_P2_Level2_H << 8;
  4441. ret += bluecell_Currdatastatus.DLI_P2_Level2_L;
  4442. ret *= 0.001;
  4443. Levelret = (int16_t)Bluecell_TestPro(AGC_AutoControl_ADC_Compare(ret,&Det_DL2.Table_Det5_dBm_H,sizeof(DET_TABLEDL_st)));
  4444. bluecell_Currdatastatus.DLI_Level2_H = (Levelret & 0xFF00) >> 8;
  4445. bluecell_Currdatastatus.DLI_Level2_L = (Levelret & 0x00FF);
  4446. ret = bluecell_Currdatastatus.DLI_P3_Level3_H << 8;
  4447. ret += bluecell_Currdatastatus.DLI_P3_Level3_L;
  4448. ret *= 0.001;
  4449. Levelret = (int16_t)Bluecell_TestPro(AGC_AutoControl_ADC_Compare(ret,&Det_DL3.Table_Det5_dBm_H,sizeof(DET_TABLEDL_st)));
  4450. bluecell_Currdatastatus.DLI_Level3_H = (Levelret & 0xFF00) >> 8;
  4451. bluecell_Currdatastatus.DLI_Level3_L = (Levelret & 0x00FF);
  4452. ret = bluecell_Currdatastatus.DLI_P3_Level3_H << 8;
  4453. ret += bluecell_Currdatastatus.DLI_P3_Level3_L;
  4454. ret *= 0.001;
  4455. Levelret = (int16_t)Bluecell_TestPro(AGC_AutoControl_ADC_Compare(ret,&Det_DL4.Table_Det5_dBm_H,sizeof(DET_TABLEDL_st)));
  4456. bluecell_Currdatastatus.DLI_Level4_H = (Levelret & 0xFF00) >> 8;
  4457. bluecell_Currdatastatus.DLI_Level4_L = (Levelret & 0x00FF);
  4458. }
  4459. AGCTimerCnt = 0;
  4460. }
  4461. }
  4462. void DLI_LevelAlarmCheck(){
  4463. //double temp = 0;
  4464. //double ret = 0;
  4465. //int8_t ResdBm[4] = {0,};
  4466. /*********************DL LEVEL LOW START****************************/
  4467. if(DET_DL_Low_On_AlarmTimerCnt[DET_Alarm_DL1_Index] >= MBIC_ON_MAINTAIN_SEC
  4468. &&ADC_Alarm_DL_Low_Set[DET_Alarm_DL1_Index] == true){
  4469. bluecell_Currdatastatus.ALARM_DLI_Level |= ALARM_DLI_P1_LEVEL_LOW;
  4470. bluecell_Currdatastatus.DLI_Level_Low_Alarm1 = true;
  4471. }else{/**/
  4472. if(DET_DL_Low_Off_AlarmTimerCnt[DET_Alarm_DL1_Index] >= MBIC_OFF_MAINTAIN_SEC){
  4473. bluecell_Currdatastatus.ALARM_DLI_Level &= ~ALARM_DLI_P1_LEVEL_LOW;
  4474. bluecell_Currdatastatus.DLI_Level_Low_Alarm1 = false;
  4475. }
  4476. }
  4477. if(DET_DL_Low_On_AlarmTimerCnt[DET_Alarm_DL2_Index] >= MBIC_ON_MAINTAIN_SEC
  4478. &&ADC_Alarm_DL_Low_Set[DET_Alarm_DL2_Index] == true){
  4479. bluecell_Currdatastatus.ALARM_DLI_Level |= ALARM_DLI_P2_LEVEL_LOW;
  4480. bluecell_Currdatastatus.DLI_Level_Low_Alarm2 = true;
  4481. }else{
  4482. if(DET_DL_Low_Off_AlarmTimerCnt[DET_Alarm_DL2_Index] >= MBIC_OFF_MAINTAIN_SEC){
  4483. bluecell_Currdatastatus.ALARM_DLI_Level &= ~ALARM_DLI_P2_LEVEL_LOW;
  4484. bluecell_Currdatastatus.DLI_Level_Low_Alarm2 = false;
  4485. }
  4486. }
  4487. if(DET_DL_Low_On_AlarmTimerCnt[DET_Alarm_DL3_Index] >= MBIC_ON_MAINTAIN_SEC
  4488. &&ADC_Alarm_DL_Low_Set[DET_Alarm_DL3_Index] == true){
  4489. bluecell_Currdatastatus.ALARM_DLI_Level |= ALARM_DLI_P3_LEVEL_LOW;
  4490. bluecell_Currdatastatus.DLI_Level_Low_Alarm3 = true;
  4491. }else{
  4492. if(DET_DL_Low_Off_AlarmTimerCnt[DET_Alarm_DL3_Index] >= MBIC_OFF_MAINTAIN_SEC){
  4493. bluecell_Currdatastatus.ALARM_DLI_Level &= ~ALARM_DLI_P3_LEVEL_LOW;
  4494. bluecell_Currdatastatus.DLI_Level_Low_Alarm3 = false;
  4495. }
  4496. }
  4497. if(DET_DL_Low_On_AlarmTimerCnt[DET_Alarm_DL4_Index] >= MBIC_ON_MAINTAIN_SEC
  4498. &&ADC_Alarm_DL_Low_Set[DET_Alarm_DL4_Index] == true){
  4499. bluecell_Currdatastatus.ALARM_DLI_Level |= ALARM_DLI_P4_LEVEL_LOW;
  4500. bluecell_Currdatastatus.DLI_Level_Low_Alarm4 = true;
  4501. }else{
  4502. if(DET_DL_Low_Off_AlarmTimerCnt[DET_Alarm_DL4_Index] >= MBIC_OFF_MAINTAIN_SEC){
  4503. bluecell_Currdatastatus.ALARM_DLI_Level &= ~ALARM_DLI_P4_LEVEL_LOW;
  4504. bluecell_Currdatastatus.DLI_Level_Low_Alarm4 = false;
  4505. }
  4506. }
  4507. /*********************DL LEVEL HIGH START***************************/
  4508. if(DET_DL_High_On_AlarmTimerCnt[DET_Alarm_DL1_Index] >= MBIC_ON_MAINTAIN_SEC
  4509. &&ADC_Alarm_DL_High_Set[DET_Alarm_DL1_Index] == true){
  4510. bluecell_Currdatastatus.ALARM_DLI_Level |= ALARM_DLI_P1_LEVEL_HIGH;
  4511. bluecell_Currdatastatus.DLI_Level_High_Alarm1 = true;
  4512. }else{/**/
  4513. if(DET_DL_High_Off_AlarmTimerCnt[DET_Alarm_DL1_Index] >= MBIC_OFF_MAINTAIN_SEC){
  4514. bluecell_Currdatastatus.ALARM_DLI_Level &= ~ALARM_DLI_P1_LEVEL_HIGH;
  4515. bluecell_Currdatastatus.DLI_Level_High_Alarm1 = false;
  4516. }
  4517. }
  4518. if(DET_DL_High_On_AlarmTimerCnt[DET_Alarm_DL2_Index] >= MBIC_ON_MAINTAIN_SEC
  4519. &&ADC_Alarm_DL_High_Set[DET_Alarm_DL2_Index] == true){
  4520. bluecell_Currdatastatus.ALARM_DLI_Level |= ALARM_DLI_P2_LEVEL_HIGH;
  4521. bluecell_Currdatastatus.DLI_Level_High_Alarm2 = true;
  4522. }else{
  4523. if(DET_DL_High_Off_AlarmTimerCnt[DET_Alarm_DL2_Index] >= MBIC_OFF_MAINTAIN_SEC){
  4524. bluecell_Currdatastatus.ALARM_DLI_Level &= ~ALARM_DLI_P2_LEVEL_HIGH;
  4525. bluecell_Currdatastatus.DLI_Level_High_Alarm2 = false;
  4526. }
  4527. }
  4528. if(DET_DL_High_On_AlarmTimerCnt[DET_Alarm_DL3_Index] >= MBIC_ON_MAINTAIN_SEC
  4529. &&ADC_Alarm_DL_High_Set[DET_Alarm_DL3_Index] == true){
  4530. bluecell_Currdatastatus.ALARM_DLI_Level |= ALARM_DLI_P3_LEVEL_HIGH;
  4531. bluecell_Currdatastatus.DLI_Level_High_Alarm3 = true;
  4532. }else{
  4533. if(DET_DL_High_Off_AlarmTimerCnt[DET_Alarm_DL3_Index] >= MBIC_OFF_MAINTAIN_SEC){
  4534. bluecell_Currdatastatus.ALARM_DLI_Level &= ~ALARM_DLI_P3_LEVEL_HIGH;
  4535. bluecell_Currdatastatus.DLI_Level_High_Alarm3 = false;
  4536. }
  4537. }
  4538. if(DET_DL_High_On_AlarmTimerCnt[DET_Alarm_DL4_Index] >= MBIC_ON_MAINTAIN_SEC
  4539. &&ADC_Alarm_DL_High_Set[DET_Alarm_DL4_Index] == true){
  4540. bluecell_Currdatastatus.ALARM_DLI_Level |= ALARM_DLI_P4_LEVEL_HIGH;
  4541. bluecell_Currdatastatus.DLI_Level_High_Alarm4 = true;
  4542. }else{
  4543. if(DET_DL_High_Off_AlarmTimerCnt[DET_Alarm_DL4_Index] >= MBIC_OFF_MAINTAIN_SEC){
  4544. bluecell_Currdatastatus.ALARM_DLI_Level &= ~ALARM_DLI_P4_LEVEL_HIGH;
  4545. bluecell_Currdatastatus.DLI_Level_High_Alarm4 = false;
  4546. }
  4547. }
  4548. }
  4549. void ULO_LevelAlarmCheck(){
  4550. //double temp = 0;
  4551. //double ret = 0;
  4552. //int8_t ResdBm[4] = {0,};
  4553. #if 1 // PYJ.2020.05.27_BEGIN --
  4554. if(DET_UL_On_AlarmTimerCnt[DET_Alarm_UL1_Index] >= MBIC_ON_MAINTAIN_SEC
  4555. &&ADC_Alarm_UL_Set[DET_Alarm_UL1_Index] == true){
  4556. bluecell_Currdatastatus.ALARM_ULO_Level |= ALARM_ULO_P1_LEVEL_HIGH;
  4557. bluecell_Currdatastatus.ULO_Level_High_Alarm1 = true;
  4558. }else{/**/
  4559. if(DET_UL_Off_AlarmTimerCnt[DET_Alarm_UL1_Index] >= MBIC_OFF_MAINTAIN_SEC){
  4560. bluecell_Currdatastatus.ALARM_ULO_Level &= ~ALARM_ULO_P1_LEVEL_HIGH;
  4561. bluecell_Currdatastatus.ULO_Level_High_Alarm1 = false;
  4562. }
  4563. }
  4564. if(DET_UL_On_AlarmTimerCnt[DET_Alarm_UL2_Index] >= MBIC_ON_MAINTAIN_SEC
  4565. &&ADC_Alarm_UL_Set[DET_Alarm_UL2_Index] == true){
  4566. bluecell_Currdatastatus.ALARM_ULO_Level |= ALARM_ULO_P2_LEVEL_HIGH;
  4567. bluecell_Currdatastatus.ULO_Level_High_Alarm2 = true;
  4568. }else{
  4569. if(DET_UL_Off_AlarmTimerCnt[DET_Alarm_UL2_Index] >= MBIC_OFF_MAINTAIN_SEC){
  4570. bluecell_Currdatastatus.ALARM_ULO_Level &= ~ALARM_ULO_P2_LEVEL_HIGH;
  4571. bluecell_Currdatastatus.ULO_Level_High_Alarm2 = false;
  4572. }
  4573. }
  4574. if(DET_UL_On_AlarmTimerCnt[DET_Alarm_UL3_Index] >= MBIC_ON_MAINTAIN_SEC
  4575. &&ADC_Alarm_UL_Set[DET_Alarm_UL3_Index] == true){
  4576. bluecell_Currdatastatus.ALARM_ULO_Level |= ALARM_ULO_P3_LEVEL_HIGH;
  4577. bluecell_Currdatastatus.ULO_Level_High_Alarm3 = true;
  4578. }else{
  4579. if(DET_UL_Off_AlarmTimerCnt[DET_Alarm_UL3_Index] >= MBIC_OFF_MAINTAIN_SEC){
  4580. bluecell_Currdatastatus.ALARM_ULO_Level &= ~ALARM_ULO_P3_LEVEL_HIGH;
  4581. bluecell_Currdatastatus.ULO_Level_High_Alarm3 = false;
  4582. }
  4583. }
  4584. if(DET_UL_On_AlarmTimerCnt[DET_Alarm_UL4_Index] >= MBIC_ON_MAINTAIN_SEC
  4585. &&ADC_Alarm_UL_Set[DET_Alarm_UL4_Index] == true){
  4586. bluecell_Currdatastatus.ALARM_ULO_Level |= ALARM_ULO_P4_LEVEL_HIGH;
  4587. bluecell_Currdatastatus.ULO_Level_High_Alarm4 = true;
  4588. }else{
  4589. if(DET_UL_Off_AlarmTimerCnt[DET_Alarm_UL4_Index] >= MBIC_OFF_MAINTAIN_SEC){
  4590. bluecell_Currdatastatus.ALARM_ULO_Level &= ~ALARM_ULO_P4_LEVEL_HIGH;
  4591. bluecell_Currdatastatus.ULO_Level_High_Alarm4 = false;
  4592. }
  4593. }
  4594. #else
  4595. if(ADC_Alarm_UL_Set[DET_Alarm_UL1_Index] == true){
  4596. bluecell_Currdatastatus.ALARM_ULO_Level |= ALARM_ULO_P1_LEVEL_HIGH;
  4597. bluecell_Currdatastatus.ULO_Level_High_Alarm1 = true;
  4598. }else{
  4599. bluecell_Currdatastatus.ALARM_ULO_Level &= ~ALARM_ULO_P1_LEVEL_HIGH;
  4600. bluecell_Currdatastatus.ULO_Level_High_Alarm1 = false;
  4601. }
  4602. if(ADC_Alarm_UL_Set[DET_Alarm_UL2_Index] == true){
  4603. bluecell_Currdatastatus.ALARM_ULO_Level |= ALARM_ULO_P2_LEVEL_HIGH;
  4604. bluecell_Currdatastatus.ULO_Level_High_Alarm2 = true;
  4605. }else{
  4606. bluecell_Currdatastatus.ALARM_ULO_Level &= ~ALARM_ULO_P2_LEVEL_HIGH;
  4607. bluecell_Currdatastatus.ULO_Level_High_Alarm2 = false;
  4608. }
  4609. if(ADC_Alarm_UL_Set[DET_Alarm_UL3_Index] == true){
  4610. bluecell_Currdatastatus.ALARM_ULO_Level |= ALARM_ULO_P3_LEVEL_HIGH;
  4611. bluecell_Currdatastatus.ULO_Level_High_Alarm3 = true;
  4612. }else{
  4613. bluecell_Currdatastatus.ALARM_ULO_Level &= ~ALARM_ULO_P3_LEVEL_HIGH;
  4614. bluecell_Currdatastatus.ULO_Level_High_Alarm3 = false;
  4615. }
  4616. if(ADC_Alarm_UL_Set[DET_Alarm_UL4_Index] == true){
  4617. bluecell_Currdatastatus.ALARM_ULO_Level |= ALARM_ULO_P4_LEVEL_HIGH;
  4618. bluecell_Currdatastatus.ULO_Level_High_Alarm4 = true;
  4619. }else{
  4620. bluecell_Currdatastatus.ALARM_ULO_Level &= ~ALARM_ULO_P4_LEVEL_HIGH;
  4621. bluecell_Currdatastatus.ULO_Level_High_Alarm4 = false;
  4622. }
  4623. #endif // PYJ.2020.05.27_END --
  4624. }
  4625. void DLI_ShutdownAlarmCheck(){
  4626. //double temp = 0;
  4627. //double ret = 0;
  4628. //int8_t ResdBm[4] = {0,};
  4629. /*DLI Shutdown On*/
  4630. if(bluecell_Currdatastatus.DLI_Shutdown_ON_OFF == true){
  4631. if(DET_DL_Shutdown_On_AlarmTimerCnt[DET_Alarm_DL1_Shutdown_Index] >= MBIC_ON_SHUTDOWN_MAINTAIN_SEC)
  4632. {
  4633. if(bluecell_Currdatastatus.DLI_Shutdown_Retry_Count1 >= RETRYCNT_MAX){
  4634. bluecell_Currdatastatus.ALARM_DLI_SHTUTDOWN |= ALARM_DLI_SHUTDOWN_P1;
  4635. bluecell_Currdatastatus.DLI_Shutdown_Alarm1 = true;
  4636. HAL_GPIO_WritePin(PATH_EN_DL1_GPIO_Port,PATH_EN_DL1_Pin,GPIO_PIN_RESET);//CLOCK
  4637. bluecell_Currdatastatus.ATT_DL1_PATH = false;
  4638. }else{
  4639. if(HAL_GPIO_ReadPin(PATH_EN_DL1_GPIO_Port,PATH_EN_DL1_Pin) == GPIO_PIN_SET)
  4640. {//CLOCK;
  4641. bluecell_Currdatastatus.DLI_Shutdown_Retry_Count1++;
  4642. }
  4643. /*ShutDown Inc*/
  4644. if(DET_DL_Shutdown_On_AlarmTimerCnt[DET_Alarm_DL1_Shutdown_Index] >= MBIC_RECOVERY_SHUTDOWN_MAINTAIN_SEC){
  4645. /*Path Recovery*/
  4646. HAL_GPIO_WritePin(PATH_EN_DL1_GPIO_Port,PATH_EN_DL1_Pin,GPIO_PIN_SET);//CLOCK
  4647. bluecell_Prevdatastatus.ATT_DL1_H = 0xFF;
  4648. bluecell_Prevdatastatus.ATT_DL1_L =0xFF;
  4649. bluecell_Currdatastatus.ATT_DL1_PATH = true;
  4650. CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
  4651. DET_DL_Shutdown_On_AlarmTimerCnt[DET_Alarm_DL1_Shutdown_Index] = 0;
  4652. }else{
  4653. /*Path Off*/
  4654. HAL_GPIO_WritePin(PATH_EN_DL1_GPIO_Port,PATH_EN_DL1_Pin,GPIO_PIN_RESET);//CLOCK
  4655. bluecell_Currdatastatus.ATT_DL1_PATH = false;
  4656. }
  4657. }
  4658. }
  4659. else{
  4660. if(DET_DL_Shutdown_Off_AlarmTimerCnt[DET_Alarm_DL1_Shutdown_Index] >= MBIC_OFF_MAINTAIN_SEC){
  4661. bluecell_Currdatastatus.ALARM_DLI_SHTUTDOWN &= ~ALARM_DLI_SHUTDOWN_P1;
  4662. bluecell_Currdatastatus.DLI_Shutdown_Alarm1 = false;
  4663. }
  4664. }
  4665. #if 0 // PYJ.2020.06.19_BEGIN --
  4666. if(ADC_Alarm_DL_Shutdown_Set[DET_Alarm_DL2_Shutdown_Index] == true
  4667. &&DET_DL_Shutdown_On_AlarmTimerCnt[DET_Alarm_DL2_Shutdown_Index] >= MBIC_ON_SHUTDOWN_MAINTAIN_SEC)
  4668. {
  4669. if(bluecell_Currdatastatus.DLI_Shutdown_Retry_Count2 >= RETRYCNT_MAX){
  4670. bluecell_Currdatastatus.ALARM_DLI_SHTUTDOWN |= ALARM_DLI_SHUTDOWN_P2;
  4671. bluecell_Currdatastatus.DLI_Shutdown_Alarm2 = true;
  4672. HAL_GPIO_WritePin(PATH_EN_DL2_GPIO_Port,PATH_EN_DL2_Pin,GPIO_PIN_RESET);//CLOCK
  4673. bluecell_Currdatastatus.ATT_DL2_PATH = false;
  4674. }else{
  4675. if(HAL_GPIO_ReadPin(PATH_EN_DL2_GPIO_Port,PATH_EN_DL2_Pin) == GPIO_PIN_SET)
  4676. {//CLOCK;
  4677. bluecell_Currdatastatus.DLI_Shutdown_Retry_Count2++;
  4678. }
  4679. /*ShutDown Inc*/
  4680. if(DET_DL_Shutdown_On_AlarmTimerCnt[DET_Alarm_DL2_Shutdown_Index] >= MBIC_RECOVERY_SHUTDOWN_MAINTAIN_SEC){
  4681. /*Path Recovery*/
  4682. HAL_GPIO_WritePin(PATH_EN_DL2_GPIO_Port,PATH_EN_DL2_Pin,GPIO_PIN_SET);//CLOCK
  4683. bluecell_Prevdatastatus.ATT_DL2_H = 0xFF;
  4684. bluecell_Prevdatastatus.ATT_DL2_L = 0xFF;
  4685. bluecell_Currdatastatus.ATT_DL2_PATH = true;
  4686. CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
  4687. DET_DL_Shutdown_On_AlarmTimerCnt[DET_Alarm_DL2_Shutdown_Index] = 0;
  4688. }else{
  4689. /*Path Off*/
  4690. HAL_GPIO_WritePin(PATH_EN_DL2_GPIO_Port,PATH_EN_DL2_Pin,GPIO_PIN_RESET);//CLOCK
  4691. bluecell_Currdatastatus.ATT_DL2_PATH = false;
  4692. }
  4693. }
  4694. }
  4695. else{
  4696. if(DET_DL_Shutdown_Off_AlarmTimerCnt[DET_Alarm_DL2_Shutdown_Index] >= MBIC_OFF_MAINTAIN_SEC){
  4697. bluecell_Currdatastatus.ALARM_DLI_SHTUTDOWN &= ~ALARM_DLI_SHUTDOWN_P2;
  4698. bluecell_Currdatastatus.DLI_Shutdown_Alarm2 = false;
  4699. }
  4700. }
  4701. if(ADC_Alarm_DL_Shutdown_Set[DET_Alarm_DL3_Shutdown_Index] == true
  4702. &&DET_DL_Shutdown_On_AlarmTimerCnt[DET_Alarm_DL3_Shutdown_Index] >= MBIC_ON_SHUTDOWN_MAINTAIN_SEC)
  4703. {
  4704. if(bluecell_Currdatastatus.DLI_Shutdown_Retry_Count3 >= RETRYCNT_MAX){
  4705. bluecell_Currdatastatus.ALARM_DLI_SHTUTDOWN |= ALARM_DLI_SHUTDOWN_P3;
  4706. bluecell_Currdatastatus.DLI_Shutdown_Alarm3 = true;
  4707. HAL_GPIO_WritePin(PATH_EN_DL3_GPIO_Port,PATH_EN_DL3_Pin,GPIO_PIN_RESET);//CLOCK
  4708. bluecell_Currdatastatus.ATT_DL3_PATH = false;
  4709. }else{
  4710. if(HAL_GPIO_ReadPin(PATH_EN_DL3_GPIO_Port,PATH_EN_DL3_Pin) == GPIO_PIN_SET)
  4711. {//CLOCK;
  4712. bluecell_Currdatastatus.DLI_Shutdown_Retry_Count3++;
  4713. }
  4714. /*ShutDown Inc*/
  4715. if(DET_DL_Shutdown_On_AlarmTimerCnt[DET_Alarm_DL3_Shutdown_Index] >= MBIC_RECOVERY_SHUTDOWN_MAINTAIN_SEC){
  4716. /*Path Recovery*/
  4717. HAL_GPIO_WritePin(PATH_EN_DL3_GPIO_Port,PATH_EN_DL3_Pin,GPIO_PIN_SET);//CLOCK
  4718. bluecell_Prevdatastatus.ATT_DL3_H = 0xFF;
  4719. bluecell_Prevdatastatus.ATT_DL3_L = 0xFF;
  4720. bluecell_Currdatastatus.ATT_DL3_PATH = true;
  4721. CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
  4722. DET_DL_Shutdown_On_AlarmTimerCnt[DET_Alarm_DL3_Shutdown_Index] = 0;
  4723. }else{
  4724. /*Path Off*/
  4725. HAL_GPIO_WritePin(PATH_EN_DL3_GPIO_Port,PATH_EN_DL3_Pin,GPIO_PIN_RESET);//CLOCK
  4726. bluecell_Currdatastatus.ATT_DL3_PATH = false;
  4727. }
  4728. }
  4729. }
  4730. else{
  4731. if(DET_DL_Shutdown_Off_AlarmTimerCnt[DET_Alarm_DL3_Shutdown_Index] >= MBIC_OFF_MAINTAIN_SEC){
  4732. bluecell_Currdatastatus.ALARM_DLI_SHTUTDOWN &= ~ALARM_DLI_SHUTDOWN_P3;
  4733. bluecell_Currdatastatus.DLI_Shutdown_Alarm3 = false;
  4734. }
  4735. }
  4736. if(ADC_Alarm_DL_Shutdown_Set[DET_Alarm_DL4_Shutdown_Index] == true
  4737. &&DET_DL_Shutdown_On_AlarmTimerCnt[DET_Alarm_DL4_Shutdown_Index] >= MBIC_ON_SHUTDOWN_MAINTAIN_SEC)
  4738. {
  4739. if(bluecell_Currdatastatus.DLI_Shutdown_Retry_Count4 >= RETRYCNT_MAX){
  4740. bluecell_Currdatastatus.ALARM_DLI_SHTUTDOWN |= ALARM_DLI_SHUTDOWN_P4;
  4741. bluecell_Currdatastatus.DLI_Shutdown_Alarm4 = true;
  4742. HAL_GPIO_WritePin(PATH_EN_DL4_GPIO_Port,PATH_EN_DL4_Pin,GPIO_PIN_RESET);//CLOCK
  4743. bluecell_Currdatastatus.ATT_DL4_PATH = false;
  4744. }else{
  4745. if(HAL_GPIO_ReadPin(PATH_EN_DL4_GPIO_Port,PATH_EN_DL4_Pin) == GPIO_PIN_SET)
  4746. {//CLOCK;
  4747. bluecell_Currdatastatus.DLI_Shutdown_Retry_Count4++;
  4748. }
  4749. /*ShutDown Inc*/
  4750. if(DET_DL_Shutdown_On_AlarmTimerCnt[DET_Alarm_DL4_Shutdown_Index] >= MBIC_RECOVERY_SHUTDOWN_MAINTAIN_SEC){
  4751. /*Path Recovery*/
  4752. HAL_GPIO_WritePin(PATH_EN_DL4_GPIO_Port,PATH_EN_DL4_Pin,GPIO_PIN_SET);//CLOCK
  4753. bluecell_Prevdatastatus.ATT_DL4_H =0xFF;
  4754. bluecell_Prevdatastatus.ATT_DL4_L = 0xFF;
  4755. bluecell_Currdatastatus.ATT_DL4_PATH = true;
  4756. CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
  4757. DET_DL_Shutdown_On_AlarmTimerCnt[DET_Alarm_DL4_Shutdown_Index] = 0;
  4758. }else{
  4759. /*Path Off*/
  4760. HAL_GPIO_WritePin(PATH_EN_DL4_GPIO_Port,PATH_EN_DL4_Pin,GPIO_PIN_RESET);//CLOCK
  4761. bluecell_Currdatastatus.ATT_DL4_PATH = false;
  4762. }
  4763. }
  4764. }
  4765. else{
  4766. if(DET_DL_Shutdown_Off_AlarmTimerCnt[DET_Alarm_DL4_Shutdown_Index] >= MBIC_OFF_MAINTAIN_SEC){
  4767. bluecell_Currdatastatus.ALARM_DLI_SHTUTDOWN &= ~ALARM_DLI_SHUTDOWN_P4;
  4768. bluecell_Currdatastatus.DLI_Shutdown_Alarm4 = false;
  4769. }
  4770. }
  4771. #endif // PYJ.2020.06.19_END --
  4772. }
  4773. else{
  4774. bluecell_Currdatastatus.ALARM_DLI_SHTUTDOWN = 0;
  4775. bluecell_Currdatastatus.DLI_Shutdown_Alarm1 = false;
  4776. bluecell_Currdatastatus.DLI_Shutdown_Alarm2 = false;
  4777. bluecell_Currdatastatus.DLI_Shutdown_Alarm3 = false;
  4778. bluecell_Currdatastatus.DLI_Shutdown_Alarm4 = false;
  4779. }
  4780. }
  4781. void ULO_ShutdownAlarmCheck(){
  4782. // double temp = 0;
  4783. //double ret = 0;
  4784. // int8_t ResdBm[4] = {0,};
  4785. // if(ALC_AlarmSet[ALC_Alarm_UL1_Index] == true
  4786. // &&ALC_On_AlarmTimerCnt[ALC_Alarm_UL1_Index] >= MBIC_ON_MAINTAIN_SEC){
  4787. // printf("ALARM_ALC_P1 OCCUR\r\n");
  4788. // bluecell_Currdatastatus.ALARM_ULO_ALC_Alarm |= ALARM_ALC_P1;
  4789. // bluecell_Currdatastatus.ULO_ALC_Alarm1 = true;
  4790. // }else{
  4791. // if(ALC_On_AlarmTimerCnt[ALC_Alarm_UL1_Index] >= MBIC_OFF_MAINTAIN_SEC){
  4792. // bluecell_Currdatastatus.ALARM_ULO_ALC_Alarm &= ~ALARM_ALC_P1;
  4793. // bluecell_Currdatastatus.ULO_ALC_Alarm1 = false;
  4794. // }
  4795. // }
  4796. if(bluecell_Currdatastatus.ULO_Shutdown_ON_OFF == true){
  4797. if(DET_UL_Shutdown_On_AlarmTimerCnt[DET_Alarm_UL1_Shutdown_Index] >= MBIC_ON_SHUTDOWN_MAINTAIN_SEC)
  4798. {
  4799. if(bluecell_Currdatastatus.ULO_Shutdown_Retry_Count1 >= RETRYCNT_MAX){
  4800. bluecell_Currdatastatus.ALARM_ULO_SHTUTDOWN |= ALARM_ULO_SHUTDOWN_P1;
  4801. bluecell_Currdatastatus.ULO_Shutdown_Alarm1 = true;
  4802. bluecell_Currdatastatus.ATT_UL1_PATH = false;
  4803. HAL_GPIO_WritePin(PATH_EN_UL1_GPIO_Port,PATH_EN_UL1_Pin,bluecell_Currdatastatus.ATT_UL1_PATH);//CLOCK
  4804. }else{
  4805. if(HAL_GPIO_ReadPin(PATH_EN_DL1_GPIO_Port,PATH_EN_DL1_Pin) == GPIO_PIN_SET)
  4806. {//CLOCK;
  4807. bluecell_Currdatastatus.ULO_Shutdown_Retry_Count1++;
  4808. }
  4809. /*ShutDown Inc*/
  4810. if(DET_UL_Shutdown_On_AlarmTimerCnt[DET_Alarm_UL1_Shutdown_Index] >= MBIC_RECOVERY_SHUTDOWN_MAINTAIN_SEC){
  4811. /*Path Recovery*/
  4812. HAL_GPIO_WritePin(PATH_EN_UL1_GPIO_Port,PATH_EN_UL1_Pin,GPIO_PIN_SET);//CLOCK
  4813. bluecell_Prevdatastatus.ATT_UL1_H = 0xFF;
  4814. bluecell_Prevdatastatus.ATT_UL1_L = 0xFF;
  4815. bluecell_Currdatastatus.ATT_UL1_PATH = true;
  4816. CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
  4817. DET_UL_Shutdown_On_AlarmTimerCnt[DET_Alarm_UL1_Shutdown_Index] = 0;
  4818. }else{
  4819. /*Path Off*/
  4820. HAL_GPIO_WritePin(PATH_EN_UL1_GPIO_Port,PATH_EN_UL1_Pin,GPIO_PIN_RESET);//CLOCK
  4821. bluecell_Currdatastatus.ATT_UL1_PATH = false;
  4822. }
  4823. }
  4824. }
  4825. else{
  4826. if(DET_UL_Shutdown_Off_AlarmTimerCnt[DET_Alarm_UL1_Shutdown_Index] >= MBIC_OFF_MAINTAIN_SEC){
  4827. bluecell_Currdatastatus.ALARM_ULO_SHTUTDOWN &= ~ALARM_ULO_SHUTDOWN_P1;
  4828. bluecell_Currdatastatus.ULO_Shutdown_Alarm1 = false;
  4829. }
  4830. }
  4831. #if 0 // PYJ.2020.06.19_BEGIN --
  4832. if(ADC_Alarm_UL_Shutdown_Set[DET_Alarm_UL2_Shutdown_Index] == true
  4833. &&DET_UL_Shutdown_On_AlarmTimerCnt[DET_Alarm_UL2_Shutdown_Index] >= MBIC_ON_SHUTDOWN_MAINTAIN_SEC)
  4834. {
  4835. if(bluecell_Currdatastatus.ULO_Shutdown_Retry_Count2 >= RETRYCNT_MAX){
  4836. bluecell_Currdatastatus.ALARM_ULO_SHTUTDOWN |= ALARM_ULO_SHUTDOWN_P2;
  4837. bluecell_Currdatastatus.ULO_Shutdown_Alarm2 = true;
  4838. HAL_GPIO_WritePin(PATH_EN_UL2_GPIO_Port,PATH_EN_UL2_Pin,GPIO_PIN_RESET);//CLOCK
  4839. bluecell_Currdatastatus.ATT_UL2_PATH = false;
  4840. }else{
  4841. if(HAL_GPIO_ReadPin(PATH_EN_DL2_GPIO_Port,PATH_EN_DL2_Pin) == GPIO_PIN_SET)
  4842. {//CLOCK;
  4843. bluecell_Currdatastatus.ULO_Shutdown_Retry_Count2++;
  4844. }
  4845. /*ShutDown Inc*/
  4846. if(DET_UL_Shutdown_On_AlarmTimerCnt[DET_Alarm_UL2_Shutdown_Index] >= MBIC_RECOVERY_SHUTDOWN_MAINTAIN_SEC){
  4847. /*Path Recovery*/
  4848. HAL_GPIO_WritePin(PATH_EN_UL2_GPIO_Port,PATH_EN_UL2_Pin,GPIO_PIN_SET);//CLOCK
  4849. bluecell_Prevdatastatus.ATT_UL2_H = 0xFF;
  4850. bluecell_Prevdatastatus.ATT_UL2_L = 0xFF;
  4851. bluecell_Currdatastatus.ATT_UL2_PATH = true;
  4852. CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
  4853. DET_UL_Shutdown_On_AlarmTimerCnt[DET_Alarm_UL2_Shutdown_Index] = 0;
  4854. }else{
  4855. /*Path Off*/
  4856. HAL_GPIO_WritePin(PATH_EN_UL2_GPIO_Port,PATH_EN_UL2_Pin,GPIO_PIN_RESET);//CLOCK
  4857. bluecell_Currdatastatus.ATT_UL2_PATH = false;
  4858. }
  4859. }
  4860. }
  4861. else{
  4862. if(DET_UL_Shutdown_Off_AlarmTimerCnt[DET_Alarm_UL2_Shutdown_Index] >= MBIC_OFF_MAINTAIN_SEC){
  4863. bluecell_Currdatastatus.ALARM_ULO_SHTUTDOWN &= ~ALARM_ULO_SHUTDOWN_P2;
  4864. bluecell_Currdatastatus.ULO_Shutdown_Alarm2 = false;
  4865. }
  4866. }
  4867. if(ADC_Alarm_UL_Shutdown_Set[DET_Alarm_UL3_Shutdown_Index] == true
  4868. &&DET_UL_Shutdown_On_AlarmTimerCnt[DET_Alarm_UL3_Shutdown_Index] >= MBIC_ON_SHUTDOWN_MAINTAIN_SEC)
  4869. {
  4870. if(bluecell_Currdatastatus.ULO_Shutdown_Retry_Count3 >= RETRYCNT_MAX){
  4871. bluecell_Currdatastatus.ALARM_ULO_SHTUTDOWN |= ALARM_ULO_SHUTDOWN_P3;
  4872. bluecell_Currdatastatus.ULO_Shutdown_Alarm3 = true;
  4873. HAL_GPIO_WritePin(PATH_EN_UL3_GPIO_Port,PATH_EN_UL3_Pin,GPIO_PIN_RESET);//CLOCK
  4874. bluecell_Currdatastatus.ATT_UL3_PATH = false;
  4875. }else{
  4876. if(HAL_GPIO_ReadPin(PATH_EN_DL3_GPIO_Port,PATH_EN_DL3_Pin) == GPIO_PIN_SET)
  4877. {//CLOCK;
  4878. bluecell_Currdatastatus.ULO_Shutdown_Retry_Count3++;
  4879. }
  4880. /*ShutDown Inc*/
  4881. if(DET_UL_Shutdown_On_AlarmTimerCnt[DET_Alarm_UL3_Shutdown_Index] >= MBIC_RECOVERY_SHUTDOWN_MAINTAIN_SEC){
  4882. /*Path Recovery*/
  4883. HAL_GPIO_WritePin(PATH_EN_UL3_GPIO_Port,PATH_EN_UL3_Pin,GPIO_PIN_SET);//CLOCK
  4884. bluecell_Prevdatastatus.ATT_UL3_H = 0xFF;
  4885. bluecell_Prevdatastatus.ATT_UL3_L =0xFF;
  4886. bluecell_Currdatastatus.ATT_UL3_PATH = true;
  4887. CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
  4888. DET_UL_Shutdown_On_AlarmTimerCnt[DET_Alarm_UL3_Shutdown_Index] = 0;
  4889. }else{
  4890. /*Path Off*/
  4891. HAL_GPIO_WritePin(PATH_EN_UL3_GPIO_Port,PATH_EN_UL3_Pin,GPIO_PIN_RESET);//CLOCK
  4892. bluecell_Currdatastatus.ATT_UL3_PATH = false;
  4893. }
  4894. }
  4895. }
  4896. else{
  4897. if(DET_UL_Shutdown_Off_AlarmTimerCnt[DET_Alarm_UL3_Shutdown_Index] >= MBIC_OFF_MAINTAIN_SEC){
  4898. bluecell_Currdatastatus.ALARM_ULO_SHTUTDOWN &= ~ALARM_ULO_SHUTDOWN_P3;
  4899. bluecell_Currdatastatus.ULO_Shutdown_Alarm3 = false;
  4900. }
  4901. }
  4902. if(ADC_Alarm_UL_Shutdown_Set[DET_Alarm_UL4_Shutdown_Index] == true
  4903. &&DET_UL_Shutdown_On_AlarmTimerCnt[DET_Alarm_UL4_Shutdown_Index] >= MBIC_ON_SHUTDOWN_MAINTAIN_SEC)
  4904. {
  4905. if(bluecell_Currdatastatus.ULO_Shutdown_Retry_Count4 >= RETRYCNT_MAX){
  4906. bluecell_Currdatastatus.ALARM_ULO_SHTUTDOWN |= ALARM_ULO_SHUTDOWN_P4;
  4907. bluecell_Currdatastatus.ULO_Shutdown_Alarm4 = true;
  4908. HAL_GPIO_WritePin(PATH_EN_UL4_GPIO_Port,PATH_EN_UL4_Pin,GPIO_PIN_RESET);//CLOCK
  4909. bluecell_Currdatastatus.ATT_UL4_PATH = false;
  4910. }else{
  4911. if(HAL_GPIO_ReadPin(PATH_EN_DL4_GPIO_Port,PATH_EN_DL4_Pin) == GPIO_PIN_SET)
  4912. {//CLOCK;
  4913. bluecell_Currdatastatus.ULO_Shutdown_Retry_Count4++;
  4914. }
  4915. /*ShutDown Inc*/
  4916. if(DET_UL_Shutdown_On_AlarmTimerCnt[DET_Alarm_UL4_Shutdown_Index] >= MBIC_RECOVERY_SHUTDOWN_MAINTAIN_SEC){
  4917. /*Path Recovery*/
  4918. HAL_GPIO_WritePin(PATH_EN_UL4_GPIO_Port,PATH_EN_UL4_Pin,GPIO_PIN_SET);//CLOCK
  4919. bluecell_Prevdatastatus.ATT_UL4_H = 0xFF;
  4920. bluecell_Prevdatastatus.ATT_UL4_L = 0xFF;
  4921. bluecell_Currdatastatus.ATT_UL4_PATH = true;
  4922. CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
  4923. DET_UL_Shutdown_On_AlarmTimerCnt[DET_Alarm_UL4_Shutdown_Index] = 0;
  4924. }else{
  4925. /*Path Off*/
  4926. HAL_GPIO_WritePin(PATH_EN_UL4_GPIO_Port,PATH_EN_UL4_Pin,GPIO_PIN_RESET);//CLOCK
  4927. bluecell_Currdatastatus.ATT_UL4_PATH = false;
  4928. }
  4929. }
  4930. }
  4931. else{
  4932. if(DET_UL_Shutdown_Off_AlarmTimerCnt[DET_Alarm_UL4_Shutdown_Index] >= MBIC_OFF_MAINTAIN_SEC){
  4933. bluecell_Currdatastatus.ALARM_ULO_SHTUTDOWN &= ~ALARM_ULO_SHUTDOWN_P4;
  4934. bluecell_Currdatastatus.ULO_Shutdown_Alarm4 = false;
  4935. }
  4936. }
  4937. #endif // PYJ.2020.06.19_END --
  4938. }
  4939. else{
  4940. bluecell_Currdatastatus.ALARM_ULO_SHTUTDOWN = 0;
  4941. bluecell_Currdatastatus.ULO_Shutdown_Alarm1 = false;
  4942. bluecell_Currdatastatus.ULO_Shutdown_Alarm2 = false;
  4943. bluecell_Currdatastatus.ULO_Shutdown_Alarm3 = false;
  4944. bluecell_Currdatastatus.ULO_Shutdown_Alarm4 = false;
  4945. }
  4946. }
  4947. void ULO_ALCAlarmCheck(){
  4948. //double temp = 0;
  4949. //double ret = 0;
  4950. //int8_t ResdBm[4] = {0,};
  4951. if(bluecell_Currdatastatus.ULO_ALC_ON_OFF == true){
  4952. if(ALC_AlarmSet[ALC_Alarm_UL1_Index] == true
  4953. &&ALC_On_AlarmTimerCnt[ALC_Alarm_UL1_Index] >= MBIC_ON_MAINTAIN_SEC){
  4954. printf("ALARM_ALC_P1 OCCUR\r\n");
  4955. bluecell_Currdatastatus.ALARM_ULO_ALC_Alarm |= ALARM_ALC_P1;
  4956. bluecell_Currdatastatus.ULO_ALC_Alarm1 = true;
  4957. }else{
  4958. if(ALC_Off_AlarmTimerCnt[ALC_Alarm_UL1_Index] >= MBIC_OFF_MAINTAIN_SEC){
  4959. bluecell_Currdatastatus.ALARM_ULO_ALC_Alarm &= ~ALARM_ALC_P1;
  4960. bluecell_Currdatastatus.ULO_ALC_Alarm1 = false;
  4961. }
  4962. }
  4963. if(ALC_AlarmSet[ALC_Alarm_UL2_Index] == true
  4964. &&ALC_On_AlarmTimerCnt[ALC_Alarm_UL2_Index] >= MBIC_ON_MAINTAIN_SEC){
  4965. printf("ALARM_ALC_P2 OCCUR\r\n");
  4966. bluecell_Currdatastatus.ALARM_ULO_ALC_Alarm |= ALARM_ALC_P2;
  4967. bluecell_Currdatastatus.ULO_ALC_Alarm2 = true;
  4968. }else{
  4969. if(ALC_Off_AlarmTimerCnt[ALC_Alarm_UL2_Index] >= MBIC_OFF_MAINTAIN_SEC){
  4970. bluecell_Currdatastatus.ALARM_ULO_ALC_Alarm &= ~ALARM_ALC_P2;
  4971. bluecell_Currdatastatus.ULO_ALC_Alarm2 = false;
  4972. }
  4973. }
  4974. if(ALC_AlarmSet[ALC_Alarm_UL3_Index] == true
  4975. &&ALC_On_AlarmTimerCnt[ALC_Alarm_UL3_Index] >= MBIC_ON_MAINTAIN_SEC){
  4976. printf("ALARM_ALC_P3 OCCUR\r\n");
  4977. bluecell_Currdatastatus.ALARM_ULO_ALC_Alarm |= ALARM_ALC_P3;
  4978. bluecell_Currdatastatus.ULO_ALC_Alarm3 = true;
  4979. }else{
  4980. if(ALC_Off_AlarmTimerCnt[ALC_Alarm_UL3_Index] >= MBIC_OFF_MAINTAIN_SEC){
  4981. bluecell_Currdatastatus.ALARM_ULO_ALC_Alarm &= ~ALARM_ALC_P3;
  4982. bluecell_Currdatastatus.ULO_ALC_Alarm3 = false;
  4983. }
  4984. }
  4985. if(ALC_AlarmSet[ALC_Alarm_UL3_Index] == true
  4986. &&ALC_On_AlarmTimerCnt[ALC_Alarm_UL3_Index] >= MBIC_ON_MAINTAIN_SEC){
  4987. printf("ALARM_ALC_P4 OCCUR\r\n");
  4988. bluecell_Currdatastatus.ALARM_ULO_ALC_Alarm |= ALARM_ALC_P4;
  4989. bluecell_Currdatastatus.ULO_ALC_Alarm4 = true;
  4990. }else{
  4991. if(ALC_Off_AlarmTimerCnt[ALC_Alarm_UL3_Index] >= MBIC_OFF_MAINTAIN_SEC){
  4992. bluecell_Currdatastatus.ALARM_ULO_ALC_Alarm &= ~ALARM_ALC_P4;
  4993. bluecell_Currdatastatus.ULO_ALC_Alarm4 = false;
  4994. }
  4995. }
  4996. }
  4997. }
  4998. void DLI_AGCAlarmCheck(){
  4999. //double temp = 0;
  5000. //double ret = 0;
  5001. //int8_t ResdBm[4] = {0,};
  5002. // if(DET_DL_Low_On_AlarmTimerCnt[DET_Alarm_DL1_Index] >= MBIC_ON_MAINTAIN_SEC
  5003. // &&ADC_Alarm_DL_Low_Set[DET_Alarm_DL1_Index] == true){
  5004. // bluecell_Currdatastatus.ALARM_DLI_Level |= ALARM_DLI_P1_LEVEL_LOW;
  5005. // bluecell_Currdatastatus.DLI_Level_Low_Alarm1 = true;
  5006. //
  5007. // }else{/**/
  5008. // if(DET_DL_Low_Off_AlarmTimerCnt[DET_Alarm_DL1_Index] >= MBIC_OFF_MAINTAIN_SEC){
  5009. // bluecell_Currdatastatus.ALARM_DLI_Level &= ~ALARM_DLI_P1_LEVEL_LOW;
  5010. // bluecell_Currdatastatus.DLI_Level_Low_Alarm1 = false;
  5011. // }
  5012. // }
  5013. if(bluecell_Currdatastatus.DLI_AGC_ON_OFF == true){
  5014. if(AGC_AlarmSet[AGC_Alarm_DL1_Index] == true
  5015. &&AGC_On_AlarmTimerCnt[AGC_Alarm_DL1_Index] >= MBIC_ON_MAINTAIN_SEC){
  5016. printf("ALARM_AGC_P1 OCCUR\r\n");
  5017. bluecell_Currdatastatus.ALARM_DLI_AGC_Alarm |= ALARM_AGC_P1;
  5018. bluecell_Currdatastatus.DLI_AGC_Alarm1 = true;
  5019. }else{
  5020. if(AGC_Off_AlarmTimerCnt[AGC_Alarm_DL1_Index] >= MBIC_OFF_MAINTAIN_SEC){
  5021. bluecell_Currdatastatus.ALARM_DLI_AGC_Alarm &= ~ALARM_AGC_P1;
  5022. bluecell_Currdatastatus.DLI_AGC_Alarm1 = false;
  5023. }
  5024. }
  5025. if(AGC_AlarmSet[AGC_Alarm_DL2_Index] == true
  5026. &&AGC_On_AlarmTimerCnt[AGC_Alarm_DL2_Index] >= MBIC_ON_MAINTAIN_SEC){
  5027. printf("ALARM_AGC_P2 OCCUR\r\n");
  5028. bluecell_Currdatastatus.ALARM_DLI_AGC_Alarm |= ALARM_AGC_P2;
  5029. bluecell_Currdatastatus.DLI_AGC_Alarm2 = true;
  5030. }else{
  5031. if(AGC_Off_AlarmTimerCnt[AGC_Alarm_DL2_Index] >= MBIC_OFF_MAINTAIN_SEC){
  5032. bluecell_Currdatastatus.ALARM_DLI_AGC_Alarm &= ~ALARM_AGC_P2;
  5033. bluecell_Currdatastatus.DLI_AGC_Alarm2 = false;
  5034. }
  5035. }
  5036. if(AGC_AlarmSet[AGC_Alarm_DL3_Index] == true
  5037. &&AGC_On_AlarmTimerCnt[AGC_Alarm_DL3_Index] >= MBIC_ON_MAINTAIN_SEC){
  5038. printf("ALARM_AGC_P3 OCCUR\r\n");
  5039. bluecell_Currdatastatus.ALARM_DLI_AGC_Alarm |= ALARM_AGC_P3;
  5040. bluecell_Currdatastatus.DLI_AGC_Alarm3 = true;
  5041. }else{
  5042. if(AGC_Off_AlarmTimerCnt[AGC_Alarm_DL3_Index] >= MBIC_OFF_MAINTAIN_SEC){
  5043. bluecell_Currdatastatus.ALARM_DLI_AGC_Alarm &= ~ALARM_AGC_P3;
  5044. bluecell_Currdatastatus.DLI_AGC_Alarm3 = false;
  5045. }
  5046. }
  5047. if(AGC_AlarmSet[AGC_Alarm_DL3_Index] == true
  5048. &&AGC_On_AlarmTimerCnt[AGC_Alarm_DL3_Index] >= MBIC_ON_MAINTAIN_SEC){
  5049. printf("ALARM_AGC_P4 OCCUR\r\n");
  5050. bluecell_Currdatastatus.ALARM_DLI_AGC_Alarm |= ALARM_AGC_P4;
  5051. bluecell_Currdatastatus.DLI_AGC_Alarm4 = true;
  5052. }else{
  5053. if(AGC_Off_AlarmTimerCnt[AGC_Alarm_DL3_Index] >= MBIC_OFF_MAINTAIN_SEC){
  5054. bluecell_Currdatastatus.ALARM_DLI_AGC_Alarm &= ~ALARM_AGC_P4;
  5055. bluecell_Currdatastatus.DLI_AGC_Alarm4 = false;
  5056. }
  5057. }
  5058. }
  5059. }
  5060. void Temp_HighAlarmCheck(){
  5061. //double temp = 0;
  5062. //double ret = 0;
  5063. //int8_t ResdBm[4] = {0,};
  5064. if(bluecell_Currdatastatus.Temp_High_Threshold < (bluecell_Currdatastatus.DET_TEMP )){
  5065. bluecell_Currdatastatus.ALARM_TEMP_HIGH |= ENVIRONMENT_TEMPHIGH;
  5066. bluecell_Currdatastatus.Temp_High_Alarm = true;
  5067. }else{
  5068. bluecell_Currdatastatus.ALARM_TEMP_HIGH &= ~ENVIRONMENT_TEMPHIGH;
  5069. bluecell_Currdatastatus.Temp_High_Alarm = false;
  5070. }
  5071. }
  5072. void Alarm_Check(){
  5073. // double temp = 0;
  5074. // double ret = 0;
  5075. // int8_t ResdBm[4] = {0,};
  5076. if(bluecell_Currdatastatus.ALARM_MASK1 == false){
  5077. bluecell_Currdatastatus.ALARM_TEMP_HIGH = 0;
  5078. bluecell_Currdatastatus.ALARM_DLI_Level = 0;
  5079. bluecell_Currdatastatus.ALARM_DLI_SHTUTDOWN = 0;
  5080. bluecell_Currdatastatus.ALARM_DLI_AGC_Alarm = 0;
  5081. bluecell_Currdatastatus.ALARM_ULO_ALC_Alarm = 0;
  5082. bluecell_Currdatastatus.ALARM_ULO_Level = 0;
  5083. bluecell_Currdatastatus.ALARM_ULO_SHTUTDOWN = 0;
  5084. Alarm_LED_OnSet = false;
  5085. return;
  5086. }
  5087. if(bluecell_Currdatastatus.ALARM_TEMP_HIGH > 0
  5088. || bluecell_Currdatastatus.ALARM_DLI_Level > 0
  5089. || bluecell_Currdatastatus.ALARM_DLI_SHTUTDOWN > 0
  5090. || bluecell_Currdatastatus.ALARM_DLI_AGC_Alarm > 0
  5091. || bluecell_Currdatastatus.ALARM_ULO_ALC_Alarm > 0
  5092. || bluecell_Currdatastatus.ALARM_ULO_Level > 0
  5093. || bluecell_Currdatastatus.ALARM_ULO_SHTUTDOWN > 0)
  5094. {
  5095. // AlarmTimerOnSet = true;
  5096. // AlarmTimerOffSet = false;
  5097. // if(AlarmTimerOnCnt > 3000){
  5098. Alarm_LED_OnSet = true;
  5099. // }
  5100. }else{
  5101. // AlarmTimerOffSet = true;// False
  5102. // if(AlarmTimerOffCnt > 10000){
  5103. // AlarmTimerOnSet = false;
  5104. Alarm_LED_OnSet = false;
  5105. // printf("=================AlarmTimerOffCnt=================\r\n");
  5106. // }
  5107. }
  5108. Temp_HighAlarmCheck();
  5109. DLI_AGCAlarmCheck();
  5110. ULO_ALCAlarmCheck();
  5111. ULO_ShutdownAlarmCheck();
  5112. DLI_ShutdownAlarmCheck();
  5113. DLI_LevelAlarmCheck();
  5114. ULO_LevelAlarmCheck();
  5115. }
  5116. #if 0 // PYJ.2020.06.19_BEGIN --
  5117. void MBIC_ShutDown_Check(){
  5118. /*
  5119. - Timer Cnt Init
  5120. - Shutdown inc
  5121. - Path Off
  5122. */
  5123. if(ShutdownCnt_Get(MBIC_Shutdown_DL1) > MBIC_ON_SHUTDOWN_MAINTAIN_SEC){
  5124. bluecell_Currdatastatus.DLI_Shutdown_Retry_Count1++;
  5125. bluecell_Currdatastatus.ATT_DL1_PATH = true;
  5126. }
  5127. ShutdownCnt_Get(MBIC_Shutdown_DL2);
  5128. ShutdownCnt_Get(MBIC_Shutdown_DL3);
  5129. ShutdownCnt_Get(MBIC_Shutdown_DL4);
  5130. ShutdownCnt_Get(MBIC_Shutdown_UL1);
  5131. ShutdownCnt_Get(MBIC_Shutdown_UL2);
  5132. ShutdownCnt_Get(MBIC_Shutdown_UL3);
  5133. ShutdownCnt_Get(MBIC_Shutdown_UL4);
  5134. }
  5135. #endif // PYJ.2020.06.19_END --