| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278 |
- #include <stdlib.h>
- #include <stdio.h>
- #include <math.h>
- #include <rtklibc.h>
- #include "sys.h"
- #include "fs.h"
- #include "lock.h"
- #include "list.h"
- #include "paras.h"
- #include "dictionary.h"
- #include "iniparser.h"
- #include "db.h"
- #include "log.h"
- #define MALLOC malloc
- #define FREE free
- enum {
- TYPE_INT=0,
- TYPE_STR,
- TYPE_FLOAT,
- };
- enum {
- PARAS_CHECK=0,
- PARAS_READ,
- PARAS_WRITE,
- PARAS_CREATE,
- };
- extern const paras_data_t DFLT_PARAS;
- typedef struct {
- dictionary *dic;
- paras_data_t paras;
- char path[100];
-
- lock_t lck;
- }paras_handle_t;
- static paras_handle_t paraHandle={0};
- #if 1
- static int is_power3(void)
- {
- paras_handle_t *h=¶Handle;
- if(h->paras.prod.type>=PDU_AC_I3O3) {
- return 1;
- }
- return 0;
- }
- static int feq(double a, double b)
- {
- return (fabs(a-b)<(1e-6))?1:0;
- }
- static int str_cnt(char *buf, char *s)
- {
- int cnt=0;
- char *p=buf;
- while(1) {
- p = strstr(p, s);
- if(!p) break;
- cnt++;
- }
- return cnt;
- }
- static int str_del(char *b, char *s)
- {
- if(!b || !b[0]) {
- return -1;
- }
- int sl=strlen(s);
- char *p1,*p2,*b2=rt_strdup(b);
- if(!b2) return -1;
- p1=b2;
- while(1) {
- p2=strstr(p1,s); if(!p2) break;
- memcpy(b,p1,p2-p1);
- b += p2-p1; p1 = p2+sl;
- }
- strcpy(b,p1); FREE(b2);
-
- return 0;
- }
- static int str_replace(char *b, char *s1, char *s2)
- {
- if(!b || !b[0] || !s1 || !s1[0] || !s2 || !s2[0]) {
- return -1;
- }
- int l1=strlen(s1),l2=strlen(s2);
- if(l1 != l2) {
- return -1;
- }
- char *p=b;
- while(1) {
- p = strstr(p,s1);
- if(!p) break;
- memcpy(p, s2, l1);
- p += l1;
- }
- return 0;
- }
- static int ini_dump(char *path, dictionary *dic)
- {
- FILE *fp=fopen(path, "a+");
- if(!fp) {
- return -1;
- }
- iniparser_dump_ini(dic, fp);
- return fclose(fp);
- }
- static void sec_cpy(char *sec, char *key)
- {
- while((*key)!=':') *sec++ = *key++;
- *sec = 0;
- }
- static int ini_write(dictionary *dic, char *key, void *val, int len, int type, int str_chk)
- {
- int r=-1;
- char *p,sec[100],tmp[100];
- sec_cpy(sec, key);
- r = iniparser_set(dic, sec, NULL);
- if (r<0) {
- LOGE("___ini_rw section %s failed\n", sec);
- return -1;
- }
-
- if(type==TYPE_INT) {
- sprintf(tmp, "%d", *((int*)val)); p = tmp;
- }
- else if(type==TYPE_STR) {
- p = (char*)val;
- if(str_chk && p[0]==0) {
- return -1;
- }
- }
- else if(type==TYPE_FLOAT) {
- sprintf(tmp, "%0.2f", *((float*)val)); p = tmp;
- }
- else {
- return -1;
- }
- r = iniparser_set(dic, key, p);
- if(r<0) {
- LOGE("___ini_rw %s failed\n", key);
- }
- return r;
- }
- static int ini_read(dictionary *dic, char *key, void *val, int len, int type, int str_chk)
- {
- int r=0;
- if(type==TYPE_INT) {
- int t = iniparser_getint(dic, key, -1);
- if(t==-1) {
- return -1;
- }
- *(((int*)val)) = t;
- }
- else if(type==TYPE_STR) {
- ((char*)val)[0] = 0;
- char *p = (char*)iniparser_getstring(dic, key, NULL);
- if(!p) {
- return -1;
- }
- int xlen=strlen(p);
- if(str_chk && xlen==0) {
- return -1;
- }
- if(len<=xlen) {
- LOGE("___ %s val len %d longer than recv buf len %d\n", key, xlen, len);
- return -1;
- }
- strcpy((char*)val, p);
- }
- else if(type==TYPE_FLOAT) {
- double c=-10000.0;
- double f = (float)iniparser_getdouble(dic, key, c);
- if(feq(f,c)) {
- return -1;
- }
- *((float*)val) = (float)f;
- }
- return 0;
- }
- static int ini_rw(dictionary *dic, char *key, void *val, int len, int type, int io, int str_chk)
- {
- int r=-1;
- if(io==PARAS_READ) {
- r = ini_read(dic,key,val,len,type,str_chk);
- }
- else if(io==PARAS_WRITE) {
- r = ini_write(dic,key,val,len,type,str_chk);
- }
- return r;
- }
- static int proc_prod(dictionary *dic, int op, product_data_t *prod)
- {
- int r=0;
- char *p=NULL;
- char temp[100];
- char *token=NULL;
- if(op==PARAS_CHECK) {
- if(prod->type>PDU_AC_I3O1_H) {
- LOGE("___ check product.type %d is wrong\n", prod->type);
- r = -1;
- }
- return r;
- }
- else if(op==PARAS_WRITE) {
- r = proc_prod(dic, PARAS_CHECK, prod);
- if(r) {
- return -1;
- }
- }
- token = "product:id";
- if(op==PARAS_READ) {
- r = iniparser_getint(dic, token, -1);
- if(r==-1) {
- LOGE("___ iniparser_getint %s failed\n", token);
- return -1;
- } else {
- prod->id = r;
- }
- }
- else {
- sprintf(temp, "%d", prod->id);
- r = iniparser_set(dic, token, temp);
- if(r) {
- LOGE("___ iniparser_set %s failed\n", token);
- return -1;
- }
- }
- /*
- token = "product:number";
- if(op==PARAS_READ) {
- p = (char*)iniparser_getstring(dic, token, NULL);
- if(!p) {
- LOGE("___ iniparser_getstring %s failed\n", token);
- return -1;
- } else {
- strcpy(prod->number, p);
- }
- }
- else {
- r = iniparser_set(dic, token, prod->number);
- if(r) {
- LOGE("___ iniparser_set %s failed\n", token);
- return -1;
- }
- }
- */
- token = "product:name";
- if(op==PARAS_READ) {
- p = (char*)iniparser_getstring(dic, token, NULL);
- if(!p) {
- LOGE("___ iniparser_getstring %s failed\n", token);
- return -1;
- } else {
- strcpy(prod->name, p);
- }
- }
- else {
- r = iniparser_set(dic, token, prod->name);
- if(r) {
- LOGE("___ iniparser_set %s failed\n", token);
- return -1;
- }
- }
-
- token = "product:type";
- if(op==PARAS_READ) {
- r = iniparser_getint(dic, token, -1);
- if(r==-1) {
- LOGE("___ iniparser_getint %s failed\n", token);
- return -1;
- } else {
- prod->type = r;
- }
- }
- else {
- sprintf(temp, "%d", prod->type);
- r = iniparser_set(dic, token, temp);
- if(r) {
- LOGE("___ iniparser_set %s failed\n", token);
- return -1;
- }
- }
- #if 0
- token = "product:version";
- if(op==PARAS_READ) {
- p = (char*)iniparser_getstring(dic, token, NULL);
- if(!p) {
- LOGE("___ iniparser_getstring %s failed\n", token);
- return -1;
- } else {
- strcpy(prod->version, p);
- }
- }
- else {
- r = iniparser_set(dic, token, prod->version);
- if(r) {
- LOGE("___ iniparser_set %s failed\n", token);
- return -1;
- }
- }
- #endif
- token = "product:samptime";
- if(op==PARAS_READ) {
- r = iniparser_getint(dic, token, -1);
- if(r==-1) {
- LOGE("___ iniparser_getint %s failed\n", token);
- return -1;
- } else {
- prod->samp_time = r;
- }
- }
- else {
- sprintf(temp, "%d", prod->samp_time);
- r = iniparser_set(dic, token, temp);
- if(r) {
- LOGE("___ iniparser_set %s failed\n", token);
- return -1;
- }
- }
- token = "product:savetime";
- if(op==PARAS_READ) {
- r = iniparser_getint(dic, token, -1);
- if(r==-1) {
- LOGE("___ iniparser_getint %s failed\n", token);
- return -1;
- } else {
- prod->save_time = r;
- }
- }
- else {
- sprintf(temp, "%d", prod->save_time);
- r = iniparser_set(dic, token, temp);
- if(r) {
- LOGE("___ iniparser_set %s failed\n", token);
- return -1;
- }
- }
- token = "product:ph_group";
- if(op==PARAS_READ) {
- r = iniparser_getint(dic, token, -1);
- if(r==-1) {
- LOGE("___ iniparser_getint %s failed\n", token);
- return -1;
- } else {
- prod->ph_group = r;
- }
- }
- else {
- sprintf(temp, "%d", prod->ph_group);
- r = iniparser_set(dic, token, temp);
- if(r) {
- LOGE("___ iniparser_set %s failed\n", token);
- return -1;
- }
- }
- token = "product:ch_delay";
- if(op==PARAS_READ) {
- r = iniparser_getint(dic, token, -1);
- if(r==-1) {
- LOGE("___ iniparser_getint %s failed\n", token);
- return -1;
- } else {
- prod->ch_delay = r;
- }
- }
- else {
- sprintf(temp, "%d", prod->ch_delay);
- r = iniparser_set(dic, token, temp);
- if(r) {
- LOGE("___ iniparser_set %s failed\n", token);
- return -1;
- }
- }
- r = 0;
- if(op==PARAS_READ) {
- prod->count = 0;
- prod->status[0] = 0;
- r = proc_prod(dic, PARAS_CHECK, prod);
- }
- return r;
- }
- static int proc_modbus(dictionary *dic, int op, modbus_data_t *mb)
- {
- int r=0;
- char temp[100];
- char *p,*token=NULL;
- if(op==PARAS_CHECK) {
- if(mb->mode!=0 && mb->mode!=1) {
- LOGE("___ check modbus, mode %d is invalid\n", mb->mode);
- r = -1;
- }
- if(mb->mode==1 && (mb->addr==0 || mb->addr>POWER_CASCADE_MAX)) { //slave
- LOGE("___ check modbus, slave addr %d is invalid\n", mb->addr);
- r = -1;
- }
- return r;
- }
- else if (op==PARAS_WRITE) {
- r = proc_modbus(dic, PARAS_CHECK, mb);
- if(r) {
- return -1;
- }
- }
- token = "modbus:mode";
- if(op==PARAS_READ) {
- r = iniparser_getint(dic, token, -1);
- if(r==-1) {
- LOGE("___ iniparser_getint %s failed\n", token);
- return -1;
- } else {
- mb->mode = r;
- }
- }
- else {
- sprintf(temp, "%d", mb->mode);
- r = iniparser_set(dic, token, temp);
- if(r) {
- LOGE("___ iniparser_set %s failed\n", token);
- return -1;
- }
- }
- token = "modbus:address";
- if(op==PARAS_READ) {
- r = iniparser_getint(dic, token, -1);
- if(r==-1) {
- LOGE("___ iniparser_getint %s failed\n", token);
- return -1;
- } else {
- mb->addr = r;
- }
- }
- else {
- sprintf(temp, "%d", mb->addr);
- r = iniparser_set(dic, token, temp);
- if(r) {
- LOGE("___ iniparser_set %s failed\n", token);
- return -1;
- }
- }
- token = "modbus:baudrate";
- if(op==PARAS_READ) {
- r = iniparser_getint(dic, token, -1);
- if(r==-1) {
- LOGE("___ iniparser_getint %s failed\n", token);
- return -1;
- } else {
- mb->baud = r;
- }
- }
- else {
- sprintf(temp, "%d", mb->baud);
- r = iniparser_set(dic, token, temp);
- if(r) {
- LOGE("___ iniparser_set %s failed\n", token);
- return -1;
- }
- }
- r = 0;
- if(op==PARAS_READ) {
- r = proc_modbus(dic, PARAS_CHECK, mb);
- }
- return r;
- }
- static int proc_misc(dictionary *dic, int op, misc_data_t *misc)
- {
- int r=0;
- char temp[100];
- char *p,*token=NULL;
- if(op==PARAS_CHECK) {
- if(misc->watchdog<0 || misc->watchdog>1) {
- LOGE("___ check misc, watchdog is invalid, correct value is 0/1\n");
- r = -1;
- }
- if(misc->flip_time<0) {
- LOGE("___ check misc, flip_time is invalid, must greater than 0\n");
- r = -1;
- }
- if(misc->led<0 || misc->led>1) {
- LOGE("___ check misc, led is invalid, correct value is 0/1\n");
- r = -1;
- }
- if(misc->beep<0 || misc->beep>1) {
- LOGE("___ check misc, beep is invalid, correct value is 0/1\n");
- r = -1;
- }
- if(misc->rotate!=0 && misc->rotate!=90 && misc->rotate!=180 && misc->rotate!=270) {
- LOGE("___ check misc, rotate is invalid, correct value is 0/90/180/270\n");
- r = -1;
- }
- }
- else if (op==PARAS_CREATE) {
- }
- else if (op==PARAS_WRITE) {
- r = proc_misc(dic, PARAS_CHECK, misc);
- if(r) {
- return -1;
- }
- }
- token = "misc:watchdog";
- if(op==PARAS_READ) {
- r = iniparser_getint(dic, token, -1);
- if(r==-1) {
- LOGE("___ iniparser_getint %s failed\n", token);
- return -1;
- } else {
- misc->watchdog = r;
- }
- }
- else {
- sprintf(temp, "%d", misc->watchdog);
- r = iniparser_set(dic, token, temp);
- if(r) {
- LOGE("___ iniparser_set %s failed\n", token);
- return -1;
- }
- }
- token = "misc:fliptime";
- if(op==PARAS_READ) {
- r = iniparser_getint(dic, token, -1);
- if(r==-1) {
- LOGE("___ iniparser_getint %s failed\n", token);
- return -1;
- } else {
- misc->flip_time = r;
- }
- }
- else {
- sprintf(temp, "%d", misc->flip_time);
- r = iniparser_set(dic, token, temp);
- if(r) {
- LOGE("___ iniparser_set %s failed\n", token);
- return -1;
- }
- }
- token = "misc:led";
- if(op==PARAS_READ) {
- r = iniparser_getint(dic, token, -1);
- if(r==-1) {
- LOGE("___ iniparser_getint %s failed\n", token);
- return -1;
- } else {
- misc->led = r;
- }
- }
- else {
- sprintf(temp, "%d", misc->led);
- r = iniparser_set(dic, token, temp);
- if(r) {
- LOGE("___ iniparser_set %s failed\n", token);
- return -1;
- }
- }
- token = "misc:beep";
- if(op==PARAS_READ) {
- r = iniparser_getint(dic, token, -1);
- if(r==-1) {
- LOGE("___ iniparser_getint %s failed\n", token);
- return -1;
- } else {
- misc->beep = r;
- }
- }
- else {
- sprintf(temp, "%d", misc->beep);
- r = iniparser_set(dic, token, temp);
- if(r) {
- LOGE("___ iniparser_set %s failed\n", token);
- return -1;
- }
- }
- token = "misc:rotate";
- if(op==PARAS_READ) {
- r = iniparser_getint(dic, token, -1);
- if(r==-1) {
- LOGE("___ iniparser_getint %s failed\n", token);
- return -1;
- } else {
- misc->rotate = r;
- }
- }
- else {
- sprintf(temp, "%d", misc->rotate);
- r = iniparser_set(dic, token, temp);
- if(r) {
- LOGE("___ iniparser_set %s failed\n", token);
- return -1;
- }
- }
- r = 0;
- if(op==PARAS_READ) {
- r = proc_misc(dic, PARAS_CHECK, misc);
- }
- return r;
- }
- #if 0
- static int proc_ntp(char *path, int op, NTPManager *ntp)
- {
- int r=0;
- char temp[100];
- char *p,*token=NULL;
- FILE *fp=NULL;
- dictionary *dic=NULL;
- GlobalDeviceManager *dm=get_dm();
- NTPManager ntp2,*pntp=ntp;
- switch(op) {
- case PARAS_CHECK:
- {
- if(pntp->mode<0 || pntp->mode>1) {
- LOGE("___ check ntp, mode is wrong, correct value is 0/1\n");
- r = -1;
- }
- if(!pntp->ntpName[0]) {
- LOGE("___ check ntp, name is null\n");
- r = -1;
- }
- if(!pntp->ntpaddress[0]) {
- LOGE("___ check ntp, addr is null\n");
- r = -1;
- }
- if(pntp->tzone>12 || pntp->tzone<-12) {
- LOGE("___ check ntp, tzong is wrong, correct range is -12~12\n");
- r = -1;
- }
- return r;
- }
- break;
- case PARAS_CREATE:
- {
- FILE *fp = fopen(path, "a+");
- if(!fp) {
- LOGE("___ %s open failed\n", path);
- return -1;
- }
- fprintf(fp, "[ntp]\n");
- fprintf(fp, "mode = \"%d\"\n", pntp->mode);
- fprintf(fp, "name = \"%s\"\n", pntp->ntpName);
- fprintf(fp, "address = \"%s\"\n", pntp->ntpaddress);
- fprintf(fp, "port = \"%d\"\n", pntp->port);
- fprintf(fp, "tzone = \"%d\"\n", pntp->tzone);
- fprintf(fp, "\n");
- fclose(fp);
- return 0;
- }
- break;
- case PARAS_READ:
- {
- pntp = &ntp2;
- dic = iniparser_load(path); if(!dic) return -1;
- memset(pntp, 0, sizeof(NTPManager));
- r = ini_rw(dic, "ntp:mode", &pntp->mode, sizeof(pntp->mode), TYPE_INT, op, 1); if(r) goto quit;
- r = ini_rw(dic, "ntp:name", pntp->ntpName, sizeof(pntp->ntpName), TYPE_STR, op, 1); if(r) goto quit;
- r = ini_rw(dic, "ntp:address", pntp->ntpaddress, sizeof(pntp->ntpaddress), TYPE_STR, op, 1); if(r) goto quit;
- r = ini_rw(dic, "ntp:port", &pntp->port, sizeof(pntp->port), TYPE_INT, op, 1); if(r) goto quit;
- r = ini_rw(dic, "ntp:tzone", &pntp->tzone, sizeof(pntp->tzone), TYPE_INT, op, 1); if(r) goto quit;
- r = ini_rw(dic, "ntp:time", pntp->time, sizeof(pntp->time), TYPE_STR, op, 1); if(r) goto quit;
- pntp->product_id = 0;
- r = proc_ntp(path, PARAS_CHECK, pntp); if(r) goto quit;
- //r = dev_clear_table(dm->db, TAB_ID_NTP); if(r) goto quit;
- r = dev_update_ntp_info(dm->db, 0, pntp);
- }
- break;
- case PARAS_WRITE:
- {
- pntp = &ntp2;
- r = dev_get_ntp_info(dm->db, pntp); if(r) return -1;
- r = proc_ntp(path, PARAS_CHECK, pntp); if(r) return -1;
- dic = dictionary_new(0); if(!dic) return -1;
- r = ini_rw(dic, "ntp:mode", &pntp->mode, sizeof(pntp->mode), TYPE_INT, op, 1); if(r) goto quit;
- r = ini_rw(dic, "ntp:name", pntp->ntpName, sizeof(pntp->ntpName), TYPE_STR, op, 1); if(r) goto quit;
- r = ini_rw(dic, "ntp:address", pntp->ntpaddress, sizeof(pntp->ntpaddress), TYPE_STR, op, 1); if(r) goto quit;
- r = ini_rw(dic, "ntp:port", &pntp->port, sizeof(pntp->port), TYPE_INT, op, 1); if(r) goto quit;
- r = ini_rw(dic, "ntp:tzone", &pntp->tzone, sizeof(pntp->tzone), TYPE_INT, op, 1); if(r) goto quit;
- r = ini_rw(dic, "ntp:time", pntp->time, sizeof(pntp->time), TYPE_STR, op, 1); if(r) goto quit;
- r = ini_dump(path, dic);
- }
- break;
- default:
- return -1;
- }
- quit:
- iniparser_freedict(dic);
- return r;
- }
- static int proc_snmp(char *path, int op, SNMPManager *snmp)
- {
- int r=0,len=0;
- char temp[100];
- char *p,*token=NULL;
- dictionary *dic=NULL;
- SNMPManager snmp2,*psnmp=snmp;
- GlobalDeviceManager *dm=get_dm();
- switch(op) {
- case PARAS_CHECK:
- {
- if(psnmp->mode<0 || psnmp->mode>1) {
- LOGE("___ check snmp, mode %d is wrong, correct value is 0/1\n", psnmp->mode);
- r = -1;
- }
- if(psnmp->mode==1) {
- if(!psnmp->public[0]) {
- LOGE("___ check snmp, no public input\n");
- r = -1;
- }
- if(psnmp->trapmode<0 || psnmp->trapmode>1) {
- LOGE("___ check snmp, trapmode %d is wrong, correct value is 0/1\n", psnmp->trapmode);
- r = -1;
- }
- if(psnmp->version>=1 && sys_ip_check(psnmp->nmsIP)==IP_ERR) {
- LOGE("___ check snmp, nms ip is invalid\n");
- r = -1;
- }
- if(psnmp->version<0 || psnmp->version>2) {
- LOGE("___ check snmp, version %d is wrong, correct value is 0/1/2\n");
- r = -1;
- }
- if(psnmp->version==2) {
- if(!psnmp->crypt.user[0]) {
- LOGE("___ check snmp, crypt user is null\n");
- r = -1;
- }
- len = strlen(psnmp->crypt.user);
- if(len<8 || len>32) {
- LOGE("___ check snmp, crypt user length %d is wrong, correct range is 8~32 characters(english)\n", len);
- r = -1;
- }
- if(!psnmp->crypt.auth.alg[0]) {
- LOGE("___ check snmp, crypt auth algorithm is null\n");
- r = -1;
- }
- if(strcmp(psnmp->crypt.auth.alg, "MD5") && strcmp(psnmp->crypt.auth.alg, "SHA") && strcmp(psnmp->crypt.auth.alg, "SHA-224") &&
- strcmp(psnmp->crypt.auth.alg, "SHA-256") && strcmp(psnmp->crypt.auth.alg, "SHA-384") && strcmp(psnmp->crypt.auth.alg, "SHA-512")) {
- LOGE("___ check snmp, crypt auth algorithm %s is wrong, correct value is: MD5/SHA/SHA-224/SHA-256/SHA-384/SHA-512\n", psnmp->crypt.auth.alg);
- r = -1;
- }
-
- if(!psnmp->crypt.auth.passwd[0]) {
- LOGE("___ check snmp, crypt auth password is null\n");
- r = -1;
- }
- len = strlen(psnmp->crypt.auth.passwd);
- if(len<8 || len>32) {
- LOGE("___ check snmp, crypt auth password length %d is wrong, correct range is 8~32 characters(english)\n", len);
- r = -1;
- }
- if(!psnmp->crypt.priv.alg[0]) {
- LOGE("___ check snmp, crypt priv algorithm is null\n");
- r = -1;
- }
- if(strcmp(psnmp->crypt.priv.alg, "DES") && strcmp(psnmp->crypt.priv.alg, "AES")) {
-
- LOGE("___ check snmp, crypt priv algorithm %s is wrong, correct value is: 0/DES/AES\n", psnmp->crypt.priv.alg);
- r = -1;
- }
- if(!psnmp->crypt.priv.passwd[0]) {
- LOGE("___ check snmp, crypt priv password is null\n");
- r = -1;
- }
- len = strlen(psnmp->crypt.priv.passwd);
- if(len<8 || len>32) {
- LOGE("___ check snmp, crypt priv password length %d is wrong, correct range is 8~32 characters(english)\n", len);
- r = -1;
- }
- }
- }
- return r;
- }
- break;
- case PARAS_CREATE:
- {
- FILE *fp = fopen(path, "a+");
- if(!fp) {
- LOGE("___ %s open failed\n", path);
- return -1;
- }
- fprintf(fp, "[snmp]\n");
- fprintf(fp, "mode = \"%d\"\n", snmp->mode);
- fprintf(fp, "version = \"%d\"\n", snmp->version+1);
- fprintf(fp, "public = \"%s\"\n", snmp->public);
- fprintf(fp, "trap_mode = \"%d\"\n", snmp->trapmode);
- fprintf(fp, "nms_ip = \"%s\"\n", snmp->nmsIP);
- fprintf(fp, "crypt.user = \"%s\"\n", snmp->crypt.user);
- fprintf(fp, "crypt.auth.proto = \"%s\"\n", snmp->crypt.auth.alg);
- fprintf(fp, "crypt.auth.password = \"%s\"\n", snmp->crypt.auth.passwd);
- fprintf(fp, "crypt.priv.proto = \"%s\"\n", snmp->crypt.priv.alg);
- fprintf(fp, "crypt.priv.password = \"%s\"\n", snmp->crypt.priv.passwd);
- fprintf(fp, "nms_ip = \"%s\"\n", snmp->nmsIP);
- fprintf(fp, "\n");
- fclose(fp);
- return 0;
- }
- break;
- case PARAS_READ:
- {
- char ver[32];
- psnmp = &snmp2;
- dic = iniparser_load(path); if(!dic) return -1;
- memset(psnmp, 0, sizeof(SNMPManager));
- r = ini_rw(dic, "snmp:mode", &psnmp->mode, sizeof(psnmp->mode), TYPE_INT, op, 1); if(r) goto quit;
- r = ini_rw(dic, "snmp:public", psnmp->public, sizeof(psnmp->public), TYPE_STR, op, 1); if(r) goto quit;
- r = ini_rw(dic, "snmp:version", ver, sizeof(ver), TYPE_STR, op, 1); if(r) goto quit;
- if(strcmp(ver, "V1")==0) psnmp->version = 0;
- else if(strcmp(ver, "V2c")==0) psnmp->version = 1;
- else if(strcmp(ver, "V3")==0) psnmp->version = 2;
- else {r=-1; goto quit;}
- r = ini_rw(dic, "snmp:trap_mode", &psnmp->trapmode, sizeof(ver), TYPE_INT, op, 1); if(r) goto quit;
- if(psnmp->version>=1) {
- r = ini_rw(dic, "snmp:nms_ip", psnmp->nmsIP, sizeof(ver), TYPE_STR, op, 1); if(r) goto quit;
- }
- if(psnmp->version==2) {
- r = ini_rw(dic, "snmp:crypt.user", psnmp->crypt.user, sizeof(psnmp->crypt.user), TYPE_STR, op, 1); if(r) goto quit;
- r = ini_rw(dic, "snmp:crypt.auth.proto", psnmp->crypt.auth.alg, sizeof(psnmp->crypt.auth.alg), TYPE_STR, op, 1); if(r) goto quit;
- r = ini_rw(dic, "snmp:crypt.auth.password", psnmp->crypt.auth.passwd, sizeof(psnmp->crypt.auth.passwd), TYPE_STR, op, 1); if(r) goto quit;
- r = ini_rw(dic, "snmp:crypt.priv.proto", psnmp->crypt.priv.alg, sizeof(psnmp->crypt.priv.alg), TYPE_STR, op, 1); if(r) goto quit;
- if(strcmp(psnmp->crypt.priv.alg, "NO")==0) {
- strcpy(psnmp->crypt.priv.alg, "0");
- }
- r = ini_rw(dic, "snmp:crypt.priv.password", psnmp->crypt.priv.passwd, sizeof(psnmp->crypt.priv.passwd), TYPE_STR, op, 1); if(r) goto quit;
- }
- r = proc_snmp(path, PARAS_CHECK, psnmp);
- if(r==0) {
- //r = dev_clear_table(dm->db, TAB_ID_SNMP); if(r) goto quit;
- r = dev_update_snmp_info(dm->db, 0, psnmp); if(r) goto quit;
- extern int snmp_config(SNMPManager *m, int quit);
- snmp_config(psnmp, 0);
- }
- }
- break;
- case PARAS_WRITE:
- {
- char ver[32];
- psnmp = &snmp2;
- r = dev_get_snmp_info(dm->db, psnmp); if(r) return -1;
- r = proc_snmp(path, PARAS_CHECK, psnmp); if(r) return -1;
- dic = dictionary_new(0); if(r) return -1;
-
- r = ini_rw(dic, "snmp:mode", &psnmp->mode, sizeof(psnmp->mode), TYPE_INT, op, 1); if(r) goto quit;
- r = ini_rw(dic, "snmp:public", psnmp->public, sizeof(psnmp->public), TYPE_STR, op, 1); if(r) goto quit;
- if(psnmp->version==0) strcpy(ver, "V1");
- else if(psnmp->version==1) strcpy(ver, "V2c");
- else if(psnmp->version==2) strcpy(ver, "V3");
- r = ini_rw(dic, "snmp:version", ver, sizeof(ver), TYPE_STR, op, 1); if(r) goto quit;
- r = ini_rw(dic, "snmp:trap_mode", &psnmp->trapmode, sizeof(ver), TYPE_INT, op, 1); if(r) goto quit;
- r = ini_rw(dic, "snmp:nms_ip", psnmp->nmsIP, sizeof(ver), TYPE_STR, op, 1); if(r) goto quit;
- if(psnmp->version==2) {
- r = ini_rw(dic, "snmp:crypt.user", psnmp->crypt.user, sizeof(psnmp->crypt.user), TYPE_STR, op, 1); if(r) goto quit;
- r = ini_rw(dic, "snmp:crypt.auth.proto", psnmp->crypt.auth.alg, sizeof(psnmp->crypt.auth.alg), TYPE_STR, op, 1); if(r) goto quit;
- r = ini_rw(dic, "snmp:crypt.auth.password", psnmp->crypt.auth.passwd, sizeof(psnmp->crypt.auth.passwd), TYPE_STR, op, 1); if(r) goto quit;
- if(strcmp(psnmp->crypt.priv.alg, "0")==0) {
- strcpy(psnmp->crypt.priv.alg, "NO");
- }
- r = ini_rw(dic, "snmp:crypt.priv.proto", psnmp->crypt.priv.alg, sizeof(psnmp->crypt.priv.alg), TYPE_STR, op, 1); if(r) goto quit;
- r = ini_rw(dic, "snmp:crypt.priv.password", psnmp->crypt.priv.passwd, sizeof(psnmp->crypt.priv.passwd), TYPE_STR, op, 1); if(r) goto quit;
- }
- r = ini_dump(path, dic);
- }
- break;
- default:
- return -1;
- }
- quit:
- iniparser_freedict(dic);
- return r;
- }
- static int proc_mqtt(char *path, int op, mqtt_info_t *mqtt)
- {
- char *p;
- int i,j=0,r=0;
- char temp[100],token[9000];
- mqtt_server_t *ser=NULL;
- dictionary *dic=NULL;
- GlobalDeviceManager *dm=get_dm();
- mqtt_info_t mqtt2,*pmqtt=mqtt;
- switch(op) {
- case PARAS_CHECK:
- {
- for(i=0; i<MQTT_SER_MAX; i++) {
- ser = &pmqtt->ser[i];
- if(ser->mode<0 || ser->mode>1) {
- LOGE("___ check mqtt[%d], mode %d is invalid, correct is 0/1\n", i,ser->mode);
- r = -1;
- }
- if(ser->mode==1) {
- if(!ser->name[0]) {
- LOGE("___ check mqtt[%d], name %d is null\n", i);
- r = -1;
- }
- if(!ser->user[0]) {
- LOGE("___ check mqtt[%d], user is null\n", i);
- r = -1;
- }
- if(!ser->password[0]) {
- LOGE("___ check mqtt[%d], password is null\n", i);
- r = -1;
- }
- if(!ser->cid[0]) {
- LOGE("___ check mqtt[%d], cid is null\n", i);
- r = -1;
- }
- if(!ser->port[0]) {
- LOGE("___ check mqtt[%d], port is null\n", i);
- r = -1;
- }
- if(ser->id!=-1 && ser->id != i) {
- LOGE("___ check mqtt[%d], id %d is mismatch the index\n", i, ser->id);
- r = -1;
- }
- if(!ser->server[0]) {
- LOGE("___ check mqtt[%d], server is null\n", i);
- r = -1;
- }
- }
- if(r) {
- break;
- }
- }
- return r;
- }
- break;
- case PARAS_CREATE:
- {
- FILE *fp = fopen(path, "a+");
- if(!fp) {
- LOGE("___ %s open failed\n", path);
- return -1;
- }
- fprintf(fp, "[mqtt]\n");
- for(i=0; i<MQTT_SER_MAX; i++) {
- ser = &pmqtt->ser[i];
- if(ser->id>=0) {
- fprintf(fp, "broker%d.plat = \"%d\"\n", i+1,ser->plat);
- fprintf(fp, "broker%d.mode = \"%d\"\n", i+1,ser->mode);
- //fprintf(fp, "broker%d.proto = \"%s\"\n", i+1,ser->proto);
- fprintf(fp, "broker%d.name = \"%s\"\n", i+1,ser->name);
- fprintf(fp, "broker%d.server = \"%s\"\n", i+1,ser->server);
- fprintf(fp, "broker%d.port = \"%s\"\n", i+1,ser->port);
- fprintf(fp, "broker%d.client_id = \"%s\"\n", i+1,ser->cid);
- fprintf(fp, "broker%d.user = \"%s\"\n", i+1,ser->user);
- fprintf(fp, "broker%d.password = \"%s\"\n", i+1,ser->password);
- fprintf(fp, "broker%d.cert = \"%s\"\n", i+1,ser->cert);
- fprintf(fp, "\n");
- }
- }
- fclose(fp);
- return 0;
- }
- break;
- case PARAS_READ:
- {
- pmqtt = &mqtt2;
- dic = iniparser_load(path); if(!dic) return -1;
- memset(pmqtt, 0, sizeof(mqtt_info_t));
- for(i=0; i<MQTT_SER_MAX; i++) {
- ser = &pmqtt->ser[j];
- ser->id = -1;
- sprintf(token, "mqtt:broker%d.plat", i+1);
- r = ini_rw(dic, token, &ser->plat, sizeof(ser->plat), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "mqtt:broker%d.mode", i+1);
- r = ini_rw(dic, token, &ser->mode, sizeof(ser->mode), TYPE_INT, op, 1); if(r) break;
-
- #if 0
- sprintf(token, "mqtt:broker%d.proto", i+1);
- r = ini_rw(dic, token, ser->proto, TYPE_STR, op, 1); if(r) break;
- #endif
- sprintf(token, "mqtt:broker%d.name", i+1);
- r = ini_rw(dic, token, ser->name, sizeof(ser->name), TYPE_STR, op, 1); if(r) break;
-
- sprintf(token, "mqtt:broker%d.server", i+1);
- r = ini_rw(dic, token, ser->server, sizeof(ser->server), TYPE_STR, op, 1); if(r) break;
- sprintf(token, "mqtt:broker%d.port", i+1);
- r = ini_rw(dic, token, ser->port, sizeof(ser->port), TYPE_STR, op, 1); if(r) break;
- sprintf(token, "mqtt:broker%d.client_id", i+1);
- r = ini_rw(dic, token, ser->cid, sizeof(ser->cid), TYPE_STR, op, 1); if(r) break;
- sprintf(token, "mqtt:broker%d.user", i+1);
- r = ini_rw(dic, token, ser->user, sizeof(ser->user), TYPE_STR, op, 1); if(r) break;
- sprintf(token, "mqtt:broker%d.password", i+1);
- r = ini_rw(dic, token, ser->password, sizeof(ser->password), TYPE_STR, op, 1); if(r) break;
- sprintf(token, "mqtt:broker%d.cert", i+1);
- r = ini_rw(dic, token, ser->cert, sizeof(ser->cert), TYPE_STR, op, 0); if(r) break;
- str_replace(ser->cert,";;", "\r\n");
- ser->id = j;
- j++;
- }
- r = proc_mqtt(path, PARAS_CHECK, pmqtt); if(r) goto quit;
- r = dev_clear_table(dm->db, TAB_ID_MQTT); if(r) goto quit;
- r = dev_mqtt_update_info(dm->db, pmqtt);
- }
- break;
- case PARAS_WRITE:
- {
- int cnt=0;
- pmqtt = &mqtt2;
- r = dev_mqtt_get(dm->db, pmqtt); if(r) return -1;
- r = proc_mqtt(path, PARAS_CHECK, pmqtt); if(r) return -1;
- dic = dictionary_new(0); if(!dic) return -1;
- for(i=0; i<MQTT_SER_MAX; i++) {
- ser = &pmqtt->ser[i];
- if(ser->id==-1) break;
- sprintf(token, "mqtt:broker%d.plat", i+1);
- r = ini_rw(dic, token, &ser->plat, sizeof(ser->plat), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "mqtt:broker%d.mode", i+1);
- r = ini_rw(dic, token, &ser->mode, sizeof(ser->mode), TYPE_INT, op, 1); if(r) break;
-
- #if 0
- sprintf(token, "mqtt:broker%d.proto", i+1);
- r = ini_rw(dic, token, ser->proto, TYPE_STR, op, 1); if(r) break;
- #endif
- sprintf(token, "mqtt:broker%d.name", i+1);
- r = ini_rw(dic, token, ser->name, sizeof(ser->name), TYPE_STR, op, 1); if(r) break;
-
- sprintf(token, "mqtt:broker%d.server", i+1);
- r = ini_rw(dic, token, ser->server, sizeof(ser->server), TYPE_STR, op, 1); if(r) break;
- sprintf(token, "mqtt:broker%d.port", i+1);
- r = ini_rw(dic, token, ser->port, sizeof(ser->port), TYPE_STR, op, 1); if(r) break;
- sprintf(token, "mqtt:broker%d.client_id", i+1);
- r = ini_rw(dic, token, ser->cid, sizeof(ser->cid), TYPE_STR, op, 1); if(r) break;
- sprintf(token, "mqtt:broker%d.user", i+1);
- r = ini_rw(dic, token, ser->user, sizeof(ser->user), TYPE_STR, op, 1); if(r) break;
- sprintf(token, "mqtt:broker%d.password", i+1);
- r = ini_rw(dic, token, ser->password, sizeof(ser->password), TYPE_STR, op, 1); if(r) break;
- sprintf(token, "mqtt:broker%d.cert", i+1);
- str_replace(ser->cert, "\r\n", ";;");
- r = ini_rw(dic, token, ser->cert, sizeof(ser->cert), TYPE_STR, op, 0); if(r) break;
- cnt++;
- }
- if(cnt>0) {
- r = ini_dump(path, dic);
- }
- }
- break;
- default:
- return -1;
- }
- quit:
- iniparser_freedict(dic);
- return r;
- }
- static int proc_mail(char *path, int op, mail_info_t *mail)
- {
- int i,r=0;
- dictionary *dic=NULL;
- char *p,*tok,token[100],temp[100];
- GlobalDeviceManager *dm=get_dm();
- mail_info_t mail2,*pmail=mail;
- mail_send_t *send=&pmail->send;
- switch(op) {
- case PARAS_CHECK:
- {
- send->id = 0;
- if(send->mode<0 || send->mode>1) {
- LOGE("___ check mail, send.mode is invalid, correct value is 0/1\n");
- r = -1;
- }
- if(send->mode==1) {
- if(!send->server[0]) {
- LOGE("___ check mail, send.server is null\n");
- r = -1;
- }
- if(!send->port[0]) {
- LOGE("___ check mail, send.server is null\n");
- r = -1;
- }
- if(!send->account[0]) {
- LOGE("___ check mail, send.account is null\n");
- r = -1;
- }
- if(!send->password[0]) {
- LOGE("___ check mail, send.password is null\n");
- r = -1;
- }
- if(!send->auth[0]) {
- LOGE("___ check mail, send.account is null\n");
- r = -1;
- }
- for(i=0; i<MAIL_RECV_MAX; i++) {
- mail_recv_t *recv=&pmail->recv[i];
- if(recv->use<0 || recv->use>1) {
- LOGE("___ check mail, recv[%d].use is invalid, correct value is 0/1", i);
- r = -1;
- }
- if(recv->use==1) {
- if(recv->id != i) {
- LOGE("___ check mail, recv[%d].id %d mismatch it's index\n", i,recv->id);
- r = -1;
- }
- if(!recv[i].account[0]) {
- LOGE("___ check mail, recv[%d].account is null", i);
- r = -1;
- }
- }
- if(r) {
- break;
- }
- }
- }
- return r;
- }
- break;
- case PARAS_CREATE:
- {
- FILE *fp = fopen(path, "a+");
- if(!fp) {
- LOGE("___ %s open failed\n", path);
- return -1;
- }
- fprintf(fp, "[mail]\n");
- fprintf(fp, "send.mode = \"%d\"\n", send->mode);
- fprintf(fp, "send.server = \"%s\"\n", send->account);
- fprintf(fp, "send.password = \"%s\"\n", send->password);
- fprintf(fp, "send.server = \"%s\"\n", send->server);
- fprintf(fp, "send.port = \"%s\"\n", send->port);
- fprintf(fp, "send.auth = \"%s\"\n", send->auth);
- fprintf(fp, "send.ca = \"%s\"\n", send->ca[0]?send->ca:"");
- fprintf(fp, "\n");
- for(i=0; i<MAIL_RECV_MAX; i++) {
- mail_recv_t *recv=&pmail->recv[i];
- if(recv->use==1) {
- fprintf(fp, "recv%d.use = \"%d\"\n", i+1,recv->use);
- fprintf(fp, "recv%d.account = \"%s\"\n", i+1,recv->account);
- fprintf(fp, "\n");
- }
- }
- fclose(fp);
- return 0;
- }
- break;
- case PARAS_READ:
- {
- pmail = &mail2;
- send = &pmail->send;
- send->id = 0;
- mail_recv_t *recv=NULL;
- dic = iniparser_load(path); if(!dic) return -1;
- memset(pmail, 0, sizeof(mail_info_t));
- send->id = 0;
- r = ini_rw(dic, "mail:send.mode", &send->mode, sizeof(send->mode), TYPE_INT, op, 1); if(r) goto quit;
- r = ini_rw(dic, "mail:send.server", send->server, sizeof(send->server), TYPE_STR, op, 1); if(r) goto quit;
- r = ini_rw(dic, "mail:send.port", send->port, sizeof(send->port), TYPE_STR, op, 1); if(r) goto quit;
- r = ini_rw(dic, "mail:send.auth", send->auth, sizeof(send->auth), TYPE_STR, op, 1); if(r) goto quit;
- r = ini_rw(dic, "mail:send.ca", send->ca, sizeof(send->ca), TYPE_STR, op, 0); if(r) goto quit;
- r = ini_rw(dic, "mail:send.account", send->account, sizeof(send->account), TYPE_STR, op, 1); if(r) goto quit;
- r = ini_rw(dic, "mail:send.password", send->password, sizeof(send->password), TYPE_STR, op, 1); if(r) goto quit;
- for(i=0; i<MAIL_RECV_MAX; i++) {
- recv = &pmail->recv[i];
- recv->id = i;
- sprintf(token, "mail:recv%d.account", i+1);
- r = ini_rw(dic, token, recv->account, sizeof(recv->account), TYPE_STR, op, 1); if(r) break;
- recv->use = 1;
- }
- r = dev_clear_table(dm->db, TAB_ID_MAIL); if(r) goto quit;
- r = dev_mail_update_send(dm->db, &pmail->send); if(r) goto quit;
- r = dev_mail_update_recv(dm->db, pmail->recv); if(r) goto quit;
- }
- break;
- case PARAS_WRITE:
- {
- int cnt=0;
- pmail = &mail2;
- send = &pmail->send;
-
- r = dev_mail_get(dm->db, pmail); if(r) return -1;
- dic = dictionary_new(0); if(!dic) return -1;
- r = ini_rw(dic, "mail:send.mode", &send->mode, sizeof(send->mode), TYPE_INT, op, 1); if(r) goto quit;
- r = ini_rw(dic, "mail:send.server", send->server, sizeof(send->server), TYPE_STR, op, 1); if(r) goto quit;
- r = ini_rw(dic, "mail:send.port", send->port, sizeof(send->port), TYPE_STR, op, 1); if(r) goto quit;
- r = ini_rw(dic, "mail:send.auth", send->auth, sizeof(send->auth), TYPE_STR, op, 1); if(r) goto quit;
- r = ini_rw(dic, "mail:send.ca", send->ca, sizeof(send->ca), TYPE_STR, op, 0); if(r) goto quit;
- r = ini_rw(dic, "mail:send.account", send->account, sizeof(send->account), TYPE_STR, op, 1); if(r) goto quit;
- r = ini_rw(dic, "mail:send.password", send->password, sizeof(send->password), TYPE_STR, op, 1); if(r) goto quit;
- for(i=0; i<MAIL_RECV_MAX; i++) {
- mail_recv_t *recv=&pmail->recv[i];
- sprintf(token, "mail:recv%d.account", i+1);
- r = ini_rw(dic, token, recv->account, sizeof(recv->account), TYPE_STR, op, 1); if(r) break;
- }
- r = ini_dump(path, dic);
- }
- break;
- default:
- return -1;
- }
- quit:
- iniparser_freedict(dic);
- return r;
- }
- static int proc_role(char *path, int op, role_data_t *role, handle_t l)
- {
- int i=1,r=0;
- char temp[100];
- char *p,token[100];
- dictionary *dic=NULL;
- role_data_t role2,*prole=role;
- switch(op) {
- case PARAS_CHECK:
- {
- if(!prole->roleName[0]) {
- LOGE("___ check role, roleName is null\n");
- r = -1;
- }
- if(prole->roleLevel<0) {
- LOGE("___ check role, roleLevel is invalid\n");
- r = -1;
- }
- if(!prole->roleAuthority[0]) {
- LOGE("___ check role, roleAuthority is null\n");
- r = -1;
- }
- return r;
- }
- break;
- case PARAS_CREATE:
- {
- FILE *fp=fopen(path, "a+");
- if(!fp) {
- LOGE("___ %s open failed\n", path);
- return -1;
- }
- get_time_str(temp, sizeof(temp), time(NULL));
- fprintf(fp, "[role]\n");
- fprintf(fp, "role1.name = \"super admin\"\n");
- fprintf(fp, "role1.level = \"0\"\n");
- fprintf(fp, "role1.auth = \"1,2,3,4,5,6\"\n");
- fprintf(fp, "role1.sort = \"1\"\n");
- fprintf(fp, "role1.time = \"%s\"\n", temp);
- fprintf(fp, "\n");
- fprintf(fp, "role2.name = \"admin\"\n");
- fprintf(fp, "role2.level = \"1\"\n");
- fprintf(fp, "role2.auth = \"1,2,3\"\n");
- fprintf(fp, "role2.sort = \"2\"\n");
- fprintf(fp, "role3.time = \"%s\"\n", temp);
- fprintf(fp, "\n");
- fprintf(fp, "role3.name = \"normal\"\n");
- fprintf(fp, "role3.level = \"2\"\n");
- fprintf(fp, "role3.auth = \"1,2\"\n");
- fprintf(fp, "role3.sort = \"3\"\n");
- fprintf(fp, "role3.time = \"%s\"\n", temp);
- fprintf(fp, "\n");
- fclose(fp);
- return 0;
- }
- break;
- case PARAS_READ:
- {
- int x,chk_ok=0,cnt_ok=0;
- prole = &role2;
- dic = iniparser_load(path); if(!dic) return -1;
- memset(prole, 0, sizeof(RoleInfo));
- for(x=0; x<2; x++) {
- i = 1;
- while(1) {
- prole->roleID = i;
- sprintf(token, "role:role%d.name", i);
- r = ini_rw(dic, token, prole->roleName, sizeof(prole->roleName), TYPE_STR, op, 1); if(r) break;
- sprintf(token, "role:role%d.level", i);
- r = ini_rw(dic, token, &prole->roleLevel, sizeof(prole->roleLevel), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "role:role%d.auth", i);
- r = ini_rw(dic, token, prole->roleAuthority, sizeof(prole->roleAuthority), TYPE_STR, op, 1); if(r) break;
- sprintf(token, "role:role%d.sort", i);
- r = ini_rw(dic, token, &prole->roleSort, sizeof(prole->roleAuthority), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "role:role%d.time", i);
- r = ini_rw(dic, token, prole->createTime, sizeof(prole->createTime), TYPE_STR, op, 1); if(r) break;
- if(chk_ok==0) {
- r = proc_role(path, PARAS_CHECK, prole, NULL); if(r) break;
- xlist_append(l, 0, prole, sizeof(RoleInfo));
- cnt_ok++;
- }
- else {
- r = dev_insert_role_info(dm->db, prole); if(r) break;
- }
- i++;
- }
- if(x==0) {
- if(cnt_ok==0) break;
- chk_ok = 1;
- r = dev_clear_table(dm->db, TAB_ID_ROLE); if(r) break;
- }
- else {
- if(r) {
- if(i>cnt_ok) r = 0;
- break;
- }
- }
- }
- }
- break;
- case PARAS_WRITE:
- {
- int cnt=0;
- RoleInfo *tmp,*node,*next;
-
- prole = &role2;
- INIT_LIST_HEAD(&prole->list);
- r = dev_get_role_info(dm->db, prole); if(r) return -1;
- dic = dictionary_new(0); if(!dic) return -1;
- list_for_each_entry(tmp, &prole->list, list) {
- if(!tmp) break;
- r = proc_role(path, PARAS_CHECK, tmp, NULL); if(r) break;
- sprintf(token, "role:role%d.name", i);
- r = ini_rw(dic, token, tmp->roleName, sizeof(tmp->roleName), TYPE_STR, op, 1); if(r) break;
- sprintf(token, "role:role%d.level", i);
- r = ini_rw(dic, token, &tmp->roleLevel, sizeof(tmp->roleLevel), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "role:role%d.auth", i);
- r = ini_rw(dic, token, tmp->roleAuthority, sizeof(tmp->roleAuthority), TYPE_STR, op, 1); if(r) break;
- sprintf(token, "role:role%d.sort", i);
- r = ini_rw(dic, token, &tmp->roleSort, sizeof(tmp->roleAuthority), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "role:role%d.time", i);
- get_curtime_str(temp, sizeof(temp));
- r = ini_rw(dic, token, temp, sizeof(temp), TYPE_STR, op, 1); if(r) break;
- i++;
- cnt++;
- }
- if(cnt>0) {
- r = ini_dump(path, dic);
- }
- }
- break;
- default:
- return -1;
- }
- iniparser_freedict(dic);
- return r;
- }
- static int find_role_id(handle_t l, node_t *node, node_t *xd, void *arg, int *act)
- {
- int id=(*(int*)arg);
- role_data_t *info=(RoleInfo*)xd->buf;
- if(id==info->roleID) {
- *act = LIST_ACT_STOP;
- return 0;
- }
- return -1;
- }
- static int proc_user(char *path, int op, user_data_t *user, handle_t l)
- {
- int i=1,r=0;
- char temp[100];
- char *p,token[100];
- dictionary *dic=NULL;
- user_data_t user2,*puser=user;
- switch(op) {
- case PARAS_CHECK:
- {
- if(!puser->userName[0]) {
- LOGE("___ check user, userName is null\n");
- r = -1;
- }
- if(!puser->userPW[0]) {
- LOGE("___ check user, userPW is invalid\n");
- r = -1;
- }
- if(!puser->nickName[0]) {
- LOGE("___ check user, nickName is null\n");
- r = -1;
- }
- if(!puser->createTime[0]) {
- LOGE("___ check user, createTime is null\n");
- r = -1;
- }
- return r;
- }
- break;
- case PARAS_CREATE:
- {
- FILE *fp=fopen(path, "a+");
- if(!fp) {
- LOGE("___ %s open failed\n", path);
- return -1;
- }
- get_time_str(temp, sizeof(temp), time(NULL));
- fprintf(fp, "[user]\n");
- fprintf(fp, "user1.userName = \"admin\"\n");
- fprintf(fp, "user1.userPW = \"admin\"\n");
- fprintf(fp, "user1.nickName = \"administer\"\n");
- fprintf(fp, "user1.roleID = \"1\"\n");
- fprintf(fp, "user1.createTime = \"%s\"\n", temp);
- fprintf(fp, "\n");
- fprintf(fp, "user2.userName = \"user\"\n");
- fprintf(fp, "user2.userPW = \"123456\"\n");
- fprintf(fp, "user2.nickName = \"users\"\n");
- fprintf(fp, "user2.roleID = \"3\"\n");
- fprintf(fp, "user2.createTime = \"%s\"\n", temp);
- fprintf(fp, "\n");
- fclose(fp);
- return 0;
- }
- break;
- case PARAS_READ:
- {
- int x,chk_ok=0,cnt_ok=0;
- RoleInfo role;
- puser = &user2;
- dic = iniparser_load(path); if(!dic) return -1;
- memset(puser, 0, sizeof(UserInfo));
- for(x=0; x<2; x++) {
- i = 1;
- while(1) {
- puser->userID = i;
- sprintf(token, "user:user%d.name", i);
- r = ini_rw(dic, token, puser->userName, sizeof(puser->userName), TYPE_STR, op, 1); if(r) break;
- sprintf(token, "user:user%d.password", i);
- r = ini_rw(dic, token, &puser->userPW, sizeof(puser->userPW), TYPE_STR, op, 1); if(r) break;
- sprintf(token, "user:user%d.nick_name", i);
- r = ini_rw(dic, token, puser->nickName, sizeof(puser->nickName), TYPE_STR, op, 1); if(r) break;
- sprintf(token, "user:user%d.role_id", i);
- r = ini_rw(dic, token, &puser->roleID, sizeof(puser->roleID), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "user:user%d.time", i);
- r = ini_rw(dic, token, puser->createTime, sizeof(puser->createTime), TYPE_STR, op, 1); if(r) break;
- if(chk_ok==0) {
- r = proc_user(path, PARAS_CHECK, puser, NULL); if(r) break;
- if(l) {
- r = xlist_iterator(l, NULL, find_role_id, &puser->roleID);
- if(r) {
- LOGE("___ roleID %d not found in role sett options!\n", puser->roleID);
- break;
- }
- }
- cnt_ok++;
- }
- else {
- r = dev_insert_user_info(dm->db, puser); if(r) break;
- }
- i++;
- }
- if(x==0) {
- if(cnt_ok==0) break;
- chk_ok = 1;
- r = dev_clear_table(dm->db, TAB_ID_USER); if(r) break;
- }
- else {
- if(r) {
- if(i>cnt_ok) r = 0;
- break;
- }
- }
- }
- }
- break;
- case PARAS_WRITE:
- {
- int cnt=0;
- UserInfo *tmp,*node,*next;
-
- puser = &user2;
- INIT_LIST_HEAD(&puser->list);
- r = dev_get_user_info(dm->db, puser); if(r) return -1;
- dic = dictionary_new(0); if(!dic) return -1;
- list_for_each_entry(tmp, &puser->list, list) {
- if(!tmp) break;
- r = proc_user(path, PARAS_CHECK, tmp, NULL); if(r) break;
- sprintf(token, "user:user%d.name", i);
- r = ini_rw(dic, token, tmp->userName, sizeof(tmp->userName), TYPE_STR, op, 1); if(r) break;
- sprintf(token, "user:user%d.password", i);
- r = ini_rw(dic, token, &tmp->userPW, sizeof(tmp->userPW), TYPE_STR, op, 1); if(r) break;
- sprintf(token, "user:user%d.nick_name", i);
- r = ini_rw(dic, token, tmp->nickName, sizeof(tmp->nickName), TYPE_STR, op, 1); if(r) break;
- sprintf(token, "user:user%d.role_id", i);
- r = ini_rw(dic, token, &tmp->roleID, sizeof(tmp->roleID), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "user:user%d.time", i);
- r = ini_rw(dic, token, tmp->createTime, sizeof(tmp->createTime), TYPE_STR, op, 1); if(r) break;
- i++;
- cnt++;
- }
- list_for_each_entry_safe(node,next,&puser->list,list) {
- list_del(&node->list); free(node);
- }
- if(cnt>0) {
- r = ini_dump(path, dic);
- }
- }
- break;
- default:
- return -1;
- }
- iniparser_freedict(dic);
- return r;
- }
- static int proc_group(char *path, int op, GroupInfo *group)
- {
- int i=1,r=0;
- char temp[100];
- char *p,token[100];
- dictionary *dic=NULL;
- GroupInfo group2,*pgroup=group;
- switch(op) {
- case PARAS_CHECK:
- {
- if(!pgroup->GroupChList[0]) {
- LOGE("___ check group, GroupChList is null\n");
- r = -1;
- }
- if(!pgroup->GroupName[0]) {
- LOGE("___ check group, GroupName is null\n");
- r = -1;
- }
- return r;
- }
- break;
- case PARAS_CREATE:
- {
- FILE *fp=fopen(path, "a+");
- if(!fp) {
- LOGE("___ %s open failed\n", path);
- return -1;
- }
- fprintf(fp, "[group]\n");
- fprintf(fp, "\n");
- fclose(fp);
- return 0;
- }
- break;
- case PARAS_READ:
- {
- int x,chk_ok=0,cnt_ok=0;
- pgroup = &group2;
- dic = iniparser_load(path); if(!dic) return -1;
- memset(pgroup, 0, sizeof(GroupInfo));
- for(x=0; x<2; x++) {
- i = 1;
- while(1) {
- sprintf(token, "group:group%d.id", i);
- r = ini_rw(dic, token, &pgroup->GroupID, sizeof(pgroup->GroupID), TYPE_STR, op, 1); if(r) break;
- sprintf(token, "group:group%d.name", i);
- r = ini_rw(dic, token, pgroup->GroupName, sizeof(pgroup->GroupName), TYPE_STR, op, 1); if(r) break;
- sprintf(token, "group:group%d.ch_list", i);
- r = ini_rw(dic, token, pgroup->GroupChList, sizeof(pgroup->GroupChList), TYPE_STR, op, 1); if(r) break;
- if(chk_ok==0) {
- r = proc_group(path, PARAS_CHECK, pgroup); if(r) break;
- cnt_ok++;
- }
- else {
- r = dev_insert_group_info(dm->db, pgroup); if(r) break;
- }
- i++;
- }
-
- if(x==0) {
- if(cnt_ok==0) break;
- chk_ok = 1;
- r = dev_clear_table(dm->db, TAB_ID_GROUP); if(r) break;
- }
- else {
- if(r) {
- if(i>cnt_ok) r = 0;
- break;
- }
- }
- }
- }
- break;
- case PARAS_WRITE:
- {
- int cnt=0;
- GroupInfo *tmp,*node,*next;
- pgroup = &group2;
- INIT_LIST_HEAD(&pgroup->list);
- r = dev_get_group_info(dm->db, pgroup); if(r) return -1;
- r = proc_group(path, PARAS_CHECK, pgroup); if(r) return -1;
- dic = dictionary_new(0); if(!dic) return -1;
- list_for_each_entry(tmp, &pgroup->list, list) {
- if(!tmp) break;
- sprintf(token, "group:group%d.id", i);
- r = ini_rw(dic, token, &tmp->GroupID, sizeof(tmp->GroupID), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "group:group%d.name", i);
- r = ini_rw(dic, token, tmp->GroupName, sizeof(tmp->GroupName), TYPE_STR, op, 1); if(r) break;
- sprintf(token, "group%d.ch_list", i);
- sprintf(temp, "%s", tmp->GroupChList);
- r = ini_rw(dic, token, tmp->GroupChList, sizeof(tmp->GroupChList), TYPE_STR, op, 1); if(r) break;
- i++;
- cnt++;
- }
- list_for_each_entry_safe(node,next,&pgroup->list,list) {
- list_del(&node->list); free(node);
- }
- if(cnt>0) {
- r = ini_dump(path, dic);
- }
- }
- break;
- default:
- return -1;
- }
- iniparser_freedict(dic);
- return r;
- }
- static int proc_sensor(char *path, int op, GlobalSensorManger *sensor)
- {
- int i=1,j,k,r=0;
- char temp[100];
- char *p,token[100];
- dictionary *dic=NULL;
- GlobalSensorManger sensor2,*psensor=sensor;
- GlobalDeviceManager *dm=get_dm();
- switch(op) {
- case PARAS_CHECK:
- {
- p = strstr(psensor->sensor_port_name, "IN");
- if(psensor->sensor_id<0) {
- LOGE("___ check sensor, sensor_id %d is invalid, must >0\n",psensor->sensor_id);
- r = -1;
- }
- if(!p && psensor->sensor_addr<=0) {
- LOGE("___ check sensor, sensor_addr %d is invalid, must >0\n",psensor->sensor_addr);
- r = -1;
- }
- if(!p && psensor->sensor_baud<=0) {
- LOGE("___ check sensor, sensor_baud %d is invalid, must >0\n",psensor->sensor_baud);
- r = -1;
- }
- if(!psensor->sensor_name[0]) {
- LOGE("___ check sensor, sensor_name is null\n");
- r = -1;
- }
- if(psensor->sensor_interface_type<1 || psensor->sensor_interface_type>2) {
- LOGE("___ check sensor, sensor_interface_type %d is invalid, must be 1/2\n",psensor->sensor_interface_type);
- r = -1;
- }
- return r;
- }
- break;
- case PARAS_CREATE:
- {
- FILE *fp = fopen(path, "a+");
- if(!fp) {
- LOGE("___ %s open failed\n", path);
- return -1;
- }
- typedef struct {
- int iface;
- int type;
- char *name;
- char *port;
- int baudrate;
- int addr;
- int vcnt;
- }sensor_info_t;
- #define SENSOR_MAX 7
- sensor_info_t sinfo[SENSOR_MAX]={
- { .iface = 1, .type=SENSOR_TYPE_TEMP_HUMI, .name="A", .port="COM2", .baudrate=9600, .addr=1, .vcnt=2 },
- { .iface = 2, .type=SENSOR_TYPE_SMOKE, .name="B", .port="IN1", .baudrate=9600, .addr=0, .vcnt=1 },
- { .iface = 2, .type=SENSOR_TYPE_WATER, .name="C", .port="IN2", .baudrate=9600, .addr=0, .vcnt=1 },
- { .iface = 2, .type=SENSOR_TYPE_ACCESS, .name="D", .port="IN3", .baudrate=9600, .addr=0, .vcnt=1 },
- { .iface = 1, .type=SENSOR_TYPE_GAS, .name="E", .port="COM1", .baudrate=9600, .addr=2, .vcnt=1 },
- { .iface = 1, .type=SENSOR_TYPE_AIR_PRESS, .name="F", .port="COM3", .baudrate=9600, .addr=3, .vcnt=2 },
- { .iface = 1, .type=SENSOR_TYPE_AIR_COND, .name="G", .port="COM4", .baudrate=9600, .addr=4, .vcnt=1 },
- };
- fprintf(fp, "[sensor]\n");
- for(i=0; i<SENSOR_MAX; i++) {
- fprintf(fp, "sensor%d.id = \"%d\"", i+1, i+1);
- fprintf(fp, "sensor%d.type = \"%d\"", i+1, sinfo[i].type);
- fprintf(fp, "sensor%d.name = \"%s\"", i+1, sinfo[i].name);
- fprintf(fp, "sensor%d.iface = \"%d\"", i+1, sinfo[i].iface);
- fprintf(fp, "sensor%d.port = \"%s\"", i+1, sinfo[i].port);
- fprintf(fp, "sensor%d.baudrate = \"%d\"", i+1, sinfo[i].baudrate);
- fprintf(fp, "sensor%d.addr = \"%d\"", i+1, sinfo[i].addr);
- fprintf(fp, "sensor%d.staus = \"0\"", i+1);
- fprintf(fp, "sensor%d.vcnt = \"%d\"", i+1, sinfo[i].vcnt);
- for(j=0; j<2; j++) {
- fprintf(fp, "sensor%d.v%d.up.en = \"0\"", i+1, j+1);
- fprintf(fp, "sensor%d.v%d.up.th = \"0\"", i+1, j+1);
- fprintf(fp, "sensor%d.v%d.up.th_t = \"0\"", i+1, j+1);
- fprintf(fp, "sensor%d.v%d.up.th_p = \"0\"", i+1, j+1);
- fprintf(fp, "sensor%d.v%d.lo.en = \"0\"", i+1, j+1);
- fprintf(fp, "sensor%d.v%d.lo.th = \"0\"", i+1, j+1);
- fprintf(fp, "sensor%d.v%d.lo.th_t = \"0\"", i+1, j+1);
- fprintf(fp, "sensor%d.v%d.lo.th_p = \"0\"", i+1, j+1);
- }
- fprintf(fp, "\n");
- }
- fclose(fp);
- return 0;
- }
- break;
- case PARAS_READ:
- {
- float f;
- int x,chk_ok=0,cnt_ok=0;
- psensor = &sensor2;
- dic = iniparser_load(path); if(!dic) return -1;
- memset(psensor, 0, sizeof(GlobalSensorManger));
- for(x=0; x<2; x++) {
- i = 1;
- while(1) {
- sprintf(token, "sensor:sensor%d.id", i);
- r = ini_rw(dic, token, &psensor->sensor_id, sizeof(psensor->sensor_id), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "sensor:sensor%d.type", i);
- r = ini_rw(dic, token, &psensor->sensor_type, sizeof(psensor->sensor_type), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "sensor:sensor%d.name", i);
- r = ini_rw(dic, token, psensor->sensor_name, sizeof(psensor->sensor_name), TYPE_STR, op, 1); if(r) break;
- sprintf(token, "sensor:sensor%d.iface", i);
- r = ini_rw(dic, token, &psensor->sensor_interface_type, sizeof(psensor->sensor_interface_type), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "sensor:sensor%d.port", i);
- r = ini_rw(dic, token, psensor->sensor_port_name, sizeof(psensor->sensor_port_name), TYPE_STR, op, 1); if(r) break;
- sprintf(token, "sensor:sensor%d.addr", i);
- r = ini_rw(dic, token, &psensor->sensor_addr, sizeof(psensor->sensor_addr), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "sensor:sensor%d.baudrate", i);
- r = ini_rw(dic, token, &psensor->sensor_baud, sizeof(psensor->sensor_baud), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "sensor:sensor%d.vcnt", i);
- r = ini_rw(dic, token, &psensor->sensor_val_count, sizeof(psensor->sensor_val_count), TYPE_INT, op, 1); if(r) break;
- //////////////////////
- GlobalSensorOverManage *pover=&psensor->over_manager;
- for(j=1; j<=2; j++) {
- for(k=1; k<=2; k++) {
- if(j==1) {
- if(k==1) {
- sprintf(token, "sensor:sensor%d.v%d.up.en", i, j);
- r = ini_rw(dic, token, &pover->sensor_val1_upper_enabled, sizeof(pover->sensor_val1_upper_enabled), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "sensor:sensor%d.v%d.up.th", i, j);
- r = ini_rw(dic, token, &pover->sensor_val1_upper_threshold, sizeof(pover->sensor_val1_upper_threshold), TYPE_FLOAT, op, 1); if(r) break;
- sprintf(token, "sensor:sensor%d.v%d.up.th_act", i, j);
- r = ini_rw(dic, token, &pover->sensor_val1_upper_threshold_ctrl, sizeof(pover->sensor_val1_upper_threshold_ctrl), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "sensor:sensor%d.v%d.up.th_para", i, j);
- r = ini_rw(dic, token, &pover->sensor_val1_upper_threshold_ctrl_para, sizeof(pover->sensor_val1_upper_threshold_ctrl_para), TYPE_INT, op, 1); if(r) break;
- }
- else {
- sprintf(token, "sensor:sensor%d.v%d.lo.en", i, j);
- r = ini_rw(dic, token, &pover->sensor_val1_lower_enabled, sizeof(pover->sensor_val1_lower_enabled), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "sensor:sensor%d.v%d.lo.th", i, j);
- r = ini_rw(dic, token, &pover->sensor_val1_lower_threshold, sizeof(pover->sensor_val1_lower_threshold), TYPE_FLOAT, op, 1); if(r) break;
- sprintf(token, "sensor:sensor%d.v%d.lo.th_act", i, j);
- r = ini_rw(dic, token, &pover->sensor_val1_lower_threshold_ctrl, sizeof(pover->sensor_val1_lower_threshold_ctrl), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "sensor:sensor%d.v%d.lo.th_para", i, j);
- r = ini_rw(dic, token, &pover->sensor_val1_lower_threshold_ctrl_para, sizeof(pover->sensor_val1_lower_threshold_ctrl_para), TYPE_INT, op, 1); if(r) break;
- }
- }
- else {
- if(k==1) {
- sprintf(token, "sensor:sensor%d.v%d.up.en", i, j);
- r = ini_rw(dic, token, &pover->sensor_val2_upper_enabled, sizeof(pover->sensor_val2_upper_enabled), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "sensor:sensor%d.v%d.up.th", i, j);
- r = ini_rw(dic, token, &pover->sensor_val2_upper_threshold, sizeof(pover->sensor_val2_upper_threshold), TYPE_FLOAT, op, 1); if(r) break;
- sprintf(token, "sensor:sensor%d.v%d.up.th_act", i, j);
- r = ini_rw(dic, token, &pover->sensor_val2_upper_threshold_ctrl, sizeof(pover->sensor_val2_upper_threshold_ctrl), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "sensor:sensor%d.v%d.up.th_para", i, j);
- r = ini_rw(dic, token, &pover->sensor_val2_upper_threshold_ctrl_para, sizeof(pover->sensor_val2_upper_threshold_ctrl_para), TYPE_INT, op, 1); if(r) break;
- }
- else {
- sprintf(token, "sensor:sensor%d.v%d.lo.en", i, j);
- r = ini_rw(dic, token, &pover->sensor_val2_lower_enabled, sizeof(pover->sensor_val2_lower_enabled), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "sensor:sensor%d.v%d.lo.th", i, j);
- r = ini_rw(dic, token, &pover->sensor_val2_lower_threshold, sizeof(pover->sensor_val2_lower_threshold), TYPE_FLOAT, op, 1); if(r) break;
- sprintf(token, "sensor:sensor%d.v%d.lo.th_act", i, j);
- r = ini_rw(dic, token, &pover->sensor_val2_lower_threshold_ctrl, sizeof(pover->sensor_val2_lower_threshold_ctrl), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "sensor:sensor%d.v%d.lo.th_para", i, j);
- r = ini_rw(dic, token, &pover->sensor_val2_lower_threshold_ctrl_para, sizeof(pover->sensor_val2_lower_threshold_ctrl_para), TYPE_INT, op, 1); if(r) break;
- }
- }
- if(r) break;
- }
- if(r) break;
- }
- if(chk_ok==0) {
- r = proc_sensor(path, PARAS_CHECK, psensor); if(r) break;
- cnt_ok++;
- }
- else {
- r = dev_insert_sensor_genera_manage(dm->db, psensor); if(r) break;
- r = dev_update_sensor_over_manage(dm->db, 0, psensor->sensor_id, psensor); if(r) break;
- }
- i++;
- }
-
- if(x==0) {
- if(cnt_ok==0) break;
- chk_ok = 1;
- r = dev_clear_table(dm->db, TAB_ID_SENSOR); if(r) break;
- }
- else {
- if(r) {
- if(i>cnt_ok) r = 0;
- break;
- }
- }
- }
- }
- break;
- case PARAS_WRITE:
- {
- int cnt=0;
- GlobalSensorManger *tmp,*node,*next;
- psensor = &sensor2;
- INIT_LIST_HEAD(&psensor->list);
- r = dev_get_sensor_manage_info(dm->db, 0, psensor); if(r) return -1;
- dic = dictionary_new(0); if(!dic) return -1;
- list_for_each_entry(tmp, &psensor->list, list) {
- if(!tmp) break;
- r = proc_sensor(path, PARAS_CHECK, tmp); if(r) break;
- sprintf(token, "sensor:sensor%d.id", i);
- r = ini_rw(dic, token, &tmp->sensor_id, sizeof(tmp->sensor_id), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "sensor:sensor%d.type", i);
- r = ini_rw(dic, token, &tmp->sensor_type, sizeof(tmp->sensor_type), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "sensor:sensor%d.name", i);
- r = ini_rw(dic, token, tmp->sensor_name, sizeof(tmp->sensor_name), TYPE_STR, op, 1); if(r) break;
- sprintf(token, "sensor:sensor%d.iface", i);
- r = ini_rw(dic, token, &tmp->sensor_interface_type, sizeof(tmp->sensor_interface_type), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "sensor:sensor%d.port", i);
- r = ini_rw(dic, token, tmp->sensor_port_name, sizeof(tmp->sensor_port_name), TYPE_STR, op, 1); if(r) break;
- sprintf(token, "sensor:sensor%d.addr", i);
- r = ini_rw(dic, token, &tmp->sensor_addr, sizeof(tmp->sensor_addr), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "sensor:sensor%d.baudrate", i);
- r = ini_rw(dic, token, &tmp->sensor_baud, sizeof(tmp->sensor_baud), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "sensor:sensor%d.vcnt", i);
- r = ini_rw(dic, token, &tmp->sensor_val_count, sizeof(tmp->sensor_val_count), TYPE_INT, op, 1); if(r) break;
- //////////////////////
- GlobalSensorOverManage *pover=&tmp->over_manager;
- for(j=1; j<=2; j++) {
- for(k=1; k<=2; k++) {
- if(j==1) {
- if(k==1) {
- sprintf(token, "sensor:sensor%d.v%d.up.en", i, j);
- r = ini_rw(dic, token, &pover->sensor_val1_upper_enabled, sizeof(pover->sensor_val1_upper_enabled), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "sensor:sensor%d.v%d.up.th", i, j);
- r = ini_rw(dic, token, &pover->sensor_val1_upper_threshold, sizeof(pover->sensor_val1_upper_threshold), TYPE_FLOAT, op, 1); if(r) break;
- sprintf(token, "sensor:sensor%d.v%d.up.th_act", i, j);
- r = ini_rw(dic, token, &pover->sensor_val1_upper_threshold_ctrl, sizeof(pover->sensor_val1_upper_threshold_ctrl), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "sensor:sensor%d.v%d.up.th_para", i, j);
- r = ini_rw(dic, token, &pover->sensor_val1_upper_threshold_ctrl_para, sizeof(pover->sensor_val1_upper_threshold_ctrl_para), TYPE_INT, op, 1); if(r) break;
- }
- else {
- sprintf(token, "sensor:sensor%d.v%d.lo.en", i, j);
- r = ini_rw(dic, token, &pover->sensor_val1_lower_enabled, sizeof(pover->sensor_val1_lower_enabled), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "sensor:sensor%d.v%d.lo.th", i, j);
- r = ini_rw(dic, token, &pover->sensor_val1_lower_threshold, sizeof(pover->sensor_val1_lower_threshold), TYPE_FLOAT, op, 1); if(r) break;
- sprintf(token, "sensor:sensor%d.v%d.lo.th_act", i, j);
- r = ini_rw(dic, token, &pover->sensor_val1_lower_threshold_ctrl, sizeof(pover->sensor_val1_lower_threshold_ctrl), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "sensor:sensor%d.v%d.lo.th_para", i, j);
- r = ini_rw(dic, token, &pover->sensor_val1_lower_threshold_ctrl_para, sizeof(pover->sensor_val1_lower_threshold_ctrl_para), TYPE_INT, op, 1); if(r) break;
- }
- }
- else {
- if(k==1) {
- sprintf(token, "sensor:sensor%d.v%d.up.en", i, j);
- r = ini_rw(dic, token, &pover->sensor_val2_upper_enabled, sizeof(pover->sensor_val2_upper_enabled), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "sensor:sensor%d.v%d.up.th", i, j);
- r = ini_rw(dic, token, &pover->sensor_val2_upper_threshold, sizeof(pover->sensor_val2_upper_threshold), TYPE_FLOAT, op, 1); if(r) break;
- sprintf(token, "sensor:sensor%d.v%d.up.th_act", i, j);
- r = ini_rw(dic, token, &pover->sensor_val2_upper_threshold_ctrl, sizeof(pover->sensor_val2_upper_threshold_ctrl), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "sensor:sensor%d.v%d.up.th_para", i, j);
- r = ini_rw(dic, token, &pover->sensor_val2_upper_threshold_ctrl_para, sizeof(pover->sensor_val2_upper_threshold_ctrl_para), TYPE_INT, op, 1); if(r) break;
- }
- else {
- sprintf(token, "sensor:sensor%d.v%d.lo.en", i, j);
- r = ini_rw(dic, token, &pover->sensor_val2_lower_enabled, sizeof(pover->sensor_val2_lower_enabled), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "sensor:sensor%d.v%d.lo.th", i, j);
- r = ini_rw(dic, token, &pover->sensor_val2_lower_threshold, sizeof(pover->sensor_val2_lower_threshold), TYPE_FLOAT, op, 1); if(r) break;
- sprintf(token, "sensor:sensor%d.v%d.lo.th_act", i, j);
- r = ini_rw(dic, token, &pover->sensor_val2_lower_threshold_ctrl, sizeof(pover->sensor_val2_lower_threshold_ctrl), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "sensor:sensor%d.v%d.lo.th_para", i, j);
- r = ini_rw(dic, token, &pover->sensor_val2_lower_threshold_ctrl_para, sizeof(pover->sensor_val2_lower_threshold_ctrl_para), TYPE_INT, op, 1); if(r) break;
- }
- }
- if(r) break;
- }
- if(r) break;
- }
- if(r) break;
- cnt++;
- i++;
- }
- list_for_each_entry_safe(node,next,&psensor->list,list) {
- list_del(&node->list); free(node);
- }
- if(cnt>0) {
- r = ini_dump(path, dic);
- }
- }
- break;
- default:
- return -1;
- }
- iniparser_freedict(dic);
- return r;
- }
- static int get_power(int ch_id, GlobalPowerManger *power)
- {
- int quit=0;
- GlobalDeviceManager *dm=get_dm();
- GlobalPowerManger *hd,*tmp;
- hd = tmp = &dm->_globalPowerManger;
- while(tmp) {
- if(tmp->product_ch_id==ch_id) {
- if(power) *power = *tmp;
- return 0;
- }
- if(tmp->list.next==&hd->list) break;
- tmp = (GlobalPowerManger*)((uint32_t)tmp->list.next - offsetof(typeof(*tmp),list));
- }
- return -1;
- }
- static int proc_power(char *path, int op, GlobalPowerManger *power)
- {
- int i,j,r=0;
- char temp[100];
- char *p,token[100];
- dictionary *dic=NULL;
- GlobalPowerManger power2,*ppower=power;
- GlobalDeviceManager *dm=get_dm();
- switch(op) {
- case PARAS_CHECK:
- {
- if(ppower->product_ch_addr<0) {
- LOGE("___ check power, product_ch_addr %d is invalid, must greater than 0\n", ppower->product_ch_addr);
- r = -1;
- }
- return r;
- }
- break;
- case PARAS_CREATE:
- {
- FILE *fp=fopen(path, "a+");
- if(!fp) {
- LOGE("___ %s open failed\n", path);
- return -1;
- }
- fprintf(fp, "[power]\n");
- fprintf(fp, "\n");
- fclose(fp);
- return 0;
- }
- break;
- case PARAS_READ:
- {
- float f;
- int x,chk_ok=0,cnt_ok=0;
- GlobalPowerManger *tmp=&power2;
- dic = iniparser_load(path); if(!dic) return -1;
- memset(tmp, 0, sizeof(GlobalPowerManger));
- for(x=0; x<2; x++) {
- for(i=1; i<=dm->brdMax; i++) {+
- sprintf(token, "power:channel%d.addr",i);
- r = ini_rw(dic, token, &tmp->product_saddr, sizeof(tmp->product_saddr), TYPE_INT, op, 1); if(r) break;
- tmp->product_ch_id = i;
- sprintf(token, "power:channel%d.ch_addr",tmp->product_ch_id);
- r = ini_rw(dic, token, &tmp->product_ch_addr, sizeof(tmp->product_ch_addr), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.name",tmp->product_ch_id);
- r = ini_rw(dic, token, tmp->product_ch_name, sizeof(tmp->product_ch_name), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.type",tmp->product_ch_id);
- r = ini_rw(dic, token, &tmp->product_ch_type, sizeof(tmp->product_ch_type), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.status",tmp->product_ch_id);
- r = ini_rw(dic, token, &tmp->product_ch_status, sizeof(tmp->product_ch_status), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.start_delay",tmp->product_ch_id);
- r = ini_rw(dic, token, &tmp->product_ch_start_delay, sizeof(tmp->product_ch_start_delay), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.stop_delay",tmp->product_ch_id);
- r = ini_rw(dic, token, &tmp->product_ch_stop_delay, sizeof(tmp->product_ch_stop_delay), TYPE_INT, op, 1); if(r) break;
- ///////////voltage//////////
- GlobalOverManager *pover=&tmp->global_over_manager;
- //upper
- sprintf(token, "power:channel%d.threshold.voltate.up.en",tmp->product_ch_id);
- r = ini_rw(dic, token, &pover->product_vol_upper_enable, sizeof(pover->product_vol_upper_enable), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.threshold.voltate.up.val",tmp->product_ch_id);
- r = ini_rw(dic, token, &pover->product_vol_upper_threshold, sizeof(pover->product_vol_upper_threshold), TYPE_FLOAT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.threshold.voltate.up.act",tmp->product_ch_id);
- r = ini_rw(dic, token, &pover->product_vol_over_upper_threshold_ctrl, sizeof(pover->product_vol_over_upper_threshold_ctrl), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.threshold.voltate.up.para",tmp->product_ch_id);
- r = ini_rw(dic, token, &pover->product_vol_over_upper_threshold_ctrl_para, sizeof(pover->product_vol_over_upper_threshold_ctrl_para), TYPE_INT, op, 1); if(r) break;
- //lower
- sprintf(token, "power:channel%d.threshold.voltate.lo.en",tmp->product_ch_id);
- r = ini_rw(dic, token, &pover->product_vol_lower_enable, sizeof(pover->product_vol_lower_enable), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.threshold.voltate.lo.val",tmp->product_ch_id);
- r = ini_rw(dic, token, &pover->product_vol_lower_threshold, sizeof(pover->product_vol_lower_threshold), TYPE_FLOAT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.threshold.voltate.lo.act",tmp->product_ch_id);
- r = ini_rw(dic, token, &pover->product_vol_over_lower_threshold_ctrl, sizeof(pover->product_vol_over_lower_threshold_ctrl), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.threshold.voltate.lo.para",tmp->product_ch_id);
- r = ini_rw(dic, token, &pover->product_vol_over_lower_threshold_ctrl_para, sizeof(pover->product_vol_over_lower_threshold_ctrl_para), TYPE_INT, op, 1); if(r) break;
- ///////////current//////////
- sprintf(token, "power:channel%d.threshold.current.up.en",tmp->product_ch_id);
- r = ini_rw(dic, token, &pover->product_cur_upper_enable, sizeof(pover->product_cur_upper_enable), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.threshold.current.up.val",tmp->product_ch_id);
- r = ini_rw(dic, token, &pover->product_cur_upper_threshold, sizeof(pover->product_cur_upper_threshold), TYPE_FLOAT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.threshold.current.up.act",tmp->product_ch_id);
- r = ini_rw(dic, token, &pover->product_cur_over_upper_threshold_ctrl, sizeof(pover->product_cur_over_upper_threshold_ctrl), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.threshold.current.up.para",tmp->product_ch_id);
- r = ini_rw(dic, token, &pover->product_cur_over_upper_threshold_ctrl_para, sizeof(pover->product_cur_over_upper_threshold_ctrl_para), TYPE_INT, op, 1); if(r) break;
- ///////////power//////////
- sprintf(token, "power:channel%d.threshold.power.up.en",tmp->product_ch_id);
- r = ini_rw(dic, token, &pover->product_pwr_upper_enable, sizeof(pover->product_pwr_upper_enable), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.threshold.power.up.val",tmp->product_ch_id);
- r = ini_rw(dic, token, &pover->product_pwr_upper_threshold, sizeof(pover->product_pwr_upper_threshold), TYPE_FLOAT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.threshold.power.up.act",tmp->product_ch_id);
- r = ini_rw(dic, token, &pover->product_pwr_over_upper_threshold_ctrl, sizeof(pover->product_pwr_over_upper_threshold_ctrl), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.threshold.power.up.para",tmp->product_ch_id);
- r = ini_rw(dic, token, &pover->product_pwr_over_upper_threshold_ctrl_para, sizeof(pover->product_pwr_over_upper_threshold_ctrl_para), TYPE_INT, op, 1); if(r) break;
- ///////////power consumption//////////
- sprintf(token, "power:channel%d.threshold.powerc.up.en",tmp->product_ch_id);
- r = ini_rw(dic, token, &pover->product_pwrcon_upper_enable, sizeof(pover->product_pwrcon_upper_enable), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.threshold.powerc.up.val",tmp->product_ch_id);
- r = ini_rw(dic, token, &pover->product_pwrcon_upper_threshold, sizeof(pover->product_pwrcon_upper_threshold), TYPE_FLOAT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.threshold.powerc.up.act",tmp->product_ch_id);
- r = ini_rw(dic, token, &pover->product_pwrcon_over_upper_threshold_ctrl, sizeof(pover->product_pwrcon_over_upper_threshold_ctrl), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.threshold.powerc.up.para",tmp->product_ch_id);
- r = ini_rw(dic, token, &pover->product_pwrcon_over_upper_threshold_ctrl_para, sizeof(pover->product_pwrcon_over_upper_threshold_ctrl_para), TYPE_INT, op, 1); if(r) break;
-
- if(chk_ok==0) {
- r = proc_power(path, PARAS_CHECK, tmp); if(r) break;
- cnt_ok++;
- }
- else {
- GlobalPowerManger pwr;
-
- r = dev_update_power_manage_genera_info(dm->db, 0, tmp->product_ch_id, tmp); if(r) break;
- r = dev_update_power_manage_over_info(dm->db, 0, tmp->product_ch_id, tmp); if(r) break;
- r = get_power(tmp->product_ch_id, &pwr); if(r) break;
- tmp->_PowerInfo = pwr._PowerInfo;
- r = g_switch_set_all_single_threshold(&dm->_globalRelaySampManger,
- tmp->product_ch_type, tmp->product_saddr,
- tmp->product_ch_addr, tmp);
- }
- }
- if(x==0) {
- if(cnt_ok==0) break;
- chk_ok = 1;
- }
- else {
- if(r) {
- if(i>cnt_ok) {
- r = 0; break;
- }
- }
- }
- }
- }
- break;
- case PARAS_WRITE:
- {
- int cnt=0;
- GlobalPowerManger *tmp,*node,*next;
- ppower = &power2;
- INIT_LIST_HEAD(&ppower->list);
- r = dev_get_power_info(dm->db, ppower); if(r) return -1;
- dic = dictionary_new(0); if(!dic) return -1;
- list_for_each_entry(tmp, &ppower->list, list) {
- if(!tmp) break;
- r = proc_power(path, PARAS_CHECK, tmp); if(r) break;
- sprintf(token, "power:channel%d.addr",tmp->product_ch_id);
- r = ini_rw(dic, token, &tmp->product_saddr, sizeof(tmp->product_saddr), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.ch_addr",tmp->product_ch_id);
- r = ini_rw(dic, token, &tmp->product_ch_addr, sizeof(tmp->product_ch_addr), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.name",tmp->product_ch_id);
- r = ini_rw(dic, token, tmp->product_ch_name, sizeof(tmp->product_ch_name), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.type",tmp->product_ch_id);
- r = ini_rw(dic, token, &tmp->product_ch_type, sizeof(tmp->product_ch_type), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.status",tmp->product_ch_id);
- r = ini_rw(dic, token, &tmp->product_ch_status, sizeof(tmp->product_ch_status), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.start_delay",tmp->product_ch_id);
- r = ini_rw(dic, token, &tmp->product_ch_start_delay, sizeof(tmp->product_ch_start_delay), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.stop_delay",tmp->product_ch_id);
- r = ini_rw(dic, token, &tmp->product_ch_stop_delay, sizeof(tmp->product_ch_stop_delay), TYPE_INT, op, 1); if(r) break;
- ///////////voltage//////////
- GlobalOverManager *pover=&tmp->global_over_manager;
- //upper
- sprintf(token, "power:channel%d.threshold.voltate.up.en",tmp->product_ch_id);
- r = ini_rw(dic, token, &pover->product_vol_upper_enable, sizeof(pover->product_vol_upper_enable), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.threshold.voltate.up.val",tmp->product_ch_id);
- r = ini_rw(dic, token, &pover->product_vol_upper_threshold, sizeof(pover->product_vol_upper_threshold), TYPE_FLOAT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.threshold.voltate.up.act",tmp->product_ch_id);
- r = ini_rw(dic, token, &pover->product_vol_over_upper_threshold_ctrl, sizeof(pover->product_vol_over_upper_threshold_ctrl), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.threshold.voltate.up.para",tmp->product_ch_id);
- r = ini_rw(dic, token, &pover->product_vol_over_upper_threshold_ctrl_para, sizeof(pover->product_vol_over_upper_threshold_ctrl_para), TYPE_INT, op, 1); if(r) break;
- //lower
- sprintf(token, "power:channel%d.threshold.voltate.lo.en",tmp->product_ch_id);
- r = ini_rw(dic, token, &pover->product_vol_lower_enable, sizeof(pover->product_vol_lower_enable), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.threshold.voltate.lo.val",tmp->product_ch_id);
- r = ini_rw(dic, token, &pover->product_vol_lower_threshold, sizeof(pover->product_vol_lower_threshold), TYPE_FLOAT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.threshold.voltate.lo.act",tmp->product_ch_id);
- r = ini_rw(dic, token, &pover->product_vol_over_lower_threshold_ctrl, sizeof(pover->product_vol_over_lower_threshold_ctrl), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.threshold.voltate.lo.para",tmp->product_ch_id);
- r = ini_rw(dic, token, &pover->product_vol_over_lower_threshold_ctrl_para, sizeof(pover->product_vol_over_lower_threshold_ctrl_para), TYPE_INT, op, 1); if(r) break;
- ///////////current//////////
- sprintf(token, "power:channel%d.threshold.current.up.en",tmp->product_ch_id);
- r = ini_rw(dic, token, &pover->product_cur_upper_enable, sizeof(pover->product_cur_upper_enable), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.threshold.current.up.val",tmp->product_ch_id);
- r = ini_rw(dic, token, &pover->product_cur_upper_threshold, sizeof(pover->product_cur_upper_threshold), TYPE_FLOAT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.threshold.current.up.act",tmp->product_ch_id);
- r = ini_rw(dic, token, &pover->product_cur_over_upper_threshold_ctrl, sizeof(pover->product_cur_over_upper_threshold_ctrl), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.threshold.current.up.para",tmp->product_ch_id);
- r = ini_rw(dic, token, &pover->product_cur_over_upper_threshold_ctrl_para, sizeof(pover->product_cur_over_upper_threshold_ctrl_para), TYPE_INT, op, 1); if(r) break;
- ///////////power//////////
- sprintf(token, "power:channel%d.threshold.power.up.en",tmp->product_ch_id);
- r = ini_rw(dic, token, &pover->product_pwr_upper_enable, sizeof(pover->product_pwr_upper_enable), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.threshold.power.up.val",tmp->product_ch_id);
- r = ini_rw(dic, token, &pover->product_pwr_upper_threshold, sizeof(pover->product_pwr_upper_threshold), TYPE_FLOAT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.threshold.power.up.act",tmp->product_ch_id);
- r = ini_rw(dic, token, &pover->product_pwr_over_upper_threshold_ctrl, sizeof(pover->product_pwr_over_upper_threshold_ctrl), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.threshold.power.up.para",tmp->product_ch_id);
- r = ini_rw(dic, token, &pover->product_pwr_over_upper_threshold_ctrl_para, sizeof(pover->product_pwr_over_upper_threshold_ctrl_para), TYPE_INT, op, 1); if(r) break;
- ///////////power consumption//////////
- sprintf(token, "power:channel%d.threshold.powerc.up.en",tmp->product_ch_id);
- r = ini_rw(dic, token, &pover->product_pwrcon_upper_enable, sizeof(pover->product_pwrcon_upper_enable), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.threshold.powerc.up.val",tmp->product_ch_id);
- r = ini_rw(dic, token, &pover->product_pwrcon_upper_threshold, sizeof(pover->product_pwrcon_upper_threshold), TYPE_FLOAT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.threshold.powerc.up.act",tmp->product_ch_id);
- r = ini_rw(dic, token, &pover->product_pwrcon_over_upper_threshold_ctrl, sizeof(pover->product_pwrcon_over_upper_threshold_ctrl), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.threshold.powerc.up.para",tmp->product_ch_id);
- r = ini_rw(dic, token, &pover->product_pwrcon_over_upper_threshold_ctrl_para, sizeof(pover->product_pwrcon_over_upper_threshold_ctrl_para), TYPE_INT, op, 1); if(r) break;
- cnt++;
- }
- list_for_each_entry_safe(node,next,&ppower->list,list) {
- list_del(&node->list); free(node);
- }
- if(cnt>0) {
- r = ini_dump(path, dic);
- }
- }
- break;
- default:
- return -1;
- }
- iniparser_freedict(dic);
- return r;
- }
- static int proc_power3(char *path, int op, GlobalTreeACManager *power)
- {
- int i,j,r=0;
- char temp[100];
- char *p,token[100];
- dictionary *dic=NULL;
- GlobalTreeACManager power2,*ppower=power;
- GlobalDeviceManager *dm=get_dm();
- int pwrtype=dm->_globalDevInfo.product.pwr_type;
- switch(op) {
- case PARAS_CHECK:
- {
- if(ppower->product_ch_addr<0) {
- LOGE("___ check power, product_ch_addr %d is invalid, must greater than 0\n", ppower->product_ch_addr);
- r = -1;
- }
- return r;
- }
- break;
- case PARAS_CREATE:
- {
- FILE *fp=fopen(path, "a+");
- if(!fp) {
- LOGE("___ %s open failed\n", path);
- return -1;
- }
- fprintf(fp, "[power]\n");
- fprintf(fp, "\n");
- fclose(fp);
- return 0;
- }
- break;
- case PARAS_READ:
- {
- float f;
- int x,chk_ok=0,cnt_ok=0;
- GlobalPowerManger pwr;
- GlobalTreeACManager *tmp=&power2;
- dic = iniparser_load(path); if(!dic) return -1;
- memset(tmp, 0, sizeof(GlobalTreeACManager));
- for(x=0; x<2; x++) {
- for(i=1; i<=dm->brdMax*3; i++) {
- int channelID = i;
- sprintf(token, "power:channel%d.addr",i);
- r = ini_rw(dic, token, &tmp->product_saddr, sizeof(tmp->product_saddr), TYPE_INT, op, 1); if(r) break;
- tmp->product_ph_id = channelID-1;
- sprintf(token, "power:channel%d.ch_addr",channelID);
- r = ini_rw(dic, token, &tmp->product_ch_addr, sizeof(tmp->product_ch_addr), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.ch_id",channelID);
- r = ini_rw(dic, token, &tmp->product_ch_id, sizeof(tmp->product_ch_id), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.ph_type",channelID);
- r = ini_rw(dic, token, &tmp->product_ph_type, sizeof(tmp->product_ph_type), TYPE_INT, op, 1); if(r) break;
- /*
- sprintf(token, "power:channel%d.ph_otype",channelID);
- r = ini_rw(dic, token, &tmp->product_ph_outputType, sizeof(tmp->product_ph_outputType), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.ph_ostat",channelID);
- r = ini_rw(dic, token, &tmp->product_ph_outputStatus, sizeof(tmp->product_ph_outputStatus), TYPE_INT, op, 1); if(r) break;
- */
- ///////////voltage//////////
- GlobalOverManager *pover=&tmp->global_over_manager;
- //upper
- sprintf(token, "power:channel%d.threshold.voltage.up.en",channelID);
- r = ini_rw(dic, token, &pover->product_vol_upper_enable, sizeof(pover->product_vol_upper_enable), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.threshold.voltage.up.val",channelID);
- r = ini_rw(dic, token, &pover->product_vol_upper_threshold, sizeof(pover->product_vol_upper_threshold), TYPE_FLOAT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.threshold.voltage.up.act",channelID);
- r = ini_rw(dic, token, &pover->product_vol_over_upper_threshold_ctrl, sizeof(pover->product_vol_over_upper_threshold_ctrl), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.threshold.voltage.up.para",channelID);
- r = ini_rw(dic, token, &pover->product_vol_over_upper_threshold_ctrl_para, sizeof(pover->product_vol_over_upper_threshold_ctrl_para), TYPE_INT, op, 1); if(r) break;
- //lower
- sprintf(token, "power:channel%d.threshold.voltage.lo.en",channelID);
- r = ini_rw(dic, token, &pover->product_vol_lower_enable, sizeof(pover->product_vol_lower_enable), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.threshold.voltage.lo.val",channelID);
- r = ini_rw(dic, token, &pover->product_vol_lower_threshold, sizeof(pover->product_vol_lower_threshold), TYPE_FLOAT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.threshold.voltage.lo.act",channelID);
- r = ini_rw(dic, token, &pover->product_vol_over_lower_threshold_ctrl, sizeof(pover->product_vol_over_lower_threshold_ctrl), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.threshold.voltage.lo.para",channelID);
- r = ini_rw(dic, token, &pover->product_vol_over_lower_threshold_ctrl_para, sizeof(pover->product_vol_over_lower_threshold_ctrl_para), TYPE_INT, op, 1); if(r) break;
- ///////////current//////////
- sprintf(token, "power:channel%d.threshold.current.up.en",channelID);
- r = ini_rw(dic, token, &pover->product_cur_upper_enable, sizeof(pover->product_cur_upper_enable), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.threshold.current.up.val",channelID);
- r = ini_rw(dic, token, &pover->product_cur_upper_threshold, sizeof(pover->product_cur_upper_threshold), TYPE_FLOAT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.threshold.current.up.act",channelID);
- r = ini_rw(dic, token, &pover->product_cur_over_upper_threshold_ctrl, sizeof(pover->product_cur_over_upper_threshold_ctrl), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.threshold.current.up.para",channelID);
- r = ini_rw(dic, token, &pover->product_cur_over_upper_threshold_ctrl_para, sizeof(pover->product_cur_over_upper_threshold_ctrl_para), TYPE_INT, op, 1); if(r) break;
- ///////////power//////////
- sprintf(token, "power:channel%d.threshold.power.up.en",channelID);
- r = ini_rw(dic, token, &pover->product_pwr_upper_enable, sizeof(pover->product_pwr_upper_enable), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.threshold.power.up.val",channelID);
- r = ini_rw(dic, token, &pover->product_pwr_upper_threshold, sizeof(pover->product_pwr_upper_threshold), TYPE_FLOAT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.threshold.power.up.act",channelID);
- r = ini_rw(dic, token, &pover->product_pwr_over_upper_threshold_ctrl, sizeof(pover->product_pwr_over_upper_threshold_ctrl), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.threshold.power.up.para",channelID);
- r = ini_rw(dic, token, &pover->product_pwr_over_upper_threshold_ctrl_para, sizeof(pover->product_pwr_over_upper_threshold_ctrl_para), TYPE_INT, op, 1); if(r) break;
- ///////////power consumption//////////
- sprintf(token, "power:channel%d.threshold.powerc.up.en",channelID);
- r = ini_rw(dic, token, &pover->product_pwrcon_upper_enable, sizeof(pover->product_pwrcon_upper_enable), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.threshold.powerc.up.val",channelID);
- r = ini_rw(dic, token, &pover->product_pwrcon_upper_threshold, sizeof(pover->product_pwrcon_upper_threshold), TYPE_FLOAT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.threshold.powerc.up.act",channelID);
- r = ini_rw(dic, token, &pover->product_pwrcon_over_upper_threshold_ctrl, sizeof(pover->product_pwrcon_over_upper_threshold_ctrl), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.threshold.powerc.up.para",channelID);
- r = ini_rw(dic, token, &pover->product_pwrcon_over_upper_threshold_ctrl_para, sizeof(pover->product_pwrcon_over_upper_threshold_ctrl_para), TYPE_INT, op, 1); if(r) break;
-
- if(chk_ok==0) {
- r = proc_power3(path, PARAS_CHECK, tmp); if(r) break;
- cnt_ok++;
- }
- else {
- //PowerInfo tt;
- //r = g_switch_get_t_ac_out_info(&dm->_globalRelaySampManger, tmp->product_saddr, tmp->product_ch_id, &tt); if(r) break;
- //r = dev_get_power_manage_info2(dm->db, tmp->product_ch_id, &pwr); if(r) break;
- r = get_power(tmp->product_ch_id, &pwr); if(r) break;
- pwr.global_over_manager = tmp->global_over_manager;
- r = dev_update_power_manage_over_info(dm->db, 0, pwr.product_ch_id, &pwr); if(r) break;
- r = dev_update_t_ac_power_manage_over_info(dm->db, tmp); if(r) break;
- r = g_switch_set_all_single_threshold(&dm->_globalRelaySampManger,
- pwr.product_ch_type,
- tmp->product_saddr,
- tmp->product_ch_addr,
- &pwr);
- }
- }
- if(x==0) {
- if(cnt_ok==0) break;
- chk_ok = 1;
- }
- else {
- if(i>cnt_ok) {
- r = 0; break;
- }
- }
- }
- }
- break;
- case PARAS_WRITE:
- {
- int cnt=0,channelID=-1;
- GlobalTreeACManager *tmp,*node,*next;
- ppower = &power2;
- INIT_LIST_HEAD(&ppower->list_Tree_AC);
- r = dev_get_ac_power_info(dm->db, ppower); if(r) return -1;
- dic = dictionary_new(0); if(!dic) return -1;
- list_for_each_entry(tmp, &ppower->list_Tree_AC, list_Tree_AC) {
- if(!tmp) break;
- //if(tmp->product_ph_id%3) continue;
- //channelID = tmp->product_ph_id/3+1;
- channelID = tmp->product_ph_id+1;
- r = proc_power3(path, PARAS_CHECK, tmp); if(r) break;
- sprintf(token, "power:channel%d.addr",channelID);
- r = ini_rw(dic, token, &tmp->product_saddr, sizeof(tmp->product_saddr), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.ch_id",channelID);
- r = ini_rw(dic, token, &tmp->product_ch_id, sizeof(tmp->product_ch_id), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.ch_addr",channelID);
- r = ini_rw(dic, token, &tmp->product_ch_addr, sizeof(tmp->product_ch_addr), TYPE_INT, op, 1); if(r) break;
- //sprintf(token, "power:channel%d.ph_id",channelID);
- //r = ini_rw(dic, token, &tmp->product_ph_id, sizeof(tmp->product_ph_id), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.ph_type",channelID);
- r = ini_rw(dic, token, &tmp->product_ph_type, sizeof(tmp->product_ph_type), TYPE_INT, op, 1); if(r) break;
- /*
- sprintf(token, "power:channel%d.ph_otype",channelID);
- r = ini_rw(dic, token, &tmp->product_ph_outputType, sizeof(tmp->product_ph_outputType), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.ph_ostat",channelID);
- r = ini_rw(dic, token, &tmp->product_ph_outputStatus, sizeof(tmp->product_ph_outputStatus), TYPE_INT, op, 1); if(r) break;
- */
- ///////////voltage//////////
- GlobalOverManager *pover=&tmp->global_over_manager;
- //upper
- sprintf(token, "power:channel%d.threshold.voltage.up.en",channelID);
- r = ini_rw(dic, token, &pover->product_vol_upper_enable, sizeof(pover->product_vol_upper_enable), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.threshold.voltage.up.val",channelID);
- r = ini_rw(dic, token, &pover->product_vol_upper_threshold, sizeof(pover->product_vol_upper_threshold), TYPE_FLOAT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.threshold.voltage.up.act",channelID);
- r = ini_rw(dic, token, &pover->product_vol_over_upper_threshold_ctrl, sizeof(pover->product_vol_over_upper_threshold_ctrl), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.threshold.voltage.up.para",channelID);
- r = ini_rw(dic, token, &pover->product_vol_over_upper_threshold_ctrl_para, sizeof(pover->product_vol_over_upper_threshold_ctrl_para), TYPE_INT, op, 1); if(r) break;
- //lower
- sprintf(token, "power:channel%d.threshold.voltage.lo.en",channelID);
- r = ini_rw(dic, token, &pover->product_vol_lower_enable, sizeof(pover->product_vol_lower_enable), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.threshold.voltage.lo.val",channelID);
- r = ini_rw(dic, token, &pover->product_vol_lower_threshold, sizeof(pover->product_vol_lower_threshold), TYPE_FLOAT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.threshold.voltage.lo.act",channelID);
- r = ini_rw(dic, token, &pover->product_vol_over_lower_threshold_ctrl, sizeof(pover->product_vol_over_lower_threshold_ctrl), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.threshold.voltage.lo.para",channelID);
- r = ini_rw(dic, token, &pover->product_vol_over_lower_threshold_ctrl_para, sizeof(pover->product_vol_over_lower_threshold_ctrl_para), TYPE_INT, op, 1); if(r) break;
- ///////////current//////////
- sprintf(token, "power:channel%d.threshold.current.up.en",channelID);
- r = ini_rw(dic, token, &pover->product_cur_upper_enable, sizeof(pover->product_cur_upper_enable), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.threshold.current.up.val",channelID);
- r = ini_rw(dic, token, &pover->product_cur_upper_threshold, sizeof(pover->product_cur_upper_threshold), TYPE_FLOAT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.threshold.current.up.act",channelID);
- r = ini_rw(dic, token, &pover->product_cur_over_upper_threshold_ctrl, sizeof(pover->product_cur_over_upper_threshold_ctrl), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.threshold.current.up.para",channelID);
- r = ini_rw(dic, token, &pover->product_cur_over_upper_threshold_ctrl_para, sizeof(pover->product_cur_over_upper_threshold_ctrl_para), TYPE_INT, op, 1); if(r) break;
- ///////////power//////////
- sprintf(token, "power:channel%d.threshold.power.up.en",channelID);
- r = ini_rw(dic, token, &pover->product_pwr_upper_enable, sizeof(pover->product_pwr_upper_enable), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.threshold.power.up.val",channelID);
- r = ini_rw(dic, token, &pover->product_pwr_upper_threshold, sizeof(pover->product_pwr_upper_threshold), TYPE_FLOAT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.threshold.power.up.act",channelID);
- r = ini_rw(dic, token, &pover->product_pwr_over_upper_threshold_ctrl, sizeof(pover->product_pwr_over_upper_threshold_ctrl), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.threshold.power.up.para",channelID);
- r = ini_rw(dic, token, &pover->product_pwr_over_upper_threshold_ctrl_para, sizeof(pover->product_pwr_over_upper_threshold_ctrl_para), TYPE_INT, op, 1); if(r) break;
- ///////////power consumption//////////
- sprintf(token, "power:channel%d.threshold.powerc.up.en",channelID);
- r = ini_rw(dic, token, &pover->product_pwrcon_upper_enable, sizeof(pover->product_pwrcon_upper_enable), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.threshold.powerc.up.val",channelID);
- r = ini_rw(dic, token, &pover->product_pwrcon_upper_threshold, sizeof(pover->product_pwrcon_upper_threshold), TYPE_FLOAT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.threshold.powerc.up.act",channelID);
- r = ini_rw(dic, token, &pover->product_pwrcon_over_upper_threshold_ctrl, sizeof(pover->product_pwrcon_over_upper_threshold_ctrl), TYPE_INT, op, 1); if(r) break;
- sprintf(token, "power:channel%d.threshold.powerc.up.para",channelID);
- r = ini_rw(dic, token, &pover->product_pwrcon_over_upper_threshold_ctrl_para, sizeof(pover->product_pwrcon_over_upper_threshold_ctrl_para), TYPE_INT, op, 1); if(r) break;
- cnt++;
- }
- list_for_each_entry_safe(node,next,&ppower->list_Tree_AC,list_Tree_AC) {
- list_del(&node->list_Tree_AC); free(node);
- }
- if(cnt>0) {
- r = ini_dump(path, dic);
- }
- }
- break;
- default:
- return -1;
- }
- iniparser_freedict(dic);
- return r;
- }
- static int proc_timer(char *path, int op, timer_data_t *timer)
- {
- int r=0;
- char temp[100];
- char *p,*token=NULL;
- FILE *fp=NULL;
- dictionary *dic=NULL;
- if(op==PARAS_CHECK) {
- if(ptotal->voltage<=0) {
- LOGE("___ check timer, voltage is invalid, must greater than 0\n");
- r = -1;
- }
- return r;
- }
- else if(op==PARAS_CREATE) {
- fp = fopen(path, "a+");
- if(!fp) {
- LOGE("___ %s open failed\n", path);
- return -1;
- }
- fprintf(fp, "[mqtt]\n");
- for(i=0; i<MQTT_SER_MAX; i++) {
- if(mqtt->ser[i].id>=0) {
- fprintf(fp, "broker%d.plat = \"%d\"\n", i+1,mqtt->ser[i].plat);
- fprintf(fp, "broker%d.mode = \"%d\"\n", i+1,mqtt->ser[i].mode);
- //fprintf(fp, "broker%d.proto = \"%s\"\n", i+1,mqtt->ser[i].proto);
- fprintf(fp, "broker%d.name = \"%s\"\n", i+1,mqtt->ser[i].name);
- fprintf(fp, "broker%d.server = \"%s\"\n", i+1,mqtt->ser[i].server);
- fprintf(fp, "broker%d.port = \"%s\"\n", i+1,mqtt->ser[i].port);
- fprintf(fp, "broker%d.clientID = \"%s\"\n", i+1,mqtt->ser[i].clientID);
- fprintf(fp, "broker%d.user = \"%s\"\n", i+1,mqtt->ser[i].user);
- fprintf(fp, "broker%d.password = \"%s\"\n", i+1,mqtt->ser[i].password);
- fprintf(fp, "broker%d.cert = \"%s\"\n", i+1,mqtt->ser[i].cert);
- fprintf(fp, "\n");
- }
- }
- fclose(fp);
- return 0;
- }
- else {
- if (op==PARAS_WRITE) {
- r = proc_timer(path, PARAS_CHECK, timer);
- if(r) {
- return -1;
- }
- }
- dic = iniparser_load(path);
- }
- token = "ptotal:voltage";
- if(op==PARAS_READ) {
- r = iniparser_getint(dic, token, -1);
- if(r==-1) {
- LOGE("___ iniparser_getint %s failed\n", token);
- return -1;
- }
- ptotal->voltage = r;
- }
- else {
- sprintf(temp, "%d", ptotal->voltage);
- r = iniparser_set(dic, token, temp);
- if(r) {
- LOGE("___ iniparser_set %s failed\n", token);
- return -1;
- }
- }
- if(op==PARAS_READ) {
- r = proc_timer(path, PARAS_CHECK, timer);
- if(r) {
- return -1;
- }
- }
- quit:
- iniparser_freedict(dic);
- return r;
- }
- static int proc_breaker(char *path, int op, GlobalBreakerManager *breaker)
- {
- int i,r=0;
- char temp[100];
- char *p,*token=NULL;
- FILE *fp=NULL;
- dictionary *dic=NULL;
- if(op==PARAS_CHECK) {
- if(breaker->voltage<=0) {
- LOGE("___ check breaker, voltage is invalid, must greater than 0\n");
- r = -1;
- }
- return r;
- }
- else if(op==PARAS_CREATE) {
- fp = fopen(path, "a+");
- if(!fp) {
- LOGE("___ %s open failed\n", path);
- return -1;
- }
- fprintf(fp, "[mqtt]\n");
- for(i=0; i<MQTT_SER_MAX; i++) {
- if(mqtt->ser[i].id>=0) {
- fprintf(fp, "broker%d.plat = \"%d\"\n", i+1,mqtt->ser[i].plat);
- fprintf(fp, "broker%d.mode = \"%d\"\n", i+1,mqtt->ser[i].mode);
- //fprintf(fp, "broker%d.proto = \"%s\"\n", i+1,mqtt->ser[i].proto);
- fprintf(fp, "broker%d.name = \"%s\"\n", i+1,mqtt->ser[i].name);
- fprintf(fp, "broker%d.server = \"%s\"\n", i+1,mqtt->ser[i].server);
- fprintf(fp, "broker%d.port = \"%s\"\n", i+1,mqtt->ser[i].port);
- fprintf(fp, "broker%d.clientID = \"%s\"\n", i+1,mqtt->ser[i].clientID);
- fprintf(fp, "broker%d.user = \"%s\"\n", i+1,mqtt->ser[i].user);
- fprintf(fp, "broker%d.password = \"%s\"\n", i+1,mqtt->ser[i].password);
- fprintf(fp, "broker%d.cert = \"%s\"\n", i+1,mqtt->ser[i].cert);
- fprintf(fp, "\n");
- }
- }
- fclose(fp);
- return 0;
- }
- else {
- if(op==PARAS_WRITE) {
- r = proc_breaker(path, PARAS_CHECK, breaker);
- if(r) {
- return -1;
- }
- }
- dic = iniparser_load(path);
- }
- token = "ptotal:voltage";
- if(op==PARAS_READ) {
- r = iniparser_getint(dic, token, -1);
- if(r==-1) {
- LOGE("___ iniparser_getint %s failed\n", token);
- return -1;
- }
- ptotal->voltage = r;
- }
- else {
- sprintf(temp, "%d", ptotal->voltage);
- r = iniparser_set(dic, token, temp);
- if(r) {
- LOGE("___ iniparser_set %s failed\n", token);
- return -1;
- }
- }
- if(op==PARAS_READ) {
- r = proc_breaker(path, PARAS_CHECK, breaker);
- if(r) {
- return -1;
- }
- }
- quit:
- iniparser_freedict(dic);
- return r;
- }
- #endif
- /////////////////////////////////////////////////////////////////
- static dictionary* ini_load(char *path, paras_data_t *info)
- {
- int r=-1;
-
- dictionary *dic=iniparser_load(path);
- if(dic == NULL){
- return NULL;
- }
-
- r = proc_prod(dic, PARAS_READ, &info->prod);
- if(r) {
- LOGE("___proc_prod failed\n");
- }
- r = proc_modbus(dic, PARAS_READ, &info->cas);
- if(r) {
- LOGE("___proc_modbus failed\n");
- }
- r = proc_misc(dic, PARAS_READ, &info->misc);
- if(r) {
- LOGE("___proc_misc failed\n");
- }
-
- return dic;
- }
- static int ini_check(char *path)
- {
- paras_data_t *p=(paras_data_t*)MALLOC(sizeof(paras_data_t));
-
- if(!p) {
- return -1;
- }
-
- dictionary *dic=ini_load(path, p);
- iniparser_freedict(dic);
- return 0;
- }
- static int ini_reset(paras_handle_t *h)
- {
- int r;
- FILE *fp=NULL;
- char tmp[100];
- paras_data_t *p=&DFLT_PARAS;
- fp = fopen(h->path, "w");
- if (fp==NULL) {
- LOGE("ini_reset, fopen %s failed\n", h->path);
- return -1;
- }
- fprintf(fp, "[product]\n");
- fprintf(fp, "id = \"%d\"\n", p->prod.id);
- fprintf(fp, "number = \"%s\"\n", p->prod.number);
- fprintf(fp, "name = \"%s\"\n", p->prod.name);
- fprintf(fp, "type = \"%d\"\n", p->prod.type);
- //fprintf(fp, "version = %s\\"n", p->prod.version);
- fprintf(fp, "samptime = \"%d\"\n", p->prod.samp_time);
- fprintf(fp, "savetime = \"%d\"\n", p->prod.save_time);
- fprintf(fp, "ph_group = \"%d\"\n", p->prod.ph_group);
- fprintf(fp, "ch_delay = \"%d\"\n", p->prod.ch_delay);
- fprintf(fp, "\n");
- fprintf(fp, "[modbus]\n");
- fprintf(fp, "mode = \"%d\"\n", p->cas.mode);
- fprintf(fp, "address = \"%d\"\n", p->cas.addr);
- fprintf(fp, "baudrate = \"%d\"\n", p->cas.baud);
- fprintf(fp, "\n");
- fprintf(fp, "[misc]\n");
- fprintf(fp, "watchdog = \"%d\"\n", p->misc.watchdog);
- fprintf(fp, "fliptime = \"%d\"\n", p->misc.flip_time);
- fprintf(fp, "led = \"%d\"\n", p->misc.led);
- fprintf(fp, "beep = \"%d\"\n", p->misc.beep);
- fprintf(fp, "rotate = \"%d\"\n", p->misc.rotate);
- fprintf(fp, "\n");
- fclose(fp);
- if(h->dic) {
- iniparser_freedict(h->dic);
- }
- h->dic = ini_load(h->path, &h->paras);
- return 0;
- }
- static int ini_free(paras_handle_t *h)
- {
- iniparser_freedict(h->dic);
- return 0;
- }
- static int ini_save(paras_handle_t *h)
- {
- int r=-1;
-
- r = proc_prod(h->dic, PARAS_WRITE, &h->paras.prod);
- if(r) {
- LOGE("___ini_w_dev failed\n");
- return -1;
- }
- r = proc_modbus(h->dic, PARAS_WRITE, &h->paras.cas);
- if(r) {
- LOGE("___ini_w_modbus failed\n");
- return -1;
- }
- FILE *fp=fopen(h->path, "w");
- if(!fp) {
- LOGE("___%s open failed\n", h->path);
- return -1;
- }
- iniparser_dump_ini(h->dic, fp);
- fclose(fp);
- return 0;
- }
- #endif
- ////////////////////////////////////////////////////////////
- int paras_init(void)
- {
- int r=0;
- char tmp[50];
- paras_handle_t *h=¶Handle;
- version_data_t *pv=&h->paras.ver;
-
- memset(h, 0, sizeof(paraHandle));
- h->lck = lock_init();
- h->paras = DFLT_PARAS;
- sprintf(h->path, "%s/%s", CFG_PATH, INI_NAME);
- h->dic = ini_load(h->path, &h->paras);
- if(h->dic==NULL) {
- r = ini_reset(h);
- }
- strcpy(pv->ver, VERSION);
- sprintf(tmp, "%s/%s", CFG_PATH, INF_NAME);
- sys_get_prod(tmp, &h->paras);
- sys_get_bldtime(pv->bldtime, sizeof(pv->bldtime));
-
- return r;
- }
- int paras_deinit(void)
- {
- int r=0;
- paras_handle_t *h=¶Handle;
-
- r = ini_free(h);
- lock_deinit(h->lck);
-
- return 0;
- }
- paras_data_t* paras_get(void)
- {
- paras_handle_t *h=¶Handle;
- return &h->paras;
- }
- int paras_check(char *path)
- {
- int r=0;
- paras_handle_t *h=¶Handle;
-
- lock_on(h->lck);
- r = ini_check(path);
- lock_off(h->lck);
-
- return r;
- }
- int paras_load(char *path)
- {
- int r=-1;
- paras_handle_t *h=¶Handle;
- lock_on(h->lck);
- ini_free(h);
- h->dic = ini_load(path, &h->paras);
- if(h->dic) r = 0;
- lock_off(h->lck);
-
- return r;
- }
- int paras_reset(void)
- {
- int r=0;
- paras_handle_t *h=¶Handle;
-
- lock_on(h->lck);
- ini_reset(h);
- lock_off(h->lck);
-
- return r;
- }
- int paras_copy(char *dst, char *src)
- {
- int r=-1;
- paras_handle_t *h=¶Handle;
- lock_on(h->lck);
- r = fs_copy(dst, src);
- lock_off(h->lck);
- return r;
- }
- int paras_save(void)
- {
- int r=0;
- paras_handle_t *h=¶Handle;
-
- lock_on(h->lck);
- r = ini_save(h);
- lock_off(h->lck);
-
- return r;
- }
- int paras_serv_xport(char *path, int io)
- {
- int r=-1;
- char temp[100];
- handle_t l;
- list_cfg_t lc={0,LIST_FULL_FIFO,100};
- if(io==PARAS_IMPORT) {
- l = NULL;//xlist_init(&lc);
- //r *= proc_role(path, PARAS_READ, NULL, l);
- //r *= proc_user(path, PARAS_READ, NULL, l);
- //r *= proc_group(path, PARAS_READ, NULL);
- //r *= proc_ntp(path, PARAS_READ, NULL);
- //r *= proc_mqtt(path, PARAS_READ, NULL);
- //r *= proc_mail(path, PARAS_READ, NULL);
- //r *= proc_snmp(path, PARAS_READ, NULL);
- //r *= proc_timer(path, PARAS_READ, NULL);
- //xlist_free(l);
- }
- else if(io==PARAS_EXPORT) {
- //get_curtime_str(temp,sizeof(temp));
- //sprintf(path, "/tmp/service_%s.ini", temp);
- //r *= proc_role(path, PARAS_WRITE, NULL, NULL);
- //r *= proc_user(path, PARAS_WRITE, NULL, NULL);
- //r *= proc_group(path, PARAS_WRITE, NULL);
- //r *= proc_ntp(path, PARAS_WRITE, NULL);
- //r *= proc_mqtt(path, PARAS_WRITE, NULL);
- //r *= proc_mail(path, PARAS_WRITE, NULL);
- //r *= proc_snmp(path, PARAS_WRITE, NULL);
- //r *= proc_timer(path, PARAS_WRITE, NULL);
- }
- return r;
- }
- int paras_alarm_xport(char *path, int io)
- {
- int r=-1,pwr3;
- char temp[100];
- pwr3 = is_power3();
- if(io==PARAS_IMPORT) {
- if(pwr3) {
- //r = proc_power3(path, PARAS_READ, NULL);
- }
- else {
- //r = proc_power(path, PARAS_READ, NULL);
- }
- }
- else if(io==PARAS_EXPORT) {
- //get_curtime_str(temp,sizeof(temp));
- sprintf(path, "/tmp/power_%s.ini", temp);
- if(pwr3) {
- //r = proc_power3(path, PARAS_WRITE, NULL);
- }
- else {
- //r = proc_power(path, PARAS_WRITE, NULL);
- }
- }
- return r;
- }
- int paras_sensor_xport(char *path, int io)
- {
- int r=-1;
- char temp[100];
-
- if(io==PARAS_IMPORT) {
- //r = proc_sensor(path, PARAS_READ, NULL);
- }
- else if(io==PARAS_EXPORT) {
- //get_curtime_str(temp,sizeof(temp));
- sprintf(path, "/tmp/sensor_%s.ini", temp);
- //r = proc_sensor(path, PARAS_WRITE, NULL);
- }
- return r;
- }
|