void cam_lam_enable(const int c, const int n) { /* enable LAM flip-flop in unit */ camc(c, n, 0, 26); /* clear LAM flip-flop in unit */ camc(c, n, 0, 10); }
void camc_sn(const int c, const int n, const int a, const int f, const int r) { int i; for (i = 0; i < r; i++) camc(c, n + i, a, f); }
void camc_sa(const int c, const int n, const int a, const int f, const int r) { int i; for (i = 0; i < r; i++) camc(c, n, a + i, f); }
INT frontend_init() { /* hardware initialization */ cam_init(); cam_crate_clear(CRATE); cam_crate_zinit(CRATE); /* enable LAM in IO unit */ camc(CRATE, SLOT_IO, 0, 26); /* enable LAM in crate controller */ cam_lam_enable(CRATE, SLOT_IO); /* reset external LAM Flip-Flop */ camo(CRATE, SLOT_IO, 1, 16, 0xFF); camo(CRATE, SLOT_IO, 1, 16, 0); /* register CNAF functionality from cnaf_callback.c with debug output */ register_cnaf_callback(1); /* print message and return FE_ERR_HW if frontend should not be started */ return SUCCESS; }
void cam_lam_clear(const int c, const int n) { /* clear LAM flip-flop in unit */ camc(c, n, 0, 10); }
void cam_lam_disable(const int c, const int n) { /* enable LAM flip-flop in unit */ camc(c, n, 0, 24); }
/*--------------------------------------------------------------------*/ void mcstd_func(CAMAC * PP) { char paddr[128], pstr[128]; int i, status, pstatus = 0; WORD dd16[100]; WORD *pdd16; DWORD dd24[100]; DWORD *pdd24; DWORD lam; CAMAC *p; /* Load default CAMAC */ // PP = &Prompt[1]; while (1) { make_display_string(MCSTD, PP, paddr); /* prompt */ printf("MCStd> [%s] :", paddr); ss_gets(pstr, 128); /* decode line */ status = decode_line(PP, pstr); p = PP; if (status == LOOP) status = pstatus; if (status != SKIP && status != HELP) pstatus = status; i = 0; pdd16 = dd16; pdd24 = dd24; switch (status) { /* system */ case CAMST: printf("cam_op\n"); cam_op(); break; case CAM_LAM_ENABLE: cam_lam_enable(p->c, p->n); printf("cam_lam_enable:C%i-N%i\n", p->c, p->n); break; case CAM_LAM_DISABLE: cam_lam_disable(p->c, p->n); printf("cam_lam_disable:C%i-N%i\n", p->c, p->n); break; case CAM_LAM_READ: cam_lam_read(p->c, &lam); printf("cam_lam_read:C%i-> 0x%x\n", p->c, lam); break; case CAM_LAM_CLEAR: cam_lam_clear(p->c, p->n); printf("cam_lam_clear:C%i \n", p->c); break; case CAM_INHIBIT_SET: cam_inhibit_set(p->c); printf("cam_inhibit_set:C%i\n", p->c); break; case CAM_INHIBIT_CLEAR: cam_inhibit_clear(p->c); printf("cam_inhibit_clear:C%i\n", p->c); break; case CAM_CRATE_CLEAR: cam_crate_clear(p->c); printf("cam_crate_clear:C%i\n", p->c); break; case CAM_CRATE_ZINIT: cam_crate_zinit(p->c); printf("cam_crate_zinit:C%i\n", p->c); break; /* command */ case CAMC: do { camc(p->c, p->n, p->a, p->f); printf("camc:[R%i]-C%i-N%i-A%i-F%i\n", ++i, p->c, p->n, p->a, p->f); } while (i < p->r); break; case CAMC_Q: do { camc_q(p->c, p->n, p->a, p->f, &p->q); printf("camc_q:[R%i]-C%i-N%i-A%i-F%i -Q:%i\n", ++i, p->c, p->n, p->a, p->f, p->q); } while (i < p->r); break; case CAMC_SA: camc(p->c, p->n, p->a, p->f); printf("camc_sa:C%i-N%i-A%i-F%i\n", p->c, p->n, p->a, p->f); break; case CAMC_SN: camc(p->c, p->n, p->a, p->f); printf("camc_sn:C%i-N%i-A%i-F%i\n", p->c, p->n, p->a, p->f); break; /* output */ case CAM16O: do { cam16o(p->c, p->n, p->a, p->f, p->d16); printf("cam16o:[R%i]-C%i-N%i-A%i-F%i <- 0x%x\n", ++i, p->c, p->n, p->a, p->f, p->d16); } while (i < p->r); break; case CAM24O: do { cam24o(p->c, p->n, p->a, p->f, p->d24); printf("cam24o:[R%i]-C%i-N%i-A%i-F%i <- 0x%x\n", ++i, p->c, p->n, p->a, p->f, p->d24); } while (i < p->r); break; case CAM16O_Q: do { cam16o_q(p->c, p->n, p->a, p->f, p->d16, &p->x, &p->q); printf("cam16o_q:[R%i]-C%i-N%i-A%i-F%i <- 0x%x X:%i-Q:%i\n", ++i, p->c, p->n, p->a, p->f, p->d16, p->x, p->q); } while (i < p->r); break; case CAM24O_Q: do { cam24o_q(p->c, p->n, p->a, p->f, p->d24, &p->x, &p->q); printf("cam24o_q:[R%i]-C%i-N%i-A%i-F%i <- 0x%x X:%i-Q:%i\n", ++i, p->c, p->n, p->a, p->f, p->d24, p->x, p->q); } while (i < p->r); break; case CAM16O_R: cam16o_r(p->c, p->n, p->a, p->f, pdd16, p->r); printf("cam16o_r:C%i-N%i-A%i-F%i <- 0x%x\n", p->c, p->n, p->a, p->f, p->d16); break; case CAM24O_R: cam24o_r(p->c, p->n, p->a, p->f, pdd24, p->r); printf("cam24o_r:C%i-N%i-A%i-F%i <- 0x%x\n", p->c, p->n, p->a, p->f, p->d24); break; /* inputs */ case CAM16I: do { cam16i(p->c, p->n, p->a, p->f, &p->d16); printf("cam16i:[R%i]-C%i-N%i-A%i-F%i-> 0x%4.4x\n", ++i, p->c, p->n, p->a, p->f, p->d16); } while (i < p->r); break; case CAM24I: do { cam24i(p->c, p->n, p->a, p->f, &p->d24); printf("cam24i:[R%i]-C%i-N%i-A%i-F%i-> 0x%6.6x\n", ++i, p->c, p->n, p->a, p->f, p->d24); } while (i < p->r); break; case CAM16I_Q: do { cam16i_q(p->c, p->n, p->a, p->f, &p->d16, &p->x, &p->q); printf("cam16i_q:[R%i]-C%i-N%i-A%i-F%i-> 0x%4.4x X:%i-Q:%i\n", ++i, p->c, p->n, p->a, p->f, p->d16, p->x, p->q); } while (i < p->r); break; case CAM24I_Q: do { cam24i_q(p->c, p->n, p->a, p->f, &p->d24, &p->x, &p->q); printf("cam24i_q:[R%i]-C%i-N%i-A%i-F%i-> 0x%6.6x X:%i-Q:%i\n", ++i, p->c, p->n, p->a, p->f, p->d24, p->x, p->q); } while (i < p->r); break; case CAM16I_R: memset(pdd16, 0, sizeof(dd16)); cam16i_r(p->c, p->n, p->a, p->f, &pdd16, p->r); for (i = 0; i < p->r; i++) printf("cam16i_r:[R%i]-C%i-N%i-A%i-F%i-> 0x%4.4x\n", i + 1, p->c, p->n, p->a, p->f, dd16[i]); break; case CAM24I_R: memset(pdd24, 0, sizeof(dd24)); cam24i_r(p->c, p->n, p->a, p->f, &pdd24, p->r); for (i = 0; i < p->r; i++) printf("cam24i_r:[R%i]-C%i-N%i-A%i-F%i-> 0x%6.6x\n", i + 1, p->c, p->n, p->a, p->f, dd24[i]); break; case CAM16I_RQ: memset(pdd16, 0, sizeof(dd16)); cam16i_rq(p->c, p->n, p->a, p->f, &pdd16, p->r); for (i = 0; i < p->r; i++) printf("cam16i_rq:[R%i]-C%i-N%i-A%i-F%i-> 0x%4.4x\n", i + 1, p->c, p->n, p->a, p->f, dd16[i]); break; case CAM24I_RQ: memset(pdd24, 0, sizeof(dd24)); cam24i_rq(p->c, p->n, p->a, p->f, &pdd24, p->r); for (i = 0; i < p->r; i++) printf("cam24i_rq:[R%i]-C%i-N%i-A%i-F%i-> 0x%6.6x\n", i + 1, p->c, p->n, p->a, p->f, dd24[i]); break; case CAM16I_SA: memset(pdd16, 0, sizeof(dd16)); cam16i_sa(p->c, p->n, p->a, p->f, &pdd16, p->r); for (i = 0; i < p->r; i++) printf("cam16i_sa:[R%i]-C%i-N%i-A%i-F%i-> 0x%4.4x\n", i + 1, p->c, p->n, p->a + i, p->f, dd16[i]); break; case CAM24I_SA: memset(pdd24, 0, sizeof(dd24)); cam24i_sa(p->c, p->n, p->a, p->f, &pdd24, p->r); for (i = 0; i < p->r; i++) printf("cam24i_sa:[R%i]-C%i-N%i-A%i-F%i-> 0x%6.6x\n", i + 1, p->c, p->n, p->a + i, p->f, dd24[i]); break; case CAM16I_SN: memset(pdd16, 0, sizeof(dd16)); cam16i_sa(p->c, p->n, p->a, p->f, &pdd16, p->r); for (i = 0; i < p->r; i++) printf("cam16i_sn:[R%i]-C%i-N%i-A%i-F%i-> 0x%x\n", i + 1, p->c, p->n + i, p->a, p->f, dd16[i]); break; case CAM24I_SN: memset(pdd24, 0, sizeof(dd24)); cam24i_sn(p->c, p->n, p->a, p->f, &pdd24, p->r); for (i = 0; i < p->r; i++) printf("cam24i_sn:[R%i]-C%i-N%i-A%i-F%i-> 0x%x\n", i + 1, p->c, p->n + i, p->a, p->f, dd24[i]); break; case QUIT: p->r = 1; return; case HELP: help_page(MCSTD); break; case SKIP: break; default: status = SKIP; break; } } }
INT read_trigger_event(char *pevent, INT off) { WORD *pdata, a; INT q, timeout; /* init bank structure */ bk_init(pevent); /* create structured ADC0 bank */ bk_create(pevent, "ADC0", TID_WORD, &pdata); /* wait for ADC conversion */ for (timeout = 100; timeout > 0; timeout--) { camc_q(CRATE, SLOT_ADC, 0, 8, &q); if (q) break; } if (timeout == 0) ss_printf(0, 10, "No ADC gate!"); /* use following code to read out real CAMAC ADC */ /* for (a=0 ; a<N_ADC ; a++) cami(CRATE, SLOT_ADC, a, 0, pdata++); */ /* Use following code to "simulate" data */ for (a = 0; a < N_ADC; a++) *pdata++ = rand() % 1024; /* clear ADC */ camc(CRATE, SLOT_ADC, 0, 9); bk_close(pevent, pdata); /* create variable length TDC bank */ bk_create(pevent, "TDC0", TID_WORD, &pdata); /* use following code to read out real CAMAC TDC */ /* for (a=0 ; a<N_TDC ; a++) cami(CRATE, SLOT_TDC, a, 0, pdata++); */ /* Use following code to "simulate" data */ for (a = 0; a < N_TDC; a++) *pdata++ = rand() % 1024; /* clear TDC */ camc(CRATE, SLOT_TDC, 0, 9); bk_close(pevent, pdata); /* clear IO unit LAM */ camc(CRATE, SLOT_IO, 0, 10); /* clear LAM in crate controller */ cam_lam_clear(CRATE, SLOT_IO); /* reset external LAM Flip-Flop */ camo(CRATE, SLOT_IO, 1, 16, 0xFF); camo(CRATE, SLOT_IO, 1, 16, 0); ss_sleep(10); return bk_size(pevent); }
void Space::CreateTestScene(Entity player, double time) { auto renderer = p3::game->GetRenderer(); m_renderer = renderer; StarSystemCache::ShrinkCache(SystemPath(), true); Sector::cache.ClearCache(); SystemPath path(10,0,0,0); m_starSystem = StarSystemCache::GetCached(path); GenBody(time, m_starSystem->m_rootBody.Get(), m_rootFrame.get()); m_rootFrame->UpdateOrbitRails(time, 1.0); //init "player" { auto model = p3::game->GetModelCache()->FindModel("kanara"); SDL_assert(model); player.assign<GraphicComponent>(new ModelGraphic(renderer, model)); player.assign<PosOrientComponent>(vector3d(0,0,1e6), matrix3x3d(1.0)); player.assign<MassComponent>(10.0); player.assign<DynamicsComponent>(); player.assign<ThrusterComponent>(); player.assign<WeaponComponent>(); player.assign<PlayerInputComponent>(); player.assign<CollisionMeshComponent>(player, model->GetCollisionMesh()); player.assign<FrameComponent>(GetRootFrame()); //player.assign<ColorComponent>(Color(0,255,255,255)); player.assign<ShipAIComponent>(); player.assign<NameComponent>("Player"); GetRootFrame()->GetCollisionSpace()->AddGeom(player.component<CollisionMeshComponent>()->geom.get()); } //init "AI" { auto model = p3::game->GetModelCache()->FindModel("natrix"); SDL_assert(model); Entity ship = m_entities->create(); ship.assign<GraphicComponent>(new ModelGraphic(renderer, model)); ship.assign<PosOrientComponent>(vector3d(0,0,1e6 - 200), matrix3x3d(1.0)); ship.assign<MassComponent>(10.0); ship.assign<DynamicsComponent>(); ship.assign<ThrusterComponent>(); ship.assign<WeaponComponent>(); ship.assign<CollisionMeshComponent>(ship, model->GetCollisionMesh()); ship.assign<FrameComponent>(GetRootFrame()); ship.assign<ColorComponent>(Color(255,0,0,255)); ship.assign<ShipAIComponent>(); ship.assign<NameComponent>("Drone"); ship.assign<AICommandComponent>(); //kamikaze auto aicmd = ship.component<AICommandComponent>(); aicmd->SetKamikaze(player); GetRootFrame()->GetCollisionSpace()->AddGeom(ship.component<CollisionMeshComponent>()->geom.get()); } //some scenery //Entity obstacle = m_entities->create(); if (0) { Entity obstacle = m_entities->create(); auto model = p3::game->GetModelCache()->FindModel("kbuilding02"); obstacle.assign<PosOrientComponent>(vector3d(0, 0, -200), matrix3x3d(1.0)); obstacle.assign<GraphicComponent>(new ModelGraphic(renderer, model)); obstacle.assign<MassComponent>(100.0); obstacle.assign<DynamicsComponent>(); obstacle.assign<CollisionMeshComponent>(obstacle, model->GetCollisionMesh()); obstacle.assign<FrameComponent>(GetRootFrame()); GetRootFrame()->GetCollisionSpace()->AddGeom(obstacle.component<CollisionMeshComponent>()->geom.get()); Entity hangAroundMember = m_entities->create(); hangAroundMember.assign<PosOrientComponent>(vector3d(0.0), matrix3x3d(1.0)); hangAroundMember.assign<AttachToEntityComponent>(obstacle, vector3d(0, 50, 0)); hangAroundMember.assign<GraphicComponent>(new ModelGraphic(renderer, model)); hangAroundMember.assign<FrameComponent>(GetRootFrame()); } //init camera //left camera if (0) { Entity camera = m_entities->create(); ent_ptr<CameraComponent> camc(new CameraComponent()); camc->camera.reset(new Camera()); camc->camera->viewport = vector4f(0.f, 0.f, 0.5f, 1.f); camc->camera->clearColor = Color(0, 40, 0, 0); camera.assign(camc); camera.assign<PosOrientComponent>(vector3d(0, 50, 100), matrix3x3d(1.0)); camera.assign<CameraLookAtComponent>(player); camera.assign<FrameComponent>(GetRootFrame()); //camera.assign<AttachToEntityComponent>(player, vector3d(0, 5, 50)); } //right top camera if (0) { Entity camera = m_entities->create(); ent_ptr<CameraComponent> camc(new CameraComponent()); camc->camera.reset(new Camera()); camc->camera->viewport = vector4f(0.5f, 0.5f, 0.5f, 0.5f); camera.assign(camc); camera.assign<PosOrientComponent>(vector3d(100, -10, -10), matrix3x3d(1.0)); //camera.assign<CameraLookAtComponent>(obstacle); camera.assign<FrameComponent>(GetRootFrame()); } //right bottom camera { Entity camera = m_entities->create(); ent_ptr<CameraComponent> camc(new CameraComponent()); camc->camera.reset(new Camera()); //camc->camera->clearColor = Color(10, 10, 10, 0); camc->camera->viewport = vector4f(0.0f, 0.f, 1.0f, 1.0f); //camc->camera->viewport = vector4f(0.5f, 0.f, 0.5f, 1.0f); camera.assign(camc); camera.assign<PosOrientComponent>(vector3d(0, 0, 0), matrix3x3d(1.0)); camera.assign<AttachToEntityComponent>(player, vector3d(0, 5, 10)); camera.assign<FrameComponent>(GetRootFrame()); } }