Add poweroff function & status LED. Include 3D files for Seeed XIAO
This commit is contained in:
661
3D/Base.step
Normal file
661
3D/Base.step
Normal file
@@ -0,0 +1,661 @@
|
||||
ISO-10303-21;
|
||||
HEADER;
|
||||
/* Generated by software containing ST-Developer
|
||||
* from STEP Tools, Inc. (www.steptools.com)
|
||||
*/
|
||||
|
||||
FILE_DESCRIPTION(
|
||||
/* description */ (''),
|
||||
/* implementation_level */ '2;1');
|
||||
|
||||
FILE_NAME(
|
||||
/* name */ 'Base.step',
|
||||
/* time_stamp */ '2025-12-13T15:33:07Z',
|
||||
/* author */ (''),
|
||||
/* organization */ (''),
|
||||
/* preprocessor_version */ 'ST-DEVELOPER v20.1',
|
||||
/* originating_system */ 'Autodesk Translation Framework v14.21.0.0',
|
||||
/* authorisation */ '');
|
||||
|
||||
FILE_SCHEMA (('AUTOMOTIVE_DESIGN { 1 0 10303 214 3 1 1 }'));
|
||||
ENDSEC;
|
||||
|
||||
DATA;
|
||||
#10=MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#13),#583);
|
||||
#11=SHAPE_REPRESENTATION_RELATIONSHIP('SRR','None',#590,#12);
|
||||
#12=ADVANCED_BREP_SHAPE_REPRESENTATION('',(#14),#582);
|
||||
#13=STYLED_ITEM('',(#599),#14);
|
||||
#14=MANIFOLD_SOLID_BREP('Body3',#355);
|
||||
#15=PLANE('',#375);
|
||||
#16=PLANE('',#376);
|
||||
#17=PLANE('',#377);
|
||||
#18=PLANE('',#378);
|
||||
#19=PLANE('',#379);
|
||||
#20=PLANE('',#380);
|
||||
#21=PLANE('',#381);
|
||||
#22=PLANE('',#382);
|
||||
#23=PLANE('',#383);
|
||||
#24=PLANE('',#384);
|
||||
#25=PLANE('',#385);
|
||||
#26=PLANE('',#386);
|
||||
#27=PLANE('',#387);
|
||||
#28=PLANE('',#388);
|
||||
#29=PLANE('',#389);
|
||||
#30=PLANE('',#390);
|
||||
#31=FACE_OUTER_BOUND('',#49,.T.);
|
||||
#32=FACE_OUTER_BOUND('',#50,.T.);
|
||||
#33=FACE_OUTER_BOUND('',#51,.T.);
|
||||
#34=FACE_OUTER_BOUND('',#52,.T.);
|
||||
#35=FACE_OUTER_BOUND('',#53,.T.);
|
||||
#36=FACE_OUTER_BOUND('',#54,.T.);
|
||||
#37=FACE_OUTER_BOUND('',#55,.T.);
|
||||
#38=FACE_OUTER_BOUND('',#56,.T.);
|
||||
#39=FACE_OUTER_BOUND('',#57,.T.);
|
||||
#40=FACE_OUTER_BOUND('',#58,.T.);
|
||||
#41=FACE_OUTER_BOUND('',#59,.T.);
|
||||
#42=FACE_OUTER_BOUND('',#60,.T.);
|
||||
#43=FACE_OUTER_BOUND('',#61,.T.);
|
||||
#44=FACE_OUTER_BOUND('',#62,.T.);
|
||||
#45=FACE_OUTER_BOUND('',#63,.T.);
|
||||
#46=FACE_OUTER_BOUND('',#64,.T.);
|
||||
#47=FACE_OUTER_BOUND('',#65,.T.);
|
||||
#48=FACE_OUTER_BOUND('',#66,.T.);
|
||||
#49=EDGE_LOOP('',(#239,#240,#241,#242));
|
||||
#50=EDGE_LOOP('',(#243,#244,#245,#246));
|
||||
#51=EDGE_LOOP('',(#247,#248,#249,#250));
|
||||
#52=EDGE_LOOP('',(#251,#252,#253,#254,#255,#256,#257,#258));
|
||||
#53=EDGE_LOOP('',(#259,#260,#261,#262,#263,#264,#265,#266));
|
||||
#54=EDGE_LOOP('',(#267,#268,#269,#270,#271,#272,#273,#274));
|
||||
#55=EDGE_LOOP('',(#275,#276,#277,#278));
|
||||
#56=EDGE_LOOP('',(#279,#280,#281,#282));
|
||||
#57=EDGE_LOOP('',(#283,#284,#285,#286));
|
||||
#58=EDGE_LOOP('',(#287,#288,#289,#290,#291,#292,#293,#294));
|
||||
#59=EDGE_LOOP('',(#295,#296,#297,#298));
|
||||
#60=EDGE_LOOP('',(#299,#300,#301,#302));
|
||||
#61=EDGE_LOOP('',(#303,#304,#305,#306,#307,#308,#309,#310));
|
||||
#62=EDGE_LOOP('',(#311,#312,#313,#314));
|
||||
#63=EDGE_LOOP('',(#315,#316,#317,#318));
|
||||
#64=EDGE_LOOP('',(#319,#320,#321,#322));
|
||||
#65=EDGE_LOOP('',(#323,#324,#325,#326,#327,#328,#329,#330));
|
||||
#66=EDGE_LOOP('',(#331,#332,#333,#334));
|
||||
#67=LINE('',#487,#111);
|
||||
#68=LINE('',#490,#112);
|
||||
#69=LINE('',#496,#113);
|
||||
#70=LINE('',#499,#114);
|
||||
#71=LINE('',#501,#115);
|
||||
#72=LINE('',#502,#116);
|
||||
#73=LINE('',#505,#117);
|
||||
#74=LINE('',#507,#118);
|
||||
#75=LINE('',#509,#119);
|
||||
#76=LINE('',#511,#120);
|
||||
#77=LINE('',#513,#121);
|
||||
#78=LINE('',#515,#122);
|
||||
#79=LINE('',#516,#123);
|
||||
#80=LINE('',#519,#124);
|
||||
#81=LINE('',#521,#125);
|
||||
#82=LINE('',#523,#126);
|
||||
#83=LINE('',#525,#127);
|
||||
#84=LINE('',#527,#128);
|
||||
#85=LINE('',#529,#129);
|
||||
#86=LINE('',#530,#130);
|
||||
#87=LINE('',#533,#131);
|
||||
#88=LINE('',#535,#132);
|
||||
#89=LINE('',#536,#133);
|
||||
#90=LINE('',#539,#134);
|
||||
#91=LINE('',#541,#135);
|
||||
#92=LINE('',#542,#136);
|
||||
#93=LINE('',#545,#137);
|
||||
#94=LINE('',#547,#138);
|
||||
#95=LINE('',#548,#139);
|
||||
#96=LINE('',#550,#140);
|
||||
#97=LINE('',#551,#141);
|
||||
#98=LINE('',#554,#142);
|
||||
#99=LINE('',#556,#143);
|
||||
#100=LINE('',#557,#144);
|
||||
#101=LINE('',#561,#145);
|
||||
#102=LINE('',#562,#146);
|
||||
#103=LINE('',#563,#147);
|
||||
#104=LINE('',#566,#148);
|
||||
#105=LINE('',#568,#149);
|
||||
#106=LINE('',#569,#150);
|
||||
#107=LINE('',#571,#151);
|
||||
#108=LINE('',#572,#152);
|
||||
#109=LINE('',#576,#153);
|
||||
#110=LINE('',#578,#154);
|
||||
#111=VECTOR('',#397,10.);
|
||||
#112=VECTOR('',#400,10.);
|
||||
#113=VECTOR('',#405,10.);
|
||||
#114=VECTOR('',#408,10.);
|
||||
#115=VECTOR('',#411,10.);
|
||||
#116=VECTOR('',#412,10.);
|
||||
#117=VECTOR('',#415,10.);
|
||||
#118=VECTOR('',#416,10.);
|
||||
#119=VECTOR('',#417,10.);
|
||||
#120=VECTOR('',#418,10.);
|
||||
#121=VECTOR('',#419,10.);
|
||||
#122=VECTOR('',#420,10.);
|
||||
#123=VECTOR('',#421,10.);
|
||||
#124=VECTOR('',#424,10.);
|
||||
#125=VECTOR('',#425,10.);
|
||||
#126=VECTOR('',#426,10.);
|
||||
#127=VECTOR('',#427,10.);
|
||||
#128=VECTOR('',#428,10.);
|
||||
#129=VECTOR('',#429,10.);
|
||||
#130=VECTOR('',#430,10.);
|
||||
#131=VECTOR('',#433,10.);
|
||||
#132=VECTOR('',#434,10.);
|
||||
#133=VECTOR('',#435,10.);
|
||||
#134=VECTOR('',#438,10.);
|
||||
#135=VECTOR('',#439,10.);
|
||||
#136=VECTOR('',#440,10.);
|
||||
#137=VECTOR('',#443,10.);
|
||||
#138=VECTOR('',#444,10.);
|
||||
#139=VECTOR('',#445,10.);
|
||||
#140=VECTOR('',#448,10.);
|
||||
#141=VECTOR('',#449,10.);
|
||||
#142=VECTOR('',#452,10.);
|
||||
#143=VECTOR('',#453,10.);
|
||||
#144=VECTOR('',#454,10.);
|
||||
#145=VECTOR('',#457,10.);
|
||||
#146=VECTOR('',#458,10.);
|
||||
#147=VECTOR('',#459,10.);
|
||||
#148=VECTOR('',#462,10.);
|
||||
#149=VECTOR('',#463,10.);
|
||||
#150=VECTOR('',#464,10.);
|
||||
#151=VECTOR('',#467,10.);
|
||||
#152=VECTOR('',#468,10.);
|
||||
#153=VECTOR('',#475,10.);
|
||||
#154=VECTOR('',#478,10.);
|
||||
#155=CIRCLE('',#370,1.45);
|
||||
#156=CIRCLE('',#371,1.45);
|
||||
#157=CIRCLE('',#373,1.45);
|
||||
#158=CIRCLE('',#374,1.45);
|
||||
#159=VERTEX_POINT('',#483);
|
||||
#160=VERTEX_POINT('',#484);
|
||||
#161=VERTEX_POINT('',#486);
|
||||
#162=VERTEX_POINT('',#488);
|
||||
#163=VERTEX_POINT('',#492);
|
||||
#164=VERTEX_POINT('',#493);
|
||||
#165=VERTEX_POINT('',#495);
|
||||
#166=VERTEX_POINT('',#497);
|
||||
#167=VERTEX_POINT('',#504);
|
||||
#168=VERTEX_POINT('',#506);
|
||||
#169=VERTEX_POINT('',#508);
|
||||
#170=VERTEX_POINT('',#510);
|
||||
#171=VERTEX_POINT('',#512);
|
||||
#172=VERTEX_POINT('',#514);
|
||||
#173=VERTEX_POINT('',#518);
|
||||
#174=VERTEX_POINT('',#520);
|
||||
#175=VERTEX_POINT('',#522);
|
||||
#176=VERTEX_POINT('',#524);
|
||||
#177=VERTEX_POINT('',#526);
|
||||
#178=VERTEX_POINT('',#528);
|
||||
#179=VERTEX_POINT('',#532);
|
||||
#180=VERTEX_POINT('',#534);
|
||||
#181=VERTEX_POINT('',#538);
|
||||
#182=VERTEX_POINT('',#540);
|
||||
#183=VERTEX_POINT('',#544);
|
||||
#184=VERTEX_POINT('',#546);
|
||||
#185=VERTEX_POINT('',#553);
|
||||
#186=VERTEX_POINT('',#555);
|
||||
#187=VERTEX_POINT('',#559);
|
||||
#188=VERTEX_POINT('',#560);
|
||||
#189=VERTEX_POINT('',#565);
|
||||
#190=VERTEX_POINT('',#567);
|
||||
#191=EDGE_CURVE('',#159,#160,#155,.T.);
|
||||
#192=EDGE_CURVE('',#161,#159,#67,.T.);
|
||||
#193=EDGE_CURVE('',#162,#161,#156,.T.);
|
||||
#194=EDGE_CURVE('',#160,#162,#68,.T.);
|
||||
#195=EDGE_CURVE('',#163,#164,#157,.T.);
|
||||
#196=EDGE_CURVE('',#165,#163,#69,.T.);
|
||||
#197=EDGE_CURVE('',#166,#165,#158,.T.);
|
||||
#198=EDGE_CURVE('',#166,#164,#70,.T.);
|
||||
#199=EDGE_CURVE('',#164,#159,#71,.T.);
|
||||
#200=EDGE_CURVE('',#161,#166,#72,.T.);
|
||||
#201=EDGE_CURVE('',#163,#167,#73,.T.);
|
||||
#202=EDGE_CURVE('',#167,#168,#74,.T.);
|
||||
#203=EDGE_CURVE('',#168,#169,#75,.T.);
|
||||
#204=EDGE_CURVE('',#169,#170,#76,.T.);
|
||||
#205=EDGE_CURVE('',#170,#171,#77,.T.);
|
||||
#206=EDGE_CURVE('',#171,#172,#78,.T.);
|
||||
#207=EDGE_CURVE('',#172,#165,#79,.T.);
|
||||
#208=EDGE_CURVE('',#162,#173,#80,.T.);
|
||||
#209=EDGE_CURVE('',#173,#174,#81,.T.);
|
||||
#210=EDGE_CURVE('',#174,#175,#82,.T.);
|
||||
#211=EDGE_CURVE('',#175,#176,#83,.T.);
|
||||
#212=EDGE_CURVE('',#176,#177,#84,.T.);
|
||||
#213=EDGE_CURVE('',#177,#178,#85,.T.);
|
||||
#214=EDGE_CURVE('',#178,#160,#86,.T.);
|
||||
#215=EDGE_CURVE('',#172,#179,#87,.T.);
|
||||
#216=EDGE_CURVE('',#180,#179,#88,.T.);
|
||||
#217=EDGE_CURVE('',#173,#180,#89,.T.);
|
||||
#218=EDGE_CURVE('',#170,#181,#90,.T.);
|
||||
#219=EDGE_CURVE('',#182,#169,#91,.T.);
|
||||
#220=EDGE_CURVE('',#182,#181,#92,.T.);
|
||||
#221=EDGE_CURVE('',#181,#183,#93,.T.);
|
||||
#222=EDGE_CURVE('',#184,#182,#94,.T.);
|
||||
#223=EDGE_CURVE('',#184,#183,#95,.T.);
|
||||
#224=EDGE_CURVE('',#183,#175,#96,.T.);
|
||||
#225=EDGE_CURVE('',#176,#184,#97,.T.);
|
||||
#226=EDGE_CURVE('',#168,#185,#98,.T.);
|
||||
#227=EDGE_CURVE('',#186,#185,#99,.T.);
|
||||
#228=EDGE_CURVE('',#177,#186,#100,.T.);
|
||||
#229=EDGE_CURVE('',#187,#188,#101,.T.);
|
||||
#230=EDGE_CURVE('',#188,#186,#102,.T.);
|
||||
#231=EDGE_CURVE('',#185,#187,#103,.T.);
|
||||
#232=EDGE_CURVE('',#179,#189,#104,.T.);
|
||||
#233=EDGE_CURVE('',#189,#190,#105,.T.);
|
||||
#234=EDGE_CURVE('',#190,#180,#106,.T.);
|
||||
#235=EDGE_CURVE('',#178,#188,#107,.T.);
|
||||
#236=EDGE_CURVE('',#167,#187,#108,.T.);
|
||||
#237=EDGE_CURVE('',#174,#190,#109,.T.);
|
||||
#238=EDGE_CURVE('',#171,#189,#110,.T.);
|
||||
#239=ORIENTED_EDGE('',*,*,#191,.F.);
|
||||
#240=ORIENTED_EDGE('',*,*,#192,.F.);
|
||||
#241=ORIENTED_EDGE('',*,*,#193,.F.);
|
||||
#242=ORIENTED_EDGE('',*,*,#194,.F.);
|
||||
#243=ORIENTED_EDGE('',*,*,#195,.F.);
|
||||
#244=ORIENTED_EDGE('',*,*,#196,.F.);
|
||||
#245=ORIENTED_EDGE('',*,*,#197,.F.);
|
||||
#246=ORIENTED_EDGE('',*,*,#198,.T.);
|
||||
#247=ORIENTED_EDGE('',*,*,#199,.F.);
|
||||
#248=ORIENTED_EDGE('',*,*,#198,.F.);
|
||||
#249=ORIENTED_EDGE('',*,*,#200,.F.);
|
||||
#250=ORIENTED_EDGE('',*,*,#192,.T.);
|
||||
#251=ORIENTED_EDGE('',*,*,#196,.T.);
|
||||
#252=ORIENTED_EDGE('',*,*,#201,.T.);
|
||||
#253=ORIENTED_EDGE('',*,*,#202,.T.);
|
||||
#254=ORIENTED_EDGE('',*,*,#203,.T.);
|
||||
#255=ORIENTED_EDGE('',*,*,#204,.T.);
|
||||
#256=ORIENTED_EDGE('',*,*,#205,.T.);
|
||||
#257=ORIENTED_EDGE('',*,*,#206,.T.);
|
||||
#258=ORIENTED_EDGE('',*,*,#207,.T.);
|
||||
#259=ORIENTED_EDGE('',*,*,#194,.T.);
|
||||
#260=ORIENTED_EDGE('',*,*,#208,.T.);
|
||||
#261=ORIENTED_EDGE('',*,*,#209,.T.);
|
||||
#262=ORIENTED_EDGE('',*,*,#210,.T.);
|
||||
#263=ORIENTED_EDGE('',*,*,#211,.T.);
|
||||
#264=ORIENTED_EDGE('',*,*,#212,.T.);
|
||||
#265=ORIENTED_EDGE('',*,*,#213,.T.);
|
||||
#266=ORIENTED_EDGE('',*,*,#214,.T.);
|
||||
#267=ORIENTED_EDGE('',*,*,#193,.T.);
|
||||
#268=ORIENTED_EDGE('',*,*,#200,.T.);
|
||||
#269=ORIENTED_EDGE('',*,*,#197,.T.);
|
||||
#270=ORIENTED_EDGE('',*,*,#207,.F.);
|
||||
#271=ORIENTED_EDGE('',*,*,#215,.T.);
|
||||
#272=ORIENTED_EDGE('',*,*,#216,.F.);
|
||||
#273=ORIENTED_EDGE('',*,*,#217,.F.);
|
||||
#274=ORIENTED_EDGE('',*,*,#208,.F.);
|
||||
#275=ORIENTED_EDGE('',*,*,#218,.F.);
|
||||
#276=ORIENTED_EDGE('',*,*,#204,.F.);
|
||||
#277=ORIENTED_EDGE('',*,*,#219,.F.);
|
||||
#278=ORIENTED_EDGE('',*,*,#220,.T.);
|
||||
#279=ORIENTED_EDGE('',*,*,#221,.F.);
|
||||
#280=ORIENTED_EDGE('',*,*,#220,.F.);
|
||||
#281=ORIENTED_EDGE('',*,*,#222,.F.);
|
||||
#282=ORIENTED_EDGE('',*,*,#223,.T.);
|
||||
#283=ORIENTED_EDGE('',*,*,#224,.F.);
|
||||
#284=ORIENTED_EDGE('',*,*,#223,.F.);
|
||||
#285=ORIENTED_EDGE('',*,*,#225,.F.);
|
||||
#286=ORIENTED_EDGE('',*,*,#211,.F.);
|
||||
#287=ORIENTED_EDGE('',*,*,#225,.T.);
|
||||
#288=ORIENTED_EDGE('',*,*,#222,.T.);
|
||||
#289=ORIENTED_EDGE('',*,*,#219,.T.);
|
||||
#290=ORIENTED_EDGE('',*,*,#203,.F.);
|
||||
#291=ORIENTED_EDGE('',*,*,#226,.T.);
|
||||
#292=ORIENTED_EDGE('',*,*,#227,.F.);
|
||||
#293=ORIENTED_EDGE('',*,*,#228,.F.);
|
||||
#294=ORIENTED_EDGE('',*,*,#212,.F.);
|
||||
#295=ORIENTED_EDGE('',*,*,#229,.T.);
|
||||
#296=ORIENTED_EDGE('',*,*,#230,.T.);
|
||||
#297=ORIENTED_EDGE('',*,*,#227,.T.);
|
||||
#298=ORIENTED_EDGE('',*,*,#231,.T.);
|
||||
#299=ORIENTED_EDGE('',*,*,#232,.T.);
|
||||
#300=ORIENTED_EDGE('',*,*,#233,.T.);
|
||||
#301=ORIENTED_EDGE('',*,*,#234,.T.);
|
||||
#302=ORIENTED_EDGE('',*,*,#216,.T.);
|
||||
#303=ORIENTED_EDGE('',*,*,#191,.T.);
|
||||
#304=ORIENTED_EDGE('',*,*,#214,.F.);
|
||||
#305=ORIENTED_EDGE('',*,*,#235,.T.);
|
||||
#306=ORIENTED_EDGE('',*,*,#229,.F.);
|
||||
#307=ORIENTED_EDGE('',*,*,#236,.F.);
|
||||
#308=ORIENTED_EDGE('',*,*,#201,.F.);
|
||||
#309=ORIENTED_EDGE('',*,*,#195,.T.);
|
||||
#310=ORIENTED_EDGE('',*,*,#199,.T.);
|
||||
#311=ORIENTED_EDGE('',*,*,#202,.F.);
|
||||
#312=ORIENTED_EDGE('',*,*,#236,.T.);
|
||||
#313=ORIENTED_EDGE('',*,*,#231,.F.);
|
||||
#314=ORIENTED_EDGE('',*,*,#226,.F.);
|
||||
#315=ORIENTED_EDGE('',*,*,#213,.F.);
|
||||
#316=ORIENTED_EDGE('',*,*,#228,.T.);
|
||||
#317=ORIENTED_EDGE('',*,*,#230,.F.);
|
||||
#318=ORIENTED_EDGE('',*,*,#235,.F.);
|
||||
#319=ORIENTED_EDGE('',*,*,#209,.F.);
|
||||
#320=ORIENTED_EDGE('',*,*,#217,.T.);
|
||||
#321=ORIENTED_EDGE('',*,*,#234,.F.);
|
||||
#322=ORIENTED_EDGE('',*,*,#237,.F.);
|
||||
#323=ORIENTED_EDGE('',*,*,#224,.T.);
|
||||
#324=ORIENTED_EDGE('',*,*,#210,.F.);
|
||||
#325=ORIENTED_EDGE('',*,*,#237,.T.);
|
||||
#326=ORIENTED_EDGE('',*,*,#233,.F.);
|
||||
#327=ORIENTED_EDGE('',*,*,#238,.F.);
|
||||
#328=ORIENTED_EDGE('',*,*,#205,.F.);
|
||||
#329=ORIENTED_EDGE('',*,*,#218,.T.);
|
||||
#330=ORIENTED_EDGE('',*,*,#221,.T.);
|
||||
#331=ORIENTED_EDGE('',*,*,#206,.F.);
|
||||
#332=ORIENTED_EDGE('',*,*,#238,.T.);
|
||||
#333=ORIENTED_EDGE('',*,*,#232,.F.);
|
||||
#334=ORIENTED_EDGE('',*,*,#215,.F.);
|
||||
#335=CYLINDRICAL_SURFACE('',#369,1.45);
|
||||
#336=CYLINDRICAL_SURFACE('',#372,1.45);
|
||||
#337=ADVANCED_FACE('',(#31),#335,.F.);
|
||||
#338=ADVANCED_FACE('',(#32),#336,.F.);
|
||||
#339=ADVANCED_FACE('',(#33),#15,.F.);
|
||||
#340=ADVANCED_FACE('',(#34),#16,.F.);
|
||||
#341=ADVANCED_FACE('',(#35),#17,.F.);
|
||||
#342=ADVANCED_FACE('',(#36),#18,.T.);
|
||||
#343=ADVANCED_FACE('',(#37),#19,.F.);
|
||||
#344=ADVANCED_FACE('',(#38),#20,.F.);
|
||||
#345=ADVANCED_FACE('',(#39),#21,.F.);
|
||||
#346=ADVANCED_FACE('',(#40),#22,.T.);
|
||||
#347=ADVANCED_FACE('',(#41),#23,.F.);
|
||||
#348=ADVANCED_FACE('',(#42),#24,.T.);
|
||||
#349=ADVANCED_FACE('',(#43),#25,.T.);
|
||||
#350=ADVANCED_FACE('',(#44),#26,.T.);
|
||||
#351=ADVANCED_FACE('',(#45),#27,.T.);
|
||||
#352=ADVANCED_FACE('',(#46),#28,.T.);
|
||||
#353=ADVANCED_FACE('',(#47),#29,.T.);
|
||||
#354=ADVANCED_FACE('',(#48),#30,.T.);
|
||||
#355=CLOSED_SHELL('',(#337,#338,#339,#340,#341,#342,#343,#344,#345,#346,
|
||||
#347,#348,#349,#350,#351,#352,#353,#354));
|
||||
#356=DERIVED_UNIT_ELEMENT(#358,1.);
|
||||
#357=DERIVED_UNIT_ELEMENT(#585,-3.);
|
||||
#358=(
|
||||
MASS_UNIT()
|
||||
NAMED_UNIT(*)
|
||||
SI_UNIT(.KILO.,.GRAM.)
|
||||
);
|
||||
#359=DERIVED_UNIT((#356,#357));
|
||||
#360=MEASURE_REPRESENTATION_ITEM('density measure',
|
||||
POSITIVE_RATIO_MEASURE(7850.),#359);
|
||||
#361=PROPERTY_DEFINITION_REPRESENTATION(#366,#363);
|
||||
#362=PROPERTY_DEFINITION_REPRESENTATION(#367,#364);
|
||||
#363=REPRESENTATION('material name',(#365),#582);
|
||||
#364=REPRESENTATION('density',(#360),#582);
|
||||
#365=DESCRIPTIVE_REPRESENTATION_ITEM('Steel','Steel');
|
||||
#366=PROPERTY_DEFINITION('material property','material name',#592);
|
||||
#367=PROPERTY_DEFINITION('material property','density of part',#592);
|
||||
#368=AXIS2_PLACEMENT_3D('',#481,#391,#392);
|
||||
#369=AXIS2_PLACEMENT_3D('',#482,#393,#394);
|
||||
#370=AXIS2_PLACEMENT_3D('',#485,#395,#396);
|
||||
#371=AXIS2_PLACEMENT_3D('',#489,#398,#399);
|
||||
#372=AXIS2_PLACEMENT_3D('',#491,#401,#402);
|
||||
#373=AXIS2_PLACEMENT_3D('',#494,#403,#404);
|
||||
#374=AXIS2_PLACEMENT_3D('',#498,#406,#407);
|
||||
#375=AXIS2_PLACEMENT_3D('',#500,#409,#410);
|
||||
#376=AXIS2_PLACEMENT_3D('',#503,#413,#414);
|
||||
#377=AXIS2_PLACEMENT_3D('',#517,#422,#423);
|
||||
#378=AXIS2_PLACEMENT_3D('',#531,#431,#432);
|
||||
#379=AXIS2_PLACEMENT_3D('',#537,#436,#437);
|
||||
#380=AXIS2_PLACEMENT_3D('',#543,#441,#442);
|
||||
#381=AXIS2_PLACEMENT_3D('',#549,#446,#447);
|
||||
#382=AXIS2_PLACEMENT_3D('',#552,#450,#451);
|
||||
#383=AXIS2_PLACEMENT_3D('',#558,#455,#456);
|
||||
#384=AXIS2_PLACEMENT_3D('',#564,#460,#461);
|
||||
#385=AXIS2_PLACEMENT_3D('',#570,#465,#466);
|
||||
#386=AXIS2_PLACEMENT_3D('',#573,#469,#470);
|
||||
#387=AXIS2_PLACEMENT_3D('',#574,#471,#472);
|
||||
#388=AXIS2_PLACEMENT_3D('',#575,#473,#474);
|
||||
#389=AXIS2_PLACEMENT_3D('',#577,#476,#477);
|
||||
#390=AXIS2_PLACEMENT_3D('',#579,#479,#480);
|
||||
#391=DIRECTION('axis',(0.,0.,1.));
|
||||
#392=DIRECTION('refdir',(1.,0.,0.));
|
||||
#393=DIRECTION('center_axis',(-1.,0.,0.));
|
||||
#394=DIRECTION('ref_axis',(0.,1.,7.65671051465626E-16));
|
||||
#395=DIRECTION('center_axis',(1.,0.,0.));
|
||||
#396=DIRECTION('ref_axis',(0.,1.,7.65671051465626E-16));
|
||||
#397=DIRECTION('',(-1.,0.,0.));
|
||||
#398=DIRECTION('center_axis',(-1.,0.,5.18795807615523E-17));
|
||||
#399=DIRECTION('ref_axis',(0.,1.,7.65671051465626E-16));
|
||||
#400=DIRECTION('',(1.,0.,0.));
|
||||
#401=DIRECTION('center_axis',(-1.,0.,0.));
|
||||
#402=DIRECTION('ref_axis',(0.,7.65671051465626E-16,-1.));
|
||||
#403=DIRECTION('center_axis',(1.,0.,0.));
|
||||
#404=DIRECTION('ref_axis',(0.,7.65671051465626E-16,-1.));
|
||||
#405=DIRECTION('',(-1.,0.,0.));
|
||||
#406=DIRECTION('center_axis',(-1.,0.,5.18795807615523E-17));
|
||||
#407=DIRECTION('ref_axis',(0.,7.65671051465626E-16,-1.));
|
||||
#408=DIRECTION('',(-1.,0.,0.));
|
||||
#409=DIRECTION('center_axis',(0.,1.,1.03436927760108E-15));
|
||||
#410=DIRECTION('ref_axis',(-1.04646628663102E-32,1.03436927760108E-15,-1.));
|
||||
#411=DIRECTION('',(0.,-1.03436927760108E-15,1.));
|
||||
#412=DIRECTION('',(-5.18795807615523E-17,1.03436927760108E-15,-1.));
|
||||
#413=DIRECTION('center_axis',(0.,1.,0.));
|
||||
#414=DIRECTION('ref_axis',(0.,0.,1.));
|
||||
#415=DIRECTION('',(0.,0.,-1.));
|
||||
#416=DIRECTION('',(-1.,0.,0.));
|
||||
#417=DIRECTION('',(0.,0.,1.));
|
||||
#418=DIRECTION('',(-1.,0.,0.));
|
||||
#419=DIRECTION('',(0.,0.,-1.));
|
||||
#420=DIRECTION('',(1.,0.,0.));
|
||||
#421=DIRECTION('',(5.18795807615523E-17,0.,1.));
|
||||
#422=DIRECTION('center_axis',(0.,1.,0.));
|
||||
#423=DIRECTION('ref_axis',(0.,0.,1.));
|
||||
#424=DIRECTION('',(5.18795807615523E-17,0.,1.));
|
||||
#425=DIRECTION('',(-1.,0.,0.));
|
||||
#426=DIRECTION('',(0.,0.,-1.));
|
||||
#427=DIRECTION('',(1.,0.,0.));
|
||||
#428=DIRECTION('',(0.,0.,1.));
|
||||
#429=DIRECTION('',(1.,0.,0.));
|
||||
#430=DIRECTION('',(0.,0.,-1.));
|
||||
#431=DIRECTION('center_axis',(1.,0.,-5.18795807615523E-17));
|
||||
#432=DIRECTION('ref_axis',(-5.18795807615523E-17,0.,-1.));
|
||||
#433=DIRECTION('',(0.,1.,0.));
|
||||
#434=DIRECTION('',(-5.18795807615523E-17,0.,-1.));
|
||||
#435=DIRECTION('',(0.,1.,0.));
|
||||
#436=DIRECTION('center_axis',(0.,0.,-1.));
|
||||
#437=DIRECTION('ref_axis',(0.,-1.,0.));
|
||||
#438=DIRECTION('',(0.,1.,0.));
|
||||
#439=DIRECTION('',(0.,-1.,0.));
|
||||
#440=DIRECTION('',(-1.,0.,0.));
|
||||
#441=DIRECTION('center_axis',(0.,1.,0.));
|
||||
#442=DIRECTION('ref_axis',(0.,0.,-1.));
|
||||
#443=DIRECTION('',(0.,0.,1.));
|
||||
#444=DIRECTION('',(0.,0.,-1.));
|
||||
#445=DIRECTION('',(-1.,0.,0.));
|
||||
#446=DIRECTION('center_axis',(0.,0.,1.));
|
||||
#447=DIRECTION('ref_axis',(0.,1.,0.));
|
||||
#448=DIRECTION('',(0.,-1.,0.));
|
||||
#449=DIRECTION('',(0.,1.,0.));
|
||||
#450=DIRECTION('center_axis',(1.,0.,0.));
|
||||
#451=DIRECTION('ref_axis',(0.,0.,-1.));
|
||||
#452=DIRECTION('',(0.,1.,0.));
|
||||
#453=DIRECTION('',(0.,0.,-1.));
|
||||
#454=DIRECTION('',(0.,1.,0.));
|
||||
#455=DIRECTION('center_axis',(0.,1.,0.));
|
||||
#456=DIRECTION('ref_axis',(0.,0.,1.));
|
||||
#457=DIRECTION('',(0.,0.,1.));
|
||||
#458=DIRECTION('',(-1.,0.,0.));
|
||||
#459=DIRECTION('',(1.,0.,0.));
|
||||
#460=DIRECTION('center_axis',(0.,1.,0.));
|
||||
#461=DIRECTION('ref_axis',(0.,0.,1.));
|
||||
#462=DIRECTION('',(-1.,0.,0.));
|
||||
#463=DIRECTION('',(0.,0.,1.));
|
||||
#464=DIRECTION('',(1.,0.,0.));
|
||||
#465=DIRECTION('center_axis',(-1.,0.,0.));
|
||||
#466=DIRECTION('ref_axis',(0.,0.,1.));
|
||||
#467=DIRECTION('',(0.,1.,0.));
|
||||
#468=DIRECTION('',(0.,1.,0.));
|
||||
#469=DIRECTION('center_axis',(0.,0.,1.));
|
||||
#470=DIRECTION('ref_axis',(1.,0.,0.));
|
||||
#471=DIRECTION('center_axis',(0.,0.,-1.));
|
||||
#472=DIRECTION('ref_axis',(-1.,0.,0.));
|
||||
#473=DIRECTION('center_axis',(0.,0.,1.));
|
||||
#474=DIRECTION('ref_axis',(1.,0.,0.));
|
||||
#475=DIRECTION('',(0.,1.,0.));
|
||||
#476=DIRECTION('center_axis',(-1.,0.,0.));
|
||||
#477=DIRECTION('ref_axis',(0.,0.,1.));
|
||||
#478=DIRECTION('',(0.,1.,0.));
|
||||
#479=DIRECTION('center_axis',(0.,0.,-1.));
|
||||
#480=DIRECTION('ref_axis',(-1.,0.,0.));
|
||||
#481=CARTESIAN_POINT('',(0.,0.,0.));
|
||||
#482=CARTESIAN_POINT('Origin',(1.69999998882413,2.74999998509883,3.23139995541251));
|
||||
#483=CARTESIAN_POINT('',(0.499999988824129,4.19999998509883,3.23139995541251));
|
||||
#484=CARTESIAN_POINT('',(0.499999988824129,2.86139135040288,4.67711499086579));
|
||||
#485=CARTESIAN_POINT('Origin',(0.499999988824129,2.74999998509883,3.23139995541251));
|
||||
#486=CARTESIAN_POINT('',(1.69999998882413,4.19999998509883,3.23139995541251));
|
||||
#487=CARTESIAN_POINT('',(1.69999998882413,4.19999998509883,3.23139995541251));
|
||||
#488=CARTESIAN_POINT('',(1.69999998882413,2.86139135040288,4.67711499086579));
|
||||
#489=CARTESIAN_POINT('Origin',(1.69999998882413,2.74999998509883,3.23139995541251));
|
||||
#490=CARTESIAN_POINT('',(1.69999998882413,2.86139135040288,4.67711499086579));
|
||||
#491=CARTESIAN_POINT('Origin',(1.69999998882413,2.74999998509884,-3.20860004458749));
|
||||
#492=CARTESIAN_POINT('',(0.499999988824129,2.86139135040288,-4.65431508004078));
|
||||
#493=CARTESIAN_POINT('',(0.499999988824129,4.19999998509884,-3.20860004458749));
|
||||
#494=CARTESIAN_POINT('Origin',(0.499999988824129,2.74999998509884,-3.20860004458749));
|
||||
#495=CARTESIAN_POINT('',(1.69999998882413,2.86139135040288,-4.65431508004078));
|
||||
#496=CARTESIAN_POINT('',(1.69999998882413,2.86139135040288,-4.65431508004078));
|
||||
#497=CARTESIAN_POINT('',(1.69999998882413,4.19999998509884,-3.20860004458749));
|
||||
#498=CARTESIAN_POINT('Origin',(1.69999998882413,2.74999998509884,-3.20860004458749));
|
||||
#499=CARTESIAN_POINT('',(1.69999998882413,4.19999998509884,-3.20860004458749));
|
||||
#500=CARTESIAN_POINT('Origin',(1.69999998882413,4.19999998509883,3.23139995541251));
|
||||
#501=CARTESIAN_POINT('',(0.499999988824129,4.19999998509884,-3.13429991612297));
|
||||
#502=CARTESIAN_POINT('',(1.69999998882413,4.19999998509883,6.96570004848677));
|
||||
#503=CARTESIAN_POINT('Origin',(-29.2500004451722,2.86139135040288,1.76951289176941E-7));
|
||||
#504=CARTESIAN_POINT('',(0.499999988824129,2.86139135040288,-9.49999978765845));
|
||||
#505=CARTESIAN_POINT('',(0.499999988824129,2.86139135040288,-4.74999980535358));
|
||||
#506=CARTESIAN_POINT('',(-59.0000008791685,2.86139135040288,-9.49999978765845));
|
||||
#507=CARTESIAN_POINT('',(-44.1250006621704,2.86139135040288,-9.49999978765845));
|
||||
#508=CARTESIAN_POINT('',(-59.0000008791685,2.86139135040288,-3.78104420037607));
|
||||
#509=CARTESIAN_POINT('',(-59.0000008791685,2.86139135040288,4.75000015925616));
|
||||
#510=CARTESIAN_POINT('',(-60.2000008791685,2.86139135040288,-3.78104420037607));
|
||||
#511=CARTESIAN_POINT('',(-44.1250006621704,2.86139135040288,-3.78104420037607));
|
||||
#512=CARTESIAN_POINT('',(-60.2000008791685,2.86139135040288,-10.6999997876585));
|
||||
#513=CARTESIAN_POINT('',(-60.2000008791685,2.86139135040288,-5.34999980535358));
|
||||
#514=CARTESIAN_POINT('',(1.69999998882413,2.86139135040288,-10.6999997876585));
|
||||
#515=CARTESIAN_POINT('',(-13.775000228174,2.86139135040288,-10.6999997876585));
|
||||
#516=CARTESIAN_POINT('',(1.69999998882413,2.86139135040288,5.35000015925616));
|
||||
#517=CARTESIAN_POINT('Origin',(-29.2500004451722,2.86139135040288,1.76951289176941E-7));
|
||||
#518=CARTESIAN_POINT('',(1.69999998882413,2.86139135040288,10.700000141561));
|
||||
#519=CARTESIAN_POINT('',(1.69999998882413,2.86139135040288,5.35000015925616));
|
||||
#520=CARTESIAN_POINT('',(-60.2000008791685,2.86139135040288,10.700000141561));
|
||||
#521=CARTESIAN_POINT('',(-44.7250006621704,2.86139135040288,10.700000141561));
|
||||
#522=CARTESIAN_POINT('',(-60.2000008791685,2.86139135040288,3.91895579962393));
|
||||
#523=CARTESIAN_POINT('',(-60.2000008791685,2.86139135040288,-5.34999980535358));
|
||||
#524=CARTESIAN_POINT('',(-59.0000008791685,2.86139135040288,3.91895579962393));
|
||||
#525=CARTESIAN_POINT('',(-44.1250006621704,2.86139135040288,3.91895579962393));
|
||||
#526=CARTESIAN_POINT('',(-59.0000008791685,2.86139135040288,9.50000014156103));
|
||||
#527=CARTESIAN_POINT('',(-59.0000008791685,2.86139135040288,4.75000015925616));
|
||||
#528=CARTESIAN_POINT('',(0.499999988824129,2.86139135040288,9.50000014156103));
|
||||
#529=CARTESIAN_POINT('',(-14.375000228174,2.86139135040288,9.50000014156103));
|
||||
#530=CARTESIAN_POINT('',(0.499999988824129,2.86139135040288,-4.74999980535358));
|
||||
#531=CARTESIAN_POINT('Origin',(1.69999998882413,2.86139135040288,10.700000141561));
|
||||
#532=CARTESIAN_POINT('',(1.69999998882413,28.3613913504029,-10.6999997876585));
|
||||
#533=CARTESIAN_POINT('',(1.69999998882413,2.86139135040288,-10.6999997876585));
|
||||
#534=CARTESIAN_POINT('',(1.69999998882413,28.3613913504029,10.700000141561));
|
||||
#535=CARTESIAN_POINT('',(1.69999998882413,28.3613913504029,5.35000015925616));
|
||||
#536=CARTESIAN_POINT('',(1.69999998882413,2.86139135040288,10.700000141561));
|
||||
#537=CARTESIAN_POINT('Origin',(-59.0000008791685,5.46139135040288,-3.78104420037607));
|
||||
#538=CARTESIAN_POINT('',(-60.2000008791685,5.46139135040288,-3.78104420037607));
|
||||
#539=CARTESIAN_POINT('',(-60.2000008791685,4.16139135040288,-3.78104420037607));
|
||||
#540=CARTESIAN_POINT('',(-59.0000008791685,5.46139135040288,-3.78104420037607));
|
||||
#541=CARTESIAN_POINT('',(-59.0000008791685,4.16139135040288,-3.78104420037607));
|
||||
#542=CARTESIAN_POINT('',(-59.0000008791685,5.46139135040288,-3.78104420037607));
|
||||
#543=CARTESIAN_POINT('Origin',(-59.0000008791685,5.46139135040288,3.91895579962393));
|
||||
#544=CARTESIAN_POINT('',(-60.2000008791685,5.46139135040288,3.91895579962393));
|
||||
#545=CARTESIAN_POINT('',(-60.2000008791685,5.46139135040288,-3.39052199401726));
|
||||
#546=CARTESIAN_POINT('',(-59.0000008791685,5.46139135040288,3.91895579962393));
|
||||
#547=CARTESIAN_POINT('',(-59.0000008791685,5.46139135040288,6.70947797059248));
|
||||
#548=CARTESIAN_POINT('',(-59.0000008791685,5.46139135040288,3.91895579962393));
|
||||
#549=CARTESIAN_POINT('Origin',(-59.0000008791685,2.86139135040288,3.91895579962393));
|
||||
#550=CARTESIAN_POINT('',(-60.2000008791685,2.86139135040288,3.91895579962393));
|
||||
#551=CARTESIAN_POINT('',(-59.0000008791685,2.86139135040288,3.91895579962393));
|
||||
#552=CARTESIAN_POINT('Origin',(-59.0000008791685,2.86139135040288,9.50000014156103));
|
||||
#553=CARTESIAN_POINT('',(-59.0000008791685,26.8613913504029,-9.49999978765845));
|
||||
#554=CARTESIAN_POINT('',(-59.0000008791685,2.86139135040288,-9.49999978765845));
|
||||
#555=CARTESIAN_POINT('',(-59.0000008791685,26.8613913504029,9.50000014156103));
|
||||
#556=CARTESIAN_POINT('',(-59.0000008791685,26.8613913504029,4.75000015925616));
|
||||
#557=CARTESIAN_POINT('',(-59.0000008791685,2.86139135040288,9.50000014156103));
|
||||
#558=CARTESIAN_POINT('Origin',(-29.2500004451722,26.8613913504029,1.76951289176941E-7));
|
||||
#559=CARTESIAN_POINT('',(0.499999988824129,26.8613913504029,-9.49999978765845));
|
||||
#560=CARTESIAN_POINT('',(0.499999988824129,26.8613913504029,9.50000014156103));
|
||||
#561=CARTESIAN_POINT('',(0.499999988824129,26.8613913504029,-4.74999980535358));
|
||||
#562=CARTESIAN_POINT('',(-14.375000228174,26.8613913504029,9.50000014156103));
|
||||
#563=CARTESIAN_POINT('',(-44.1250006621704,26.8613913504029,-9.49999978765845));
|
||||
#564=CARTESIAN_POINT('Origin',(-29.2500004451722,28.3613913504029,1.76951289176941E-7));
|
||||
#565=CARTESIAN_POINT('',(-60.2000008791685,28.3613913504029,-10.6999997876585));
|
||||
#566=CARTESIAN_POINT('',(-13.775000228174,28.3613913504029,-10.6999997876585));
|
||||
#567=CARTESIAN_POINT('',(-60.2000008791685,28.3613913504029,10.700000141561));
|
||||
#568=CARTESIAN_POINT('',(-60.2000008791685,28.3613913504029,-5.34999980535358));
|
||||
#569=CARTESIAN_POINT('',(-44.7250006621704,28.3613913504029,10.700000141561));
|
||||
#570=CARTESIAN_POINT('Origin',(0.499999988824129,2.86139135040288,-9.49999978765845));
|
||||
#571=CARTESIAN_POINT('',(0.499999988824129,2.86139135040288,9.50000014156103));
|
||||
#572=CARTESIAN_POINT('',(0.499999988824129,2.86139135040288,-9.49999978765845));
|
||||
#573=CARTESIAN_POINT('Origin',(-59.0000008791685,2.86139135040288,-9.49999978765845));
|
||||
#574=CARTESIAN_POINT('Origin',(0.499999988824129,2.86139135040288,9.50000014156103));
|
||||
#575=CARTESIAN_POINT('Origin',(-60.2000008791685,2.86139135040288,10.700000141561));
|
||||
#576=CARTESIAN_POINT('',(-60.2000008791685,2.86139135040288,10.700000141561));
|
||||
#577=CARTESIAN_POINT('Origin',(-60.2000008791685,2.86139135040288,-10.6999997876585));
|
||||
#578=CARTESIAN_POINT('',(-60.2000008791685,2.86139135040288,-10.6999997876585));
|
||||
#579=CARTESIAN_POINT('Origin',(1.69999998882413,2.86139135040288,-10.6999997876585));
|
||||
#580=UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(0.01),#584,
|
||||
'DISTANCE_ACCURACY_VALUE',
|
||||
'Maximum model space distance between geometric entities at asserted c
|
||||
onnectivities');
|
||||
#581=UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(0.01),#584,
|
||||
'DISTANCE_ACCURACY_VALUE',
|
||||
'Maximum model space distance between geometric entities at asserted c
|
||||
onnectivities');
|
||||
#582=(
|
||||
GEOMETRIC_REPRESENTATION_CONTEXT(3)
|
||||
GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#580))
|
||||
GLOBAL_UNIT_ASSIGNED_CONTEXT((#584,#586,#587))
|
||||
REPRESENTATION_CONTEXT('','3D')
|
||||
);
|
||||
#583=(
|
||||
GEOMETRIC_REPRESENTATION_CONTEXT(3)
|
||||
GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#581))
|
||||
GLOBAL_UNIT_ASSIGNED_CONTEXT((#584,#586,#587))
|
||||
REPRESENTATION_CONTEXT('','3D')
|
||||
);
|
||||
#584=(
|
||||
LENGTH_UNIT()
|
||||
NAMED_UNIT(*)
|
||||
SI_UNIT(.MILLI.,.METRE.)
|
||||
);
|
||||
#585=(
|
||||
LENGTH_UNIT()
|
||||
NAMED_UNIT(*)
|
||||
SI_UNIT($,.METRE.)
|
||||
);
|
||||
#586=(
|
||||
NAMED_UNIT(*)
|
||||
PLANE_ANGLE_UNIT()
|
||||
SI_UNIT($,.RADIAN.)
|
||||
);
|
||||
#587=(
|
||||
NAMED_UNIT(*)
|
||||
SI_UNIT($,.STERADIAN.)
|
||||
SOLID_ANGLE_UNIT()
|
||||
);
|
||||
#588=SHAPE_DEFINITION_REPRESENTATION(#589,#590);
|
||||
#589=PRODUCT_DEFINITION_SHAPE('',$,#592);
|
||||
#590=SHAPE_REPRESENTATION('',(#368),#582);
|
||||
#591=PRODUCT_DEFINITION_CONTEXT('part definition',#596,'design');
|
||||
#592=PRODUCT_DEFINITION('Base','Base',#593,#591);
|
||||
#593=PRODUCT_DEFINITION_FORMATION('',$,#598);
|
||||
#594=PRODUCT_RELATED_PRODUCT_CATEGORY('Base','Base',(#598));
|
||||
#595=APPLICATION_PROTOCOL_DEFINITION('international standard',
|
||||
'automotive_design',2009,#596);
|
||||
#596=APPLICATION_CONTEXT(
|
||||
'Core Data for Automotive Mechanical Design Process');
|
||||
#597=PRODUCT_CONTEXT('part definition',#596,'mechanical');
|
||||
#598=PRODUCT('Base','Base',$,(#597));
|
||||
#599=PRESENTATION_STYLE_ASSIGNMENT((#600));
|
||||
#600=SURFACE_STYLE_USAGE(.BOTH.,#601);
|
||||
#601=SURFACE_SIDE_STYLE('',(#602));
|
||||
#602=SURFACE_STYLE_FILL_AREA(#603);
|
||||
#603=FILL_AREA_STYLE('Steel - Satin',(#604));
|
||||
#604=FILL_AREA_STYLE_COLOUR('Steel - Satin',#605);
|
||||
#605=COLOUR_RGB('Steel - Satin',0.627450980392157,0.627450980392157,0.627450980392157);
|
||||
ENDSEC;
|
||||
END-ISO-10303-21;
|
||||
3450
3D/Lid.step
Normal file
3450
3D/Lid.step
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1,15 +1,20 @@
|
||||
menu "espScope Configuration"
|
||||
config LED_BUILTIN
|
||||
int "LED IO Pin"
|
||||
default 15
|
||||
help
|
||||
LED IO pin
|
||||
|
||||
config ESP_WIFI_SSID
|
||||
string "WiFi SSID"
|
||||
default "myssid"
|
||||
help
|
||||
SSID (network name) to connect to.
|
||||
Default SSID (network name) to connect to. You can change this onece connected via the web interface.
|
||||
|
||||
config ESP_WIFI_PASSWORD
|
||||
string "WiFi Password"
|
||||
default "mypassword"
|
||||
help
|
||||
WiFi password.
|
||||
Default SSID password. You can change this onece connected via the web interface.
|
||||
|
||||
endmenu
|
||||
|
||||
@@ -111,13 +111,14 @@
|
||||
direction: rtl;
|
||||
}
|
||||
|
||||
#resetBtn {
|
||||
#resetBtn, #powerOff {
|
||||
background: #222;
|
||||
color: #e66;
|
||||
border: 1px solid;
|
||||
font-size: 0.8rem;
|
||||
height: 4em;
|
||||
width: 6em;
|
||||
vertical-align: middle;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
@@ -168,7 +169,10 @@
|
||||
<input type="number" id="testHz" value="100" min="1" max="10000">
|
||||
</div>
|
||||
</div>
|
||||
<button id="resetBtn">Reset</button>
|
||||
<div>
|
||||
<button id="resetBtn">Reset</button>
|
||||
<button id="powerOff">Power off</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -452,6 +452,9 @@ document.getElementById('resetBtn').addEventListener('click', () => {
|
||||
localStorage.clear();
|
||||
window.location.reload();
|
||||
});
|
||||
document.getElementById('powerOff').addEventListener('click', () => {
|
||||
navigator.sendBeacon("/poweroff");
|
||||
});
|
||||
setParams();
|
||||
connect();
|
||||
|
||||
|
||||
245
main/main.c
245
main/main.c
@@ -1,3 +1,9 @@
|
||||
#include <inttypes.h>
|
||||
#include <stdbool.h>
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "cJSON.h"
|
||||
#include "driver/gpio.h"
|
||||
#include "driver/ledc.h"
|
||||
@@ -5,20 +11,16 @@
|
||||
#include "esp_event.h"
|
||||
#include "esp_http_server.h"
|
||||
#include "esp_log.h"
|
||||
#include "esp_sleep.h"
|
||||
#include "esp_system.h"
|
||||
#include "esp_wifi.h"
|
||||
#include "freertos/FreeRTOS.h"
|
||||
#include "freertos/event_groups.h"
|
||||
#include "freertos/task.h"
|
||||
#include "nvs_flash.h"
|
||||
#include <inttypes.h>
|
||||
#include <stdbool.h>
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
// Tag for logging
|
||||
static const char *TAG = "ESP-SCOPE";
|
||||
static const char* TAG = "ESP-SCOPE";
|
||||
|
||||
// WiFi configuration from Kconfig
|
||||
/* See untracked wifi-credentials.h */
|
||||
@@ -65,7 +67,6 @@ static httpd_handle_t s_server = NULL;
|
||||
|
||||
static adc_continuous_handle_t adc_handle = NULL;
|
||||
|
||||
|
||||
// Single client support for simplicity, or use a list for multiple
|
||||
static int s_ws_client_fd = -1;
|
||||
|
||||
@@ -78,40 +79,38 @@ static uint16_t s_test_hz = 100;
|
||||
|
||||
// Forward declarations
|
||||
static void wifi_init_sta(void);
|
||||
static void continuous_adc_init(adc_channel_t *channel, uint8_t channel_num,
|
||||
adc_continuous_handle_t *out_handle);
|
||||
static esp_err_t ws_handler(httpd_req_t *req);
|
||||
static void continuous_adc_init(adc_channel_t* channel, uint8_t channel_num,
|
||||
adc_continuous_handle_t* out_handle);
|
||||
static esp_err_t ws_handler(httpd_req_t* req);
|
||||
|
||||
// Forward declarations
|
||||
static void wifi_init_sta(void);
|
||||
static void continuous_adc_init(adc_channel_t *channel, uint8_t channel_num,
|
||||
adc_continuous_handle_t *out_handle);
|
||||
static esp_err_t ws_handler(httpd_req_t *req);
|
||||
static void continuous_adc_init(adc_channel_t* channel, uint8_t channel_num,
|
||||
adc_continuous_handle_t* out_handle);
|
||||
static esp_err_t ws_handler(httpd_req_t* req);
|
||||
|
||||
// Helper to calculate optimal buffer size (approx 50ms latency, max 4096, aligned to 4)
|
||||
static uint32_t get_optimal_buffer_size(uint32_t sample_rate) {
|
||||
uint32_t bytes_per_sec = sample_rate * sizeof(adc_digi_output_data_t);
|
||||
uint32_t target_size = bytes_per_sec / 50; // 20ms (50Hz)
|
||||
uint32_t bytes_per_sec = sample_rate * sizeof(adc_digi_output_data_t);
|
||||
uint32_t target_size = bytes_per_sec / 50; // 20ms (50Hz)
|
||||
|
||||
// Clamp to min/max
|
||||
if (target_size < 128) target_size = 128;
|
||||
if (target_size > ADC_READ_LEN) target_size = ADC_READ_LEN;
|
||||
// Clamp to min/max
|
||||
if (target_size < 128) target_size = 128;
|
||||
if (target_size > ADC_READ_LEN) target_size = ADC_READ_LEN;
|
||||
|
||||
// Align to 4 bytes
|
||||
return (target_size + 3) & ~3;
|
||||
// Align to 4 bytes
|
||||
return (target_size + 3) & ~3;
|
||||
}
|
||||
|
||||
/*
|
||||
* Task to read from ADC Continuous driver
|
||||
*/
|
||||
static void adc_read_task(void *arg) {
|
||||
static void adc_read_task(void* arg) {
|
||||
esp_err_t ret;
|
||||
uint32_t ret_num = 0;
|
||||
uint8_t result[ADC_READ_LEN] = {0};
|
||||
memset(result, 0xcc, ADC_READ_LEN);
|
||||
|
||||
|
||||
|
||||
// ADC Init (Moved from app_main)
|
||||
// TODO: Make this configurable or find a good default pin.
|
||||
// For ESP32C6 ADC1 Channel 0 is usually GPIO 0. Let's use Channel 0 for now.
|
||||
@@ -157,7 +156,6 @@ static void adc_read_task(void *arg) {
|
||||
if (ret == ESP_OK) {
|
||||
// ESP_LOGI(TAG, "ret is %x, ret_num is %"PRIu32" bytes", ret, ret_num);
|
||||
|
||||
|
||||
// OPTIMIZED BATCH SENDING
|
||||
// We have `ret_num` bytes of data in `result`.
|
||||
// It contains `adc_digi_output_data_t` structs (4 bytes each).
|
||||
@@ -166,39 +164,37 @@ static void adc_read_task(void *arg) {
|
||||
// So we have 1/2 the size.
|
||||
|
||||
if (s_ws_client_fd != -1) {
|
||||
// Allocate a small temp buffer on stack or static to avoid malloc in loop
|
||||
// ret_num is up to ADC_READ_LEN (1024). 1024 / 4 = 256 samples.
|
||||
// 256 * 2 bytes = 512 bytes output. Stack safe.
|
||||
uint16_t out_buf[ADC_READ_LEN / sizeof(adc_digi_output_data_t)];
|
||||
int out_idx = 0;
|
||||
|
||||
// Allocate a small temp buffer on stack or static to avoid malloc in loop
|
||||
// ret_num is up to ADC_READ_LEN (1024). 1024 / 4 = 256 samples.
|
||||
// 256 * 2 bytes = 512 bytes output. Stack safe.
|
||||
uint16_t out_buf[ADC_READ_LEN / sizeof(adc_digi_output_data_t)];
|
||||
int out_idx = 0;
|
||||
for (int i = 0; i < ret_num; i += sizeof(adc_digi_output_data_t)) {
|
||||
adc_digi_output_data_t* p = (adc_digi_output_data_t*)&result[i];
|
||||
uint32_t val = ADC_GET_DATA(p);
|
||||
out_buf[out_idx++] = (uint16_t)val;
|
||||
}
|
||||
|
||||
for (int i = 0; i < ret_num; i += sizeof(adc_digi_output_data_t)) {
|
||||
adc_digi_output_data_t *p = (adc_digi_output_data_t *)&result[i];
|
||||
uint32_t val = ADC_GET_DATA(p);
|
||||
out_buf[out_idx++] = (uint16_t)val;
|
||||
}
|
||||
|
||||
if (out_idx > 0) {
|
||||
httpd_ws_frame_t ws_frame = {
|
||||
.final = true,
|
||||
.fragmented = false,
|
||||
.type = HTTPD_WS_TYPE_BINARY,
|
||||
.payload = (uint8_t *)out_buf,
|
||||
.len = out_idx * sizeof(uint16_t)
|
||||
};
|
||||
|
||||
// Non-blocking send (best effort)
|
||||
esp_err_t ret_ws = httpd_ws_send_frame_async(s_server, s_ws_client_fd, &ws_frame);
|
||||
if (ret_ws != ESP_OK) {
|
||||
ESP_LOGW(TAG, "dropped: %s", esp_err_to_name(ret_ws));
|
||||
|
||||
// Invalidate FD if it's no longer valid (client disconnected)
|
||||
if (ret_ws == ESP_ERR_INVALID_ARG || ret_ws == ESP_FAIL) {
|
||||
s_ws_client_fd = -1;
|
||||
}
|
||||
}
|
||||
if (out_idx > 0) {
|
||||
httpd_ws_frame_t ws_frame = {
|
||||
.final = true,
|
||||
.fragmented = false,
|
||||
.type = HTTPD_WS_TYPE_BINARY,
|
||||
.payload = (uint8_t*)out_buf,
|
||||
.len = out_idx * sizeof(uint16_t)};
|
||||
|
||||
// Non-blocking send (best effort)
|
||||
esp_err_t ret_ws = httpd_ws_send_frame_async(s_server, s_ws_client_fd, &ws_frame);
|
||||
if (ret_ws != ESP_OK) {
|
||||
ESP_LOGW(TAG, "dropped: %s", esp_err_to_name(ret_ws));
|
||||
|
||||
// Invalidate FD if it's no longer valid (client disconnected)
|
||||
if (ret_ws == ESP_ERR_INVALID_ARG || ret_ws == ESP_FAIL) {
|
||||
s_ws_client_fd = -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -213,11 +209,8 @@ static void adc_read_task(void *arg) {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void continuous_adc_init(adc_channel_t *channel, uint8_t channel_num,
|
||||
adc_continuous_handle_t *out_handle) {
|
||||
|
||||
static void continuous_adc_init(adc_channel_t* channel, uint8_t channel_num,
|
||||
adc_continuous_handle_t* out_handle) {
|
||||
uint32_t frame_size = get_optimal_buffer_size(s_sample_rate);
|
||||
ESP_LOGI(TAG, "Dynamic Buffer Size: %lu bytes", frame_size);
|
||||
|
||||
@@ -271,30 +264,39 @@ static void start_test_signal(uint32_t hz) {
|
||||
}
|
||||
ESP_LOGI(TAG, "Starting test signal at %u Hz", hz);
|
||||
ledc_timer_config_t ledc_timer = {
|
||||
.speed_mode = LEDC_LOW_SPEED_MODE,
|
||||
.duty_resolution = LEDC_TIMER_14_BIT,
|
||||
.timer_num = LEDC_TIMER_0,
|
||||
.freq_hz = hz,
|
||||
.clk_cfg = LEDC_AUTO_CLK
|
||||
};
|
||||
.speed_mode = LEDC_LOW_SPEED_MODE,
|
||||
.duty_resolution = LEDC_TIMER_14_BIT,
|
||||
.timer_num = LEDC_TIMER_0,
|
||||
.freq_hz = hz,
|
||||
.clk_cfg = LEDC_AUTO_CLK};
|
||||
ledc_channel_config_t ledc_channel = {
|
||||
.gpio_num = 1, // GPIO data pin 1
|
||||
.speed_mode = LEDC_LOW_SPEED_MODE,
|
||||
.channel = LEDC_CHANNEL_0,
|
||||
.timer_sel = LEDC_TIMER_0,
|
||||
.duty = 1 << (ledc_timer.duty_resolution - 1), // 512, // 50% duty cycle (1024 / 2 for 10-bit resolution)
|
||||
.hpoint = 0
|
||||
};
|
||||
.gpio_num = 1, // GPIO data pin 1
|
||||
.speed_mode = LEDC_LOW_SPEED_MODE,
|
||||
.channel = LEDC_CHANNEL_0,
|
||||
.timer_sel = LEDC_TIMER_0,
|
||||
.duty = 1 << (ledc_timer.duty_resolution - 1), // 512, // 50% duty cycle (1024 / 2 for 10-bit resolution)
|
||||
.hpoint = 0};
|
||||
|
||||
// Initialize the PWM
|
||||
ledc_timer_config(&ledc_timer);
|
||||
ledc_channel_config(&ledc_channel);
|
||||
// Start the PWM signal
|
||||
ledc_set_duty(ledc_channel.speed_mode, ledc_channel.channel, ledc_channel.duty); // 50% duty cycle
|
||||
ledc_set_duty(ledc_channel.speed_mode, ledc_channel.channel, ledc_channel.duty); // 50% duty cycle
|
||||
ledc_update_duty(ledc_channel.speed_mode, ledc_channel.channel);
|
||||
ledc_inited = true;
|
||||
}
|
||||
|
||||
static void show_status_led() {
|
||||
#ifdef CONFIG_LED_BUILTIN
|
||||
while (true) {
|
||||
vTaskDelay(pdMS_TO_TICKS(100));
|
||||
gpio_set_level(CONFIG_LED_BUILTIN, 1);
|
||||
vTaskDelay(pdMS_TO_TICKS(s_ws_client_fd == -1 ? 900 : 200));
|
||||
gpio_set_level(CONFIG_LED_BUILTIN, 0);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void app_main(void) {
|
||||
// Initialize NVS
|
||||
esp_err_t ret = nvs_flash_init();
|
||||
@@ -305,28 +307,35 @@ void app_main(void) {
|
||||
}
|
||||
ESP_ERROR_CHECK(ret);
|
||||
|
||||
#ifdef CONFIG_LED_BUILTIN
|
||||
gpio_config_t led_io_conf = {
|
||||
.pin_bit_mask = (1ULL << CONFIG_LED_BUILTIN),
|
||||
.mode = GPIO_MODE_OUTPUT,
|
||||
.pull_up_en = GPIO_PULLUP_DISABLE,
|
||||
.pull_down_en = GPIO_PULLDOWN_DISABLE,
|
||||
.intr_type = GPIO_INTR_DISABLE};
|
||||
gpio_config(&led_io_conf);
|
||||
gpio_set_level(CONFIG_LED_BUILTIN, 0);
|
||||
#endif
|
||||
|
||||
ESP_LOGI(TAG, "ESP_WIFI_MODE_STA");
|
||||
/* Board-specific WiFi init (if any) */
|
||||
// Seeed XIAO ESP32C6: Configure GPIO 3 and GPIO 14 as outputs
|
||||
gpio_config_t io_conf = {
|
||||
.pin_bit_mask = (1ULL << 3) | (1ULL << 14),
|
||||
.mode = GPIO_MODE_OUTPUT,
|
||||
.pull_up_en = GPIO_PULLUP_DISABLE,
|
||||
.pull_down_en = GPIO_PULLDOWN_DISABLE,
|
||||
.intr_type = GPIO_INTR_DISABLE
|
||||
};
|
||||
gpio_config(&io_conf);
|
||||
// Seeed XIAO ESP32C6: Configure GPIO 3 and GPIO 14 as outputs
|
||||
gpio_config_t board_io_conf = {
|
||||
.pin_bit_mask = (1ULL << 3) | (1ULL << 14),
|
||||
.mode = GPIO_MODE_OUTPUT,
|
||||
.pull_up_en = GPIO_PULLUP_DISABLE,
|
||||
.pull_down_en = GPIO_PULLDOWN_DISABLE,
|
||||
.intr_type = GPIO_INTR_DISABLE};
|
||||
gpio_config(&board_io_conf);
|
||||
|
||||
// Set GPIO 3 and GPIO 14 to low
|
||||
gpio_set_level(3, 0);
|
||||
gpio_set_level(14, 0);
|
||||
// Set GPIO 3 and GPIO 14 to low
|
||||
gpio_set_level(3, 0);
|
||||
gpio_set_level(14, 0);
|
||||
/* end board-specific WiFi init (if any) */
|
||||
|
||||
wifi_init_sta();
|
||||
|
||||
start_test_signal(100);
|
||||
|
||||
|
||||
xTaskCreate(adc_read_task, "adc_read_task", 8192 + ADC_READ_LEN, NULL, 5, NULL);
|
||||
|
||||
// Wait for WiFi connection
|
||||
@@ -337,6 +346,7 @@ void app_main(void) {
|
||||
if (bits & WIFI_CONNECTED_BIT) {
|
||||
ESP_LOGI(TAG, "connected to ap SSID:%s", ESP_WIFI_SSID);
|
||||
start_webserver();
|
||||
show_status_led();
|
||||
} else if (bits & WIFI_FAIL_BIT) {
|
||||
ESP_LOGI(TAG, "Failed to connect to SSID:%s", ESP_WIFI_SSID);
|
||||
} else {
|
||||
@@ -344,8 +354,8 @@ void app_main(void) {
|
||||
}
|
||||
}
|
||||
|
||||
static void event_handler(void *arg, esp_event_base_t event_base,
|
||||
int32_t event_id, void *event_data) {
|
||||
static void event_handler(void* arg, esp_event_base_t event_base,
|
||||
int32_t event_id, void* event_data) {
|
||||
if (event_base == WIFI_EVENT && event_id == WIFI_EVENT_STA_START) {
|
||||
esp_wifi_connect();
|
||||
} else if (event_base == WIFI_EVENT &&
|
||||
@@ -359,7 +369,7 @@ static void event_handler(void *arg, esp_event_base_t event_base,
|
||||
}
|
||||
ESP_LOGI(TAG, "connect to the AP fail");
|
||||
} else if (event_base == IP_EVENT && event_id == IP_EVENT_STA_GOT_IP) {
|
||||
ip_event_got_ip_t *event = (ip_event_got_ip_t *)event_data;
|
||||
ip_event_got_ip_t* event = (ip_event_got_ip_t*)event_data;
|
||||
ESP_LOGI(TAG, "got ip:" IPSTR, IP2STR(&event->ip_info.ip));
|
||||
s_retry_num = 0;
|
||||
xEventGroupSetBits(s_wifi_event_group, WIFI_CONNECTED_BIT);
|
||||
@@ -401,19 +411,17 @@ static void wifi_init_sta(void) {
|
||||
ESP_LOGI(TAG, "wifi_init_sta finished.");
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* WebSocket Handler
|
||||
*/
|
||||
static esp_err_t ws_handler(httpd_req_t *req) {
|
||||
static esp_err_t ws_handler(httpd_req_t* req) {
|
||||
if (req->method == HTTP_GET) {
|
||||
// Handshake
|
||||
return ESP_OK;
|
||||
}
|
||||
|
||||
httpd_ws_frame_t ws_pkt;
|
||||
uint8_t *buf = NULL;
|
||||
uint8_t* buf = NULL;
|
||||
memset(&ws_pkt, 0, sizeof(httpd_ws_frame_t));
|
||||
ws_pkt.type = HTTPD_WS_TYPE_TEXT;
|
||||
|
||||
@@ -435,7 +443,7 @@ static esp_err_t ws_handler(httpd_req_t *req) {
|
||||
|
||||
// Check for "hello"
|
||||
if (ws_pkt.type == HTTPD_WS_TYPE_TEXT &&
|
||||
strcmp((char *)ws_pkt.payload, "hello") == 0) {
|
||||
strcmp((char*)ws_pkt.payload, "hello") == 0) {
|
||||
ESP_LOGI(TAG, "New WS client connected, fd=%d", httpd_req_to_sockfd(req));
|
||||
s_ws_client_fd = httpd_req_to_sockfd(req);
|
||||
}
|
||||
@@ -447,7 +455,7 @@ static esp_err_t ws_handler(httpd_req_t *req) {
|
||||
/*
|
||||
* Control Params Handler (POST /params)
|
||||
*/
|
||||
static esp_err_t params_handler(httpd_req_t *req) {
|
||||
static esp_err_t params_handler(httpd_req_t* req) {
|
||||
char buf[256];
|
||||
int ret, remaining = req->content_len;
|
||||
if (remaining >= sizeof(buf)) {
|
||||
@@ -460,24 +468,24 @@ static esp_err_t params_handler(httpd_req_t *req) {
|
||||
return ESP_FAIL;
|
||||
buf[ret] = '\0';
|
||||
|
||||
cJSON *root = cJSON_Parse(buf);
|
||||
cJSON* root = cJSON_Parse(buf);
|
||||
if (root) {
|
||||
cJSON *sample_rate = cJSON_GetObjectItem(root, "sample_rate");
|
||||
cJSON* sample_rate = cJSON_GetObjectItem(root, "sample_rate");
|
||||
if (sample_rate && s_sample_rate != sample_rate->valueint) {
|
||||
s_reconfig_needed = true;
|
||||
s_sample_rate = sample_rate->valueint;
|
||||
}
|
||||
cJSON *atten = cJSON_GetObjectItem(root, "atten");
|
||||
cJSON* atten = cJSON_GetObjectItem(root, "atten");
|
||||
if (atten && s_atten != (adc_atten_t)atten->valueint) {
|
||||
s_reconfig_needed = true;
|
||||
s_atten = (adc_atten_t)atten->valueint;
|
||||
}
|
||||
cJSON *bit_width = cJSON_GetObjectItem(root, "bit_width");
|
||||
cJSON* bit_width = cJSON_GetObjectItem(root, "bit_width");
|
||||
if (bit_width && s_bit_width != (adc_bitwidth_t)bit_width->valueint) {
|
||||
s_reconfig_needed = true;
|
||||
s_bit_width = (adc_bitwidth_t)bit_width->valueint;
|
||||
}
|
||||
cJSON *test_hz = cJSON_GetObjectItem(root, "test_hz");
|
||||
cJSON* test_hz = cJSON_GetObjectItem(root, "test_hz");
|
||||
if (test_hz) {
|
||||
if (s_test_hz != (adc_bitwidth_t)test_hz->valueint) {
|
||||
s_test_hz = (adc_bitwidth_t)test_hz->valueint;
|
||||
@@ -487,7 +495,7 @@ static esp_err_t params_handler(httpd_req_t *req) {
|
||||
|
||||
ESP_LOGI(TAG, "Config Request: Rate=%lu, Atten=%d, Width=%d, TestHz=%u, s_reconfig_needed=%d", s_sample_rate,
|
||||
s_atten, s_bit_width, s_test_hz,
|
||||
s_reconfig_needed);
|
||||
s_reconfig_needed);
|
||||
|
||||
cJSON_Delete(root);
|
||||
}
|
||||
@@ -507,16 +515,14 @@ static const httpd_uri_t uri_params = {.uri = "/params",
|
||||
.handler = params_handler,
|
||||
.user_ctx = NULL};
|
||||
|
||||
|
||||
|
||||
/* Handler for serving index.html */
|
||||
static esp_err_t index_handler(httpd_req_t *req) {
|
||||
static esp_err_t index_handler(httpd_req_t* req) {
|
||||
httpd_resp_set_type(req, "text/html");
|
||||
httpd_resp_set_hdr(req, "Content-Type", "text/html; charset=utf-8");
|
||||
uint32_t len = index_html_end - index_html_start;
|
||||
// Workaround for some build systems adding null byte
|
||||
while (len && index_js_start[len-1] == 0) len--;
|
||||
httpd_resp_send(req, (const char *)index_html_start, len);
|
||||
while (len && index_js_start[len - 1] == 0) len--;
|
||||
httpd_resp_send(req, (const char*)index_html_start, len);
|
||||
return ESP_OK;
|
||||
}
|
||||
|
||||
@@ -524,19 +530,32 @@ static const httpd_uri_t uri_index = {
|
||||
.uri = "/", .method = HTTP_GET, .handler = index_handler, .user_ctx = NULL};
|
||||
|
||||
/* Handler for serving index.js */
|
||||
static esp_err_t index_js_handler(httpd_req_t *req) {
|
||||
static esp_err_t index_js_handler(httpd_req_t* req) {
|
||||
httpd_resp_set_type(req, "text/javascript");
|
||||
httpd_resp_set_hdr(req, "Content-Type", "text/javascript; charset=utf-8");
|
||||
uint32_t len = index_js_end - index_js_start;
|
||||
// Workaround for some build systems adding null byte
|
||||
while (len && index_js_start[len-1] == 0) len--;
|
||||
httpd_resp_send(req, (const char *)index_js_start, len);
|
||||
while (len && index_js_start[len - 1] == 0) len--;
|
||||
httpd_resp_send(req, (const char*)index_js_start, len);
|
||||
return ESP_OK;
|
||||
}
|
||||
|
||||
static const httpd_uri_t uri_index_js = {
|
||||
.uri = "/index.js", .method = HTTP_GET, .handler = index_js_handler, .user_ctx = NULL};
|
||||
|
||||
static esp_err_t power_handler(httpd_req_t* req) {
|
||||
#ifdef CONFIG_LED_BUILTIN
|
||||
gpio_set_level(CONFIG_LED_BUILTIN, 0);
|
||||
#endif
|
||||
|
||||
esp_sleep_enable_timer_wakeup(30L * 24L * 60L * 60L * 1000000ULL); // One month
|
||||
esp_deep_sleep_start();
|
||||
return ESP_OK;
|
||||
}
|
||||
|
||||
static const httpd_uri_t uri_power = {
|
||||
.uri = "/poweroff", .method = HTTP_POST, .handler = power_handler, .user_ctx = NULL};
|
||||
|
||||
static void start_webserver(void) {
|
||||
httpd_config_t config = HTTPD_DEFAULT_CONFIG();
|
||||
config.lru_purge_enable = true;
|
||||
@@ -548,9 +567,7 @@ static void start_webserver(void) {
|
||||
httpd_register_uri_handler(s_server, &uri_index_js);
|
||||
httpd_register_uri_handler(s_server, &uri_ws);
|
||||
httpd_register_uri_handler(s_server, &uri_params);
|
||||
|
||||
|
||||
|
||||
httpd_register_uri_handler(s_server, &uri_power);
|
||||
} else {
|
||||
ESP_LOGI(TAG, "Error starting server!");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user