void Render(double time) { gl.Clear().ColorBuffer().DepthBuffer(); CamMatrixf camera = CamMatrixf::Orbiting( Vec3f(), 4.5f + float(SineWave(time / 25.0)), FullCircles(time / 30.0), Degrees(SineWave(time / 19.0) * 20) ); light_prog.camera_matrix.Set(camera); flare_prog.camera_matrix.Set(camera); shape_prog.camera_matrix.Set(camera); shape_prog.camera_position.Set(camera.Position()); shape_prog.model_matrix.Set( ModelMatrixf::RotationX(FullCircles(time / 30.0)) ); shape_prog.Use(); shape.Draw(); NoProgram().Use(); lights.Bind(); light_prog.Use(); for(GLuint l=0; l!=n_flares; ++l) { queries[l].Begin(Query::Target::SamplesPassed); gl.DrawArrays(PrimitiveType::Points, l, 1); queries[l].End(Query::Target::SamplesPassed); } gl.Enable(Capability::Blend); gl.Disable(Capability::DepthTest); flare_prog.Use(); for(GLuint l=0; l!=n_flares; ++l) { GLint samples = 0; queries[l].WaitForResult(samples); if(samples != 0) { flare_prog.samples = samples; gl.DrawArrays(PrimitiveType::Points, l, 1); } } gl.Enable(Capability::DepthTest); gl.Disable(Capability::Blend); }
SortProc(const Particles& particles) { gl.Bind(vao); gl.Bind(BufferTarget::Array, particles.indices_d); (prog|"Index").Setup<GLint>().Enable(); gl.Bind(NoVertexArray()); gl.Bind(BufferIndexedTarget::TransformFeedback, 0, particles.indices_f); gl.Bind(BufferIndexedTarget::Uniform, 0, particles.indices_d); gl.Bind(BufferIndexedTarget::Uniform, 1, particles.distances); gl.Use(prog); UniformBlock(prog,"IndexBlock").Binding(0); UniformBlock(prog, "DistBlock").Binding(1); gl.Use(NoProgram()); }
TorusExample(void) : make_torus(1.0, 0.5, 18, 36) , torus_instr(make_torus.Instructions()) , torus_indices(make_torus.Indices()) , transf_prog(make_transf_prog()) , face_prog(make_face_prog()) , frame_prog(make_frame_prog()) , projection_matrix(transf_prog, "ProjectionMatrix") , camera_matrix(transf_prog, "CameraMatrix") , model_matrix(transf_prog, "ModelMatrix") , transf_time(transf_prog, "Time") { transf_prog.Use(); torus.Bind(); verts.Bind(Buffer::Target::Array); { std::vector<GLfloat> data; GLuint n_per_vertex = make_torus.Positions(data); Buffer::Data(Buffer::Target::Array, data); VertexArrayAttrib attr(transf_prog, "Position"); attr.Setup<GLfloat>(n_per_vertex); attr.Enable(); } normals.Bind(Buffer::Target::Array); { std::vector<GLfloat> data; GLuint n_per_vertex = make_torus.Normals(data); Buffer::Data(Buffer::Target::Array, data); VertexArrayAttrib attr(transf_prog, "Normal"); attr.Setup<GLfloat>(n_per_vertex); attr.Enable(); } texcoords.Bind(Buffer::Target::Array); { std::vector<GLfloat> data; GLuint n_per_vertex = make_torus.TexCoordinates(data); Buffer::Data(Buffer::Target::Array, data); VertexArrayAttrib attr(transf_prog, "TexCoord"); attr.Setup<GLfloat>(n_per_vertex); attr.Enable(); } face_pp.Bind(); face_prog.Use(); face_pp.UseStages(transf_prog).Vertex().Geometry(); face_pp.UseStages(face_prog).Fragment(); frame_pp.Bind(); frame_prog.Use(); frame_pp.UseStages(transf_prog).Vertex().Geometry(); frame_pp.UseStages(frame_prog).Fragment(); gl.Bind(NoProgramPipeline()); gl.Use(NoProgram()); gl.ClearColor(0.7f, 0.6f, 0.5f, 0.0f); gl.ClearDepth(1.0f); gl.Enable(Capability::DepthTest); gl.DepthFunc(CompareFn::Less); gl.FrontFace(make_torus.FaceWinding()); }
GlassAndMetalExample(void) : transf_prog() , metal_prog() , plane(transf_prog, shapes::Plane(Vec3f(9, 0, 0), Vec3f(0, 0,-9))) , torus(transf_prog, shapes::WickerTorus()) , shadow_tex_side(1024) { NoProgram().Use(); shadow_pp.Bind(); shadow_pp.UseStages(transf_prog).Vertex(); shadow_pp.UseStages(shadow_prog).Fragment(); light_pp.Bind(); light_pp.UseStages(transf_prog).Vertex(); light_pp.UseStages(light_prog).Fragment(); glass_pp.Bind(); glass_pp.UseStages(transf_prog).Vertex(); glass_pp.UseStages(glass_prog).Fragment(); metal_pp.Bind(); metal_pp.UseStages(transf_prog).Vertex(); metal_pp.UseStages(metal_prog).Fragment(); Texture::Active(0); metal_prog.metal_tex.Set(0); gl.Bound(Texture::Target::_2D, metal_texture) .MinFilter(TextureMinFilter::LinearMipmapLinear) .MagFilter(TextureMagFilter::Linear) .WrapS(TextureWrap::Repeat) .WrapT(TextureWrap::Repeat) .Image2D( images::BrushedMetalUByte( 512, 512, 5120, -3, +3, 32, 128 ) ).GenerateMipmap(); Texture::Active(1); metal_prog.frame_shadow_tex.Set(1); glass_prog.frame_shadow_tex.Set(1); gl.Bound(Texture::Target::_2D, frame_shadow_tex) .MinFilter(TextureMinFilter::Linear) .MagFilter(TextureMagFilter::Linear) .WrapS(TextureWrap::ClampToEdge) .WrapT(TextureWrap::ClampToEdge) .CompareMode(TextureCompareMode::CompareRefToTexture) .Image2D( 0, PixelDataInternalFormat::DepthComponent32, shadow_tex_side, shadow_tex_side, 0, PixelDataFormat::DepthComponent, PixelDataType::Float, nullptr ); gl.Bound(Framebuffer::Target::Draw, frame_shadow_fbo) .AttachTexture( FramebufferAttachment::Depth, frame_shadow_tex, 0 ); Texture::Active(2); metal_prog.glass_shadow_tex.Set(2); gl.Bound(Texture::Target::_2D, glass_shadow_tex) .MinFilter(TextureMinFilter::Linear) .MagFilter(TextureMagFilter::Linear) .WrapS(TextureWrap::ClampToEdge) .WrapT(TextureWrap::ClampToEdge) .Image2D( 0, PixelDataInternalFormat::RGBA, shadow_tex_side, shadow_tex_side, 0, PixelDataFormat::RGBA, PixelDataType::UnsignedByte, nullptr ); gl.Bound(Framebuffer::Target::Draw, glass_shadow_fbo) .AttachTexture( FramebufferAttachment::Color, glass_shadow_tex, 0 ); gl.ClearDepth(1.0f); gl.Enable(Capability::DepthTest); gl.Enable(Capability::CullFace); gl.BlendFunc(BlendFn::SrcAlpha, BlendFn::OneMinusSrcAlpha); gl.PolygonOffset(1.0, 1.0); }
SketchExample(void) : transf_prog() , sketch_prog() , plane( transf_prog, shapes::Plane( Vec3f(0, 0, 0), Vec3f(9, 0, 0), Vec3f(0, 0,-9), 9, 9 ) ), torus(transf_prog, shapes::WickerTorus()) , sketch_tex_layers(8) , shadow_tex_side(1024) { NoProgram().Use(); shadow_pp.Bind(); shadow_pp.UseStages(transf_prog).Vertex(); shadow_pp.UseStages(shadow_prog).Fragment(); sketch_pp.Bind(); sketch_pp.UseStages(transf_prog).Vertex(); sketch_pp.UseStages(sketch_prog).Fragment(); line_pp.Bind(); line_pp.UseStages(transf_prog).Vertex(); line_pp.UseStages(line_prog).Geometry().Fragment(); Texture::Active(0); sketch_prog.sketch_tex.Set(0); { auto bound_tex = gl.Bound(Texture::Target::_3D, sketch_texture); for(GLuint i=0; i<sketch_tex_layers; ++i) { auto image = images::BrushedMetalUByte( 512, 512, 64 + i*128, -(2+i*4), +(2+i*4), 64, 256-i*4 ); if(i == 0) { bound_tex.Image3D( 0, PixelDataInternalFormat::RGB, image.Width(), image.Height(), sketch_tex_layers, 0, image.Format(), image.Type(), nullptr ); } bound_tex.SubImage3D( 0, 0, 0, i, image.Width(), image.Height(), 1, image.Format(), image.Type(), image.RawData() ); } bound_tex.GenerateMipmap(); bound_tex.MinFilter(TextureMinFilter::LinearMipmapLinear); bound_tex.MagFilter(TextureMagFilter::Linear); bound_tex.WrapS(TextureWrap::Repeat); bound_tex.WrapT(TextureWrap::Repeat); bound_tex.WrapR(TextureWrap::ClampToEdge); } Texture::Active(1); sketch_prog.shadow_tex.Set(1); gl.Bound(Texture::Target::_2D, shadow_tex) .MinFilter(TextureMinFilter::Linear) .MagFilter(TextureMagFilter::Linear) .WrapS(TextureWrap::ClampToEdge) .WrapT(TextureWrap::ClampToEdge) .CompareMode(TextureCompareMode::CompareRefToTexture) .Image2D( 0, PixelDataInternalFormat::DepthComponent32, shadow_tex_side, shadow_tex_side, 0, PixelDataFormat::DepthComponent, PixelDataType::Float, nullptr ); gl.Bound(Framebuffer::Target::Draw, frame_shadow_fbo) .AttachTexture( FramebufferAttachment::Depth, shadow_tex, 0 ); gl.ClearDepth(1.0f); gl.Enable(Capability::DepthTest); gl.Enable(Capability::CullFace); gl.DepthFunc(CompareFn::LEqual); gl.BlendFunc(BlendFn::SrcAlpha, BlendFn::OneMinusSrcAlpha); gl.PolygonOffset(1.0, 1.0); gl.LineWidth(1.5); }
void Keyboard_Key(void) { if (enGlobal == GLB_PROGRAM) { switch (wProgram) { case bSET_SPEED: key_SetSpeeds(); break; case bSET_CURRTIME: key_SetCurrTime(); break; case bSET_CURRDATE: key_SetCurrDate(); break; case bSET_GROUPS: key_SetGroups(); break; case bSET_TRANS_ENG: case bSET_TRANS_CNT: case bSET_PULSE_HOU: case bSET_PULSE_MNT: case bSET_LOSSE: case bSET_LEVEL: case bSET_COUNT: key_SetFactors(); break; case bSET_DAY_ZONE: key_SetDayZone(); break; case bSET_PUBLIC_TARIFFS: key_SetPublicTariffs(); break; case bSET_TARIFFS_MODE: key_SetTariffsMode(); break; case bSET_PROGRAM10: case bSET_PROGRAM17: case bSET_PROGRAM20: case bSET_PROGRAM27: key_SetOldYearZone(); break; case bSET_RELAXS_FLAG: key_SetRelaxsFlag(); break; case bSET_RELAXS_TARIFF: key_SetRelaxsTariff(); break; case bSET_RELAXS: key_SetRelaxs(); break; case bSET_PASSWORD: key_SetPassword(); break; case bSET_LOGICAL: key_SetLogical(); break; case bSET_PRIVATE: key_SetPrivate(); break; case bSET_START_MINUTES30: case bSET_START: key_Start(); break; case bSET_DEBUG: key_Debug(); break; case bSET_VERSION: key_GetVersion(); break; case bSET_RESETCUSTOM: case bSET_RESETFULL: key_SetReset(); break; case bSET_RESET_WDT: key_ResetWatchdog(); break; case bSEARCH_BY_NUMBER: key_SearchByNumber(); break; case bSEARCH_BY_SPEED: key_SearchBySpeed(); break; case bSET_AUTOMATIC1: key_Automatic1(); break; case bSET_AUTOMATIC2: key_Automatic2(); break; case bSET_MAJOR_DELAYS: case bSET_MINOR_DELAYS: key_SetDelays(); break; case bSET_CORRECT2_FLAG: key_SetCorrect2Flag(); break; case bSET_CORRECT3_FLAG: key_SetCorrect3Flag(); break; case bSET_CORRECT3_VALUE: key_SetCorrect3Value(); break; case bSET_CORRECT3_INFO: key_SetCorrect3Info(); break; case bSET_DIGITALS: key_SetDigitals(); break; case bSET_ENBL_HOURS: key_SetEnblHours(); break; case bSET_CONTROL_HOURS: key_SetCtrlHours(); break; case bSET_ENBL_CANALS: key_SetEnblCanals(); break; case bSET_PARAMS_FLAG: key_SetParamsFlag(); break; case bSET_MNT_PARAMS: key_SetMntParams(); break; case bSET_PARAMS: key_SetParams(); break; case bSET_PARAMS_DIV: key_SetParamsDiv(); break; case bGET_PARAMS_CURR: case bGET_PARAMS_BUFF: case bGET_PARAMS_FULL: key_GetParamsAll(); break; case wSET_FIX_PARAMS_BUGS:key_SetFixParamsBugs(); break; case wSET_USE_PARAMS_DIV: key_SetUseParamsDiv(); break; case bSET_LIMITS: key_SetLimits(); break; case bSET_LIMITS2: key_SetLimits2(); break; case bSET_LIMITS30: key_SetLimits30(); break; case bSET_LIMITS31: key_SetLimits31(); break; case bSET_LIMITS32: key_SetLimits32(); break; case bSET_LIMITS33: key_SetLimits33(); break; case bSET_GPS_CONFIG: key_SetGpsConfig(); break; case bSET_GPS_GMT: key_SetGpsGmt(); break; case bGET_GPS_DATA: key_GetGpsData(); break; case bGET_GPS_CORRECT: key_GetGpsCorrect(); break; case bSET_GPS_SCHEDULE: key_SetGpsSchedule(); break; case bSET_GPS_SEASON: key_SetGpsSeason(); break; case bSET_FLOW_PORT_TO: key_FlowPortTo(); break; case bSET_MAX_FLOW_DELAY: key_SetMaxFlowDelay(); break; case bSET_FLOW_PORT_FROM: key_FlowPortFrom(); break; case bSET_ENBL_CURRENT: key_SetEnblCurrent(); break; case bSET_ENBL_CURRENT2: key_SetEnblCurrent2(); break; case bSET_ENBL_PROFILE: key_SetEnblProfile(); break; case bSET_TIMEOUT_PROFILE:key_SetTimeoutProfile();break; case bSET_TIMEOUT_CURRENT:key_SetTimeoutCurrent();break; case bSET_CONTROL_TIME: key_SetControlTime(); break; case bSET_MANAGE_TIME: key_SetManageTime(); break; case bSET_MACHINES_ESC: key_SetMachinesEsc(); break; case bSET_BLOCK_ESC: key_SetBlockEsc(); break; case bSET_EXTENDED_ESC_S: key_SetExtendedEscS(); break; case bSET_EXTENDED_ESC_V: key_SetExtendedEscV(); break; case bSET_EXTENDED_ESC_U: key_SetExtendedEscU(); break; case bSET_ADDRESSES: key_SetAddresses(); break; case bSET_ENBL_KEYS: key_SetEnblKeys(); break; case bSET_KEYS: key_SetKeys(); break; case wSET_KEYS_LEVEL_B: key_SetKeysLevelB(); break; case bGET_MODEMS_QUALITY: key_GetModemsQuality(); break; case bSET_PHONES: key_SetPhones(); break; case bSET_MAX_CONNECT: key_SetMaxConnect(); break; case bSET_CUSTOM_MODEM: key_SetCustomModem(); break; case bSET_SHOW_MESSAGES: key_SetShowMessages(); break; case bSET_SEPARATE_CAN: key_SetSeparateCan(); break; case bSET_ENBL_WDT: key_SetEnblWDT(); break; case bSET_RECALC_TIME: key_SetRecalcTime(); break; case bSET_RECALC_ALWAYS: key_SetRecalcAlways(); break; case bGET_CNTCURR_110: case bGET_READTIMEDATE1: case bGET_READTIMEDATE2: key_GetSingleCan(); break; case bSET_DECRET: key_SetDecret(); break; case bSET_WINTER: case bSET_SUMMER: key_SetSeason(); break; case bTEST_DIRECT: key_TestDirect(); break; case bTEST_RESPONSE: key_TestResponse(); break; case bTEST_FLOW: key_TestFlow(); break; case bTEST_PORTS_IO: key_TestPortsIO(); break; case bTEST_UNI: key_TestUni(); break; case wSET_MONITOR_OPEN: key_MonitorOpen(); break; case wTEST_MONITOR: key_TestMonitor(); break; case bTEST_IMPULSES: key_TestImpulses(); break; case bTEST_KEYS: key_TestKeys(); break; case bTEST_RTC: key_TestRTC(); break; case bTEST_POWER_OFF: key_TestPowerOff(); break; case wSET_OUTPUT_DELAY: key_SetOutputDelay(); break; case wSET_HIDE_MESSAGES: key_SetHideMessages(); break; case wSET_GAPS_FLAG: key_SetGapsFlag(); break; case wSET_GAPS: key_SetGaps(); break; case wSET_CONTROL_Q: key_SetControlQ(); break; case wSET_SHORT_PROFILE_C:key_SetShortProfileC(); break; case wSET_DSBL_REFILL: key_SetDsblRefill(); break; case wSET_DSBL_ANSWER: key_SetDsblAnswer(); break; case wSET_MAX_REPEATS: key_SetMaxRepeats(); break; case wSET_MAX_SHUTDOWN: key_SetMaxShutdown(); break; case wSET_DSBL_ESC: key_SetDsblEsc(); break; case wSET_RECORDS_DSBL: key_SetRecordsDsbl(); break; case wSET_PLC_U_FLAG: key_SetPlcUFlag(); break; case wSET_PLC_U_SIZE: key_SetPlcUSize(); break; case wSET_PLC_U_SHUTDOWN: key_SetPlcUShutdown(); break; case wSET_INPUT_MODE_RESET: key_SetInputModeReset(); break; case bSET_SLAVE_MODEM: key_SetSlaveModem(); break; #ifdef ENABLE_BULK case wSET_BULK_ENBL: key_SetBulkEnable(); break; case wSET_BULK_SIZE: key_SetBulkSize(); break; case wSET_BULK_MAX_DELAY: key_SetBulkMaxDelay(); break; #endif case wSET_STRICT_UNI: key_SetStrictUni(); break; case wSET_ENBL_PASS_UNI: key_SetEnblPassUni(); break; case wSET_MAX_DELAY_UNI: key_SetMaxDelayUni(); break; case wSET_REPEAT_FLOW_UNI: key_SetRepeatFlowUni(); break; case wSET_MNT_ESC_S: key_SetMntEscS(); break; case wSET_CORRECT_LIMIT: key_SetCorrectLimit(); break; case wSET_EXT0_FLAG: key_SetExt0Flag(); break; case wSET_EXT0_COUNTER: key_SetExt0Counter(); break; case bSET_EXT3_RESET: key_SetExt3Reset(); break; case bSET_EXT3_FLAG: key_SetExt3Flag(); break; case bSET_EXT3_EVENTS_A: key_SetExt3A(); break; case bSET_EXT3_EVENTS_B: key_SetExt3B(); break; case bSET_EXT4_FLAG: key_SetExt4Flag(); break; case bSET_EXT4_MONTHS: key_SetExt4Months(); break; case bSET_EXT4_ENBL_CAN: key_SetExt4EnblCan(); break; case wSET_EXT4T_FLAG: key_SetExt4TFlag(); break; case wSET_EXT4T_MONTHS: key_SetExt4TMonths(); break; case wSET_EXT4T_RESET_FULL: key_SetExt4TResetFull(); break; case wSET_EXT4T_RESET_CUSTOM: key_SetExt4TResetCustom(); break; case bSET_EXT5_FLAG: key_SetExt5Flag(); break; case wSET_EXT6_FLAG: key_SetExt6Flag(); break; case wGET_HEALTH: key_GetHealth(); break; default: NoProgram(); break; } } else if (enGlobal == GLB_WORK) { switch (wProgram) { case bGET_SPEED: key_SetSpeeds(); break; case bGET_CURRTIME: key_SetCurrTime(); break; case bGET_CURRDATE: key_SetCurrDate(); break; case bGET_CORRECT_TIME: key_CorrectTime(); break; case bGET_CORRECTCURR: key_GetCorrectCurr(); break; case bGET_CORRECTPREV: key_GetCorrectPrev(); break; case bGET_GROUPS: key_GetGroups(); break; case bGET_PUBLIC_TARIFFS: key_SetPublicTariffs(); break; case bGET_TARIFFS_MODE: key_SetTariffsMode(); break; case bGET_PROGRAM5: key_GetOldProgram5(); break; case bGET_PROGRAM84: case bGET_PROGRAM85: key_GetOldProgram84(); break; case bSET_RELAXS_FLAG: key_SetRelaxsFlag(); break; case bSET_RELAXS_TARIFF: key_SetRelaxsTariff(); break; case bSET_RELAXS: key_GetRelaxs(); break; case bGET_TRANS_ENG: case bGET_TRANS_CNT: case bGET_PULSE_HOU: case bGET_PULSE_MNT: case bGET_LOSSE: case bSET_LEVEL: key_GetFactors(); break; case bGET_PROGRAM18: key_GetProgram18(); break; case bGET_PROGRAM19: key_GetProgram19(); break; case bSET_PASSWORD: key_GetPassword(); break; case bSET_LOGICAL: key_SetLogical(); break; case bSET_PRIVATE: key_SetPrivate(); break; case bSET_VERSION: case bGET_VERSION: key_GetVersion(); break; case bSET_MAJOR_DELAYS: case bSET_MINOR_DELAYS: key_SetDelays(); break; case bSET_CORRECT2_FLAG: key_SetCorrect2Flag(); break; case bSET_CORRECT3_FLAG: key_SetCorrect3Flag(); break; case bSET_CORRECT3_VALUE: key_SetCorrect3Value(); break; case bSET_CORRECT3_INFO: key_SetCorrect3Info(); break; case bSET_DIGITALS: key_SetDigitals(); break; case bSET_ENBL_HOURS: key_SetEnblHours(); break; case bSET_CONTROL_HOURS: key_SetCtrlHours(); break; case bSET_ENBL_CANALS: key_SetEnblCanals(); break; case bSET_PARAMS_FLAG: key_SetParamsFlag(); break; case bSET_MNT_PARAMS: key_SetMntParams(); break; case bSET_PARAMS: key_SetParams(); break; case bSET_PARAMS_DIV: key_SetParamsDiv(); break; case bGET_PARAMS_CURR: case bGET_PARAMS_BUFF: case bGET_PARAMS_FULL: key_GetParamsAll(); break; case wSET_FIX_PARAMS_BUGS:key_SetFixParamsBugs(); break; case wSET_USE_PARAMS_DIV: key_SetUseParamsDiv(); break; case bSET_LIMITS: key_SetLimits(); break; case bSET_LIMITS2: key_SetLimits2(); break; case bSET_LIMITS30: key_SetLimits30(); break; case bSET_LIMITS31: key_SetLimits31(); break; case bSET_LIMITS32: key_SetLimits32(); break; case bSET_LIMITS33: key_SetLimits33(); break; case bSET_GPS_CONFIG: key_SetGpsConfig(); break; case bSET_GPS_GMT: key_SetGpsGmt(); break; case bGET_GPS_DATA: key_GetGpsData(); break; case bGET_GPS_CORRECT: key_GetGpsCorrect(); break; case bSET_GPS_SCHEDULE: key_SetGpsSchedule(); break; case bSET_GPS_SEASON: key_SetGpsSeason(); break; case bSET_FLOW_PORT_TO: key_FlowPortTo(); break; case bSET_MAX_FLOW_DELAY: key_SetMaxFlowDelay(); break; case bSET_FLOW_PORT_FROM: key_FlowPortFrom(); break; case bSET_ENBL_CURRENT: key_SetEnblCurrent(); break; case bSET_ENBL_CURRENT2: key_SetEnblCurrent2(); break; case bSET_ENBL_PROFILE: key_SetEnblProfile(); break; case bSET_TIMEOUT_PROFILE:key_SetTimeoutProfile();break; case bSET_TIMEOUT_CURRENT:key_SetTimeoutCurrent();break; case bSET_CONTROL_TIME: key_SetControlTime(); break; case bSET_MANAGE_TIME: key_SetManageTime(); break; case bSET_MACHINES_ESC: key_SetMachinesEsc(); break; case bSET_BLOCK_ESC: key_SetBlockEsc(); break; case bSET_EXTENDED_ESC_S: key_SetExtendedEscS(); break; case bSET_EXTENDED_ESC_V: key_SetExtendedEscV(); break; case bSET_EXTENDED_ESC_U: key_SetExtendedEscU(); break; case bSET_ADDRESSES: key_SetAddresses(); break; case bSET_ENBL_KEYS: key_SetEnblKeys(); break; case bSET_KEYS: key_SetKeys(); break; case wSET_KEYS_LEVEL_B: key_SetKeysLevelB(); break; case bGET_MODEMS_QUALITY: key_GetModemsQuality(); break; case bSET_PHONES: key_SetPhones(); break; case bSET_MAX_CONNECT: key_SetMaxConnect(); break; case bSET_CUSTOM_MODEM: key_SetCustomModem(); break; case bSET_SHOW_MESSAGES: key_SetShowMessages(); break; case bSET_SEPARATE_CAN: key_SetSeparateCan(); break; case bSET_ENBL_WDT: key_SetEnblWDT(); break; case bSET_RECALC_TIME: key_SetRecalcTime(); break; case bSET_RECALC_ALWAYS: key_SetRecalcAlways(); break; case bGET_CNTCURR_10: case bGET_CNTCURR_110: case bGET_READTIMEDATE1: case bGET_READTIMEDATE2: case bGET_IMPCANCURRMNT: key_GetSingleCan(); break; case bGET_POWGRPPREVHOU: case bGET_POWGRPCURRHOU: case bGET_POWGRPDAYPREV_ABCD: case bGET_POWGRPDAYPREV_C: case bGET_POWGRPDAYPREV_D: case bGET_POWGRPDAYCURR_ABCD: case bGET_POWGRPDAYCURR_C: case bGET_POWGRPDAYCURR_D: case bGET_POWGRPMONPREV_ABCD: case bGET_POWGRPMONPREV_C: case bGET_POWGRPMONPREV_D: case bGET_POWGRPMONCURR_ABCD: case bGET_POWGRPMONCURR_C: case bGET_POWGRPMONCURR_D: case bGET_ENGGRPDAYPREV_ABCD: case bGET_ENGGRPDAYPREV_CD: case bGET_ENGGRPDAYPREV_B: case bGET_ENGGRPDAYPREV_A: case bGET_ENGGRPDAYCURR_ABCD: case bGET_ENGGRPDAYCURR_CD: case bGET_ENGGRPDAYCURR_B: case bGET_ENGGRPDAYCURR_A: case bGET_ENGGRPMONPREV_ABCD: case bGET_ENGGRPMONPREV_CD: case bGET_ENGGRPMONPREV_B: case bGET_ENGGRPMONPREV_A: case bGET_ENGGRPMONCURR_ABCD: case bGET_ENGGRPMONCURR_CD: case bGET_ENGGRPMONCURR_B: case bGET_ENGGRPMONCURR_A: case bGET_POWGRPCURRMNT: key_GetSingleGrp(); break; case bGET_POWCANPREVHOU: case bGET_POWCANCURRHOU: case bGET_ENGCANDAYPREV_ABCD: case bGET_ENGCANDAYPREV_CD: case bGET_ENGCANDAYPREV_B: case bGET_ENGCANDAYPREV_A: case bGET_ENGCANDAYCURR_ABCD: case bGET_ENGCANDAYCURR_CD: case bGET_ENGCANDAYCURR_B: case bGET_ENGCANDAYCURR_A: case bGET_ENGCANMONPREV_ABCD: case bGET_ENGCANMONPREV_CD: case bGET_ENGCANMONPREV_B: case bGET_ENGCANMONPREV_A: case bGET_ENGCANMONCURR_ABCD: case bGET_ENGCANMONCURR_CD: case bGET_ENGCANMONCURR_B: case bGET_ENGCANMONCURR_A: case bGET_POWCANCURRMNT: key_GetSingle2(); break; case bGET_ENGGRPYEAR_ABCD: case bGET_ENGGRPYEAR_CD: case bGET_ENGGRPYEAR_B: case bGET_ENGGRPYEAR_A: key_GetEngYear(); break; case bGET_CNTCANYEAR1: case bGET_CNTCANYEAR10: case bGET_CNTCANYEAR2: case bGET_CNTCANYEAR20: case wGET_CNTCANYEAR3: key_GetCntYear(); break; case bRUN_PROFILE: key_RunProfile(); break; case bGET_PROGRAM73: key_GetOldProgram73(); break; case bGET_PROGRAM74: key_GetOldProgram74(); break; case bSET_DECRET: key_SetDecret(); break; case bSET_WINTER: case bSET_SUMMER: key_SetSeason(); break; case bTEST_DIRECT: key_TestDirect(); break; case bTEST_RESPONSE: key_TestResponse(); break; case bTEST_FLOW: key_TestFlow(); break; case bTEST_PORTS_IO: key_TestPortsIO(); break; case bTEST_UNI: key_TestUni(); break; case wSET_MONITOR_OPEN: key_MonitorOpen(); break; case wTEST_MONITOR: key_TestMonitor(); break; case bTEST_IMPULSES: key_TestImpulses(); break; case bTEST_KEYS: key_TestKeys(); break; case bTEST_RTC: key_TestRTC(); break; case bTEST_POWER_OFF: key_TestPowerOff(); break; case wSET_OUTPUT_DELAY: key_SetOutputDelay(); break; case wSET_HIDE_MESSAGES: key_SetHideMessages(); break; case wSET_GAPS_FLAG: key_SetGapsFlag(); break; case wSET_GAPS: key_GetGaps(); break; case wSET_CONTROL_Q: key_SetControlQ(); break; case wSET_SHORT_PROFILE_C:key_SetShortProfileC(); break; case wSET_DSBL_REFILL: key_SetDsblRefill(); break; case wSET_DSBL_ANSWER: key_SetDsblAnswer(); break; case wSET_MAX_REPEATS: key_SetMaxRepeats(); break; case wSET_MAX_SHUTDOWN: key_SetMaxShutdown(); break; case wSET_DSBL_ESC: key_SetDsblEsc(); break; case wSET_RECORDS_DSBL: key_SetRecordsDsbl(); break; case wSET_PLC_U_FLAG: key_SetPlcUFlag(); break; case wSET_PLC_U_SIZE: key_SetPlcUSize(); break; case wSET_PLC_U_SHUTDOWN: key_SetPlcUShutdown(); break; case wSET_INPUT_MODE_RESET: key_SetInputModeReset(); break; case bSET_SLAVE_MODEM: key_SetSlaveModem(); break; #ifdef ENABLE_BULK case wSET_BULK_ENBL: key_SetBulkEnable(); break; case wSET_BULK_SIZE: key_SetBulkSize(); break; case wSET_BULK_MAX_DELAY: key_SetBulkMaxDelay(); break; #endif case wSET_STRICT_UNI: key_SetStrictUni(); break; case wSET_ENBL_PASS_UNI: key_SetEnblPassUni(); break; case wSET_MAX_DELAY_UNI: key_SetMaxDelayUni(); break; case wSET_REPEAT_FLOW_UNI: key_SetRepeatFlowUni(); break; case wSET_MNT_ESC_S: key_SetMntEscS(); break; case wSET_CORRECT_LIMIT: key_SetCorrectLimit(); break; case wSET_EXT0_FLAG: key_SetExt0Flag(); break; case wSET_EXT0_COUNTER: key_SetExt0Counter(); break; case bSET_EXT3_RESET: key_SetExt3Reset(); break; case bSET_EXT3_FLAG: key_SetExt3Flag(); break; case bSET_EXT3_EVENTS_A: key_SetExt3A(); break; case bSET_EXT3_EVENTS_B: key_SetExt3B(); break; case bSET_EXT4_FLAG: key_SetExt4Flag(); break; case bSET_EXT4_MONTHS: key_SetExt4Months(); break; case bSET_EXT4_ENBL_CAN: key_SetExt4EnblCan(); break; case wSET_EXT4T_FLAG: key_SetExt4TFlag(); break; case wSET_EXT4T_MONTHS: key_SetExt4TMonths(); break; case bSET_EXT5_FLAG: key_SetExt5Flag(); break; case wSET_EXT6_FLAG: key_SetExt6Flag(); break; case wGET_HEALTH: key_GetHealth(); break; default: NoProgram(); break; } } else if (enGlobal == GLB_REPROGRAM) { switch (wProgram) { case bSET_SPEED: key_SetSpeeds(); break; case bSET_CURRTIME: key_SetCurrTime(); break; case bSET_CURRDATE: key_SetCurrDate(); break; case bSET_GROUPS: key_SetGroups(); break; case bSET_DAY_ZONE: key_SetDayZone(); break; case bSET_PUBLIC_TARIFFS: key_SetPublicTariffs(); break; case bSET_TARIFFS_MODE: key_SetTariffsMode(); break; case bSET_PROGRAM10: case bSET_PROGRAM17: case bSET_PROGRAM20: case bSET_PROGRAM27: key_SetOldYearZone(); break; case bSET_RELAXS_FLAG: key_SetRelaxsFlag(); break; case bSET_RELAXS_TARIFF: key_SetRelaxsTariff(); break; case bSET_RELAXS: key_SetRelaxs(); break; case bSET_PASSWORD: key_SetPassword(); break; case bSET_LOGICAL: key_SetLogical(); break; case bSET_PRIVATE: key_SetPrivate(); break; case bSET_START: key_Restart(); break; case bSET_VERSION: key_GetVersion(); break; case bSET_RESETCUSTOM: case bSET_RESETFULL: key_SetReset(); break; case bSET_RESET_WDT: key_ResetWatchdog(); break; case bSEARCH_BY_NUMBER: key_SearchByNumber(); break; case bSEARCH_BY_SPEED: key_SearchBySpeed(); break; case bSET_AUTOMATIC1: key_Automatic1(); break; case bSET_AUTOMATIC2: key_Automatic2(); break; case bSET_MAJOR_DELAYS: case bSET_MINOR_DELAYS: key_SetDelays(); break; case bSET_CORRECT2_FLAG: key_SetCorrect2Flag(); break; case bSET_CORRECT3_FLAG: key_SetCorrect3Flag(); break; case bSET_CORRECT3_VALUE: key_SetCorrect3Value(); break; case bSET_CORRECT3_INFO: key_SetCorrect3Info(); break; case bSET_DIGITALS: key_SetDigitals(); break; case bSET_ENBL_HOURS: key_SetEnblHours(); break; case bSET_CONTROL_HOURS: key_SetCtrlHours(); break; case bSET_ENBL_CANALS: key_SetEnblCanals(); break; case bSET_PARAMS_FLAG: key_SetParamsFlag(); break; case bSET_MNT_PARAMS: key_SetMntParams(); break; case bSET_PARAMS: key_SetParams(); break; case bSET_PARAMS_DIV: key_SetParamsDiv(); break; case bGET_PARAMS_CURR: case bGET_PARAMS_BUFF: case bGET_PARAMS_FULL: key_GetParamsAll(); break; case wSET_FIX_PARAMS_BUGS:key_SetFixParamsBugs(); break; case wSET_USE_PARAMS_DIV: key_SetUseParamsDiv(); break; case bSET_LIMITS: key_SetLimits(); break; case bSET_LIMITS2: key_SetLimits2(); break; case bSET_LIMITS30: key_SetLimits30(); break; case bSET_LIMITS31: key_SetLimits31(); break; case bSET_LIMITS32: key_SetLimits32(); break; case bSET_LIMITS33: key_SetLimits33(); break; case bSET_GPS_CONFIG: key_SetGpsConfig(); break; case bSET_GPS_GMT: key_SetGpsGmt(); break; case bGET_GPS_DATA: key_GetGpsData(); break; case bGET_GPS_CORRECT: key_GetGpsCorrect(); break; case bSET_GPS_SCHEDULE: key_SetGpsSchedule(); break; case bSET_GPS_SEASON: key_SetGpsSeason(); break; case bSET_FLOW_PORT_TO: key_FlowPortTo(); break; case bSET_MAX_FLOW_DELAY: key_SetMaxFlowDelay(); break; case bSET_FLOW_PORT_FROM: key_FlowPortFrom(); break; case bSET_ENBL_CURRENT: key_SetEnblCurrent(); break; case bSET_ENBL_CURRENT2: key_SetEnblCurrent2(); break; case bSET_ENBL_PROFILE: key_SetEnblProfile(); break; case bSET_TIMEOUT_PROFILE:key_SetTimeoutProfile();break; case bSET_TIMEOUT_CURRENT:key_SetTimeoutCurrent();break; case bSET_CONTROL_TIME: key_SetControlTime(); break; case bSET_MANAGE_TIME: key_SetManageTime(); break; case bSET_MACHINES_ESC: key_SetMachinesEsc(); break; case bSET_BLOCK_ESC: key_SetBlockEsc(); break; case bSET_EXTENDED_ESC_S: key_SetExtendedEscS(); break; case bSET_EXTENDED_ESC_V: key_SetExtendedEscV(); break; case bSET_EXTENDED_ESC_U: key_SetExtendedEscU(); break; case bSET_ADDRESSES: key_SetAddresses(); break; case bSET_ENBL_KEYS: key_SetEnblKeys(); break; case bSET_KEYS: key_SetKeys(); break; case wSET_KEYS_LEVEL_B: key_SetKeysLevelB(); break; case bGET_MODEMS_QUALITY: key_GetModemsQuality(); break; case bSET_PHONES: key_SetPhones(); break; case bSET_MAX_CONNECT: key_SetMaxConnect(); break; case bSET_CUSTOM_MODEM: key_SetCustomModem(); break; case bSET_SHOW_MESSAGES: key_SetShowMessages(); break; case bSET_SEPARATE_CAN: key_SetSeparateCan(); break; case bSET_ENBL_WDT: key_SetEnblWDT(); break; case bSET_RECALC_TIME: key_SetRecalcTime(); break; case bSET_RECALC_ALWAYS: key_SetRecalcAlways(); break; case bSET_RECALC_FULL: case bSET_RECALC_MAXPOW: case bSET_RECALC_ENG: key_SetRecalc(); break; case bGET_CNTCURR_110: case bGET_READTIMEDATE1: case bGET_READTIMEDATE2: key_GetSingleCan(); break; case bSET_DECRET: key_SetDecret(); break; case bSET_WINTER: case bSET_SUMMER: key_SetSeason(); break; case bTEST_DIRECT: key_TestDirect(); break; case bTEST_RESPONSE: key_TestResponse(); break; case bTEST_FLOW: key_TestFlow(); break; case bTEST_PORTS_IO: key_TestPortsIO(); break; case bTEST_UNI: key_TestUni(); break; case wSET_MONITOR_OPEN: key_MonitorOpen(); break; case wTEST_MONITOR: key_TestMonitor(); break; case bTEST_IMPULSES: key_TestImpulses(); break; case bTEST_KEYS: key_TestKeys(); break; case bTEST_RTC: key_TestRTC(); break; case bTEST_POWER_OFF: key_TestPowerOff(); break; case wSET_OUTPUT_DELAY: key_SetOutputDelay(); break; case wSET_HIDE_MESSAGES: key_SetHideMessages(); break; case wSET_GAPS_FLAG: key_SetGapsFlag(); break; case wSET_GAPS: key_SetGaps(); break; case wSET_CONTROL_Q: key_SetControlQ(); break; case wSET_SHORT_PROFILE_C:key_SetShortProfileC(); break; case wSET_DSBL_REFILL: key_SetDsblRefill(); break; case wSET_DSBL_ANSWER: key_SetDsblAnswer(); break; case wSET_MAX_REPEATS: key_SetMaxRepeats(); break; case wSET_MAX_SHUTDOWN: key_SetMaxShutdown(); break; case wSET_DSBL_ESC: key_SetDsblEsc(); break; case wSET_RECORDS_DSBL: key_SetRecordsDsbl(); break; case wSET_PLC_U_FLAG: key_SetPlcUFlag(); break; case wSET_PLC_U_SIZE: key_SetPlcUSize(); break; case wSET_PLC_U_SHUTDOWN: key_SetPlcUShutdown(); break; case wSET_INPUT_MODE_RESET: key_SetInputModeReset(); break; case bSET_SLAVE_MODEM: key_SetSlaveModem(); break; #ifdef ENABLE_BULK case wSET_BULK_ENBL: key_SetBulkEnable(); break; case wSET_BULK_SIZE: key_SetBulkSize(); break; case wSET_BULK_MAX_DELAY: key_SetBulkMaxDelay(); break; #endif case wSET_STRICT_UNI: key_SetStrictUni(); break; case wSET_ENBL_PASS_UNI: key_SetEnblPassUni(); break; case wSET_MAX_DELAY_UNI: key_SetMaxDelayUni(); break; case wSET_REPEAT_FLOW_UNI: key_SetRepeatFlowUni(); break; case wSET_MNT_ESC_S: key_SetMntEscS(); break; case wSET_CORRECT_LIMIT: key_SetCorrectLimit(); break; case wSET_EXT0_FLAG: key_SetExt0Flag(); break; case wSET_EXT0_COUNTER: key_SetExt0Counter(); break; case bSET_EXT3_RESET: key_SetExt3Reset(); break; case bSET_EXT3_FLAG: key_SetExt3Flag(); break; case bSET_EXT3_EVENTS_A: key_SetExt3A(); break; case bSET_EXT3_EVENTS_B: key_SetExt3B(); break; case bSET_EXT4_FLAG: key_SetExt4Flag(); break; case bSET_EXT4_MONTHS: key_SetExt4Months(); break; case bSET_EXT4_ENBL_CAN: key_SetExt4EnblCan(); break; case wSET_EXT4T_FLAG: key_SetExt4TFlag(); break; case wSET_EXT4T_MONTHS: key_SetExt4TMonths(); break; case wSET_EXT4T_RESET_FULL: key_SetExt4TResetFull(); break; case wSET_EXT4T_RESET_CUSTOM: key_SetExt4TResetCustom(); break; case bSET_EXT5_FLAG: key_SetExt5Flag(); break; case wSET_EXT6_FLAG: key_SetExt6Flag(); break; case bSET_CLEAR_CANALS: key_ClearCanals(); break; case wSET_SET_PROFILES1: key_SetProfiles1(); break; case wSET_SET_PROFILES2: key_SetProfiles2(); break; case wGET_HEALTH: key_GetHealth(); break; default: NoProgram(); break; } } }