---
# System prepended metadata

title: Prac1 Actions Code
tags: [OBDH-GFIE, ' laboratorio']

---

---
title: Práctica 1.  Entorno de Modelado Gráfico basado en Componentes EDROOM sobre RTEMS 4.6
description: Código de los métodos de las clases componentes Práctica 1 del laboratorio de Gestión de Datos a Bordo del Grado en Física e Instrumentación Espacial de la Universidad de Alcalá
tags: OBDH-GFIE, laboratorio
robots: noindex, nofollow
---

# Práctica 1. Código de los métodos de la Práctica 1 

#### CCSystemMng::EDROOMIRQ18HandlerTopHalfFunction


```c=
EDROOMVarIRQ18=leon3_getchar();
 
EDROOMIRQ18BottomHalfSignal=true;
 
switch(EDROOMVarIRQ18){
    case('T'):
    case('t'):
    case('I'):
    case('i'):
        break;
 
  default:
     EDROOMIRQ18BottomHalfSignal=false;
}
```
#### CCSystemMng::CTXTop::FInit()


```c=
SerialCommand.MaskIRQ();
 
SerialCommand.InstallHandler();
 
leon3_uart_ctrl_rx_irq_enable();
leon3_uart_ctrl_rx_enable();
 
SerialCommand.UnMaskIRQ();
 
nexys_srg_gpio_init_buttons_switches();
 
nexys_srg_gpio_init_leds_7segs_displays();

```

#### CCSystemMng::CTXTop::CTXStartUp:FSendLEDStart()


```c=
		// Complete Data 
	
*pSLEDStart_Data=CLEDPeriod100Ms;

```

#### CCSystemMng::CTXTop::GCmdIsToogleLEDShift()
```c=

return (('t'==VCommand) || ('T'==VCommand));
```

#### CCSystemMng::CTXTop::GCmdIsIncreaseDisplays()

```c=

return (('i'==VCommand) || ('I'==VCommand));

```


![NewVariableForm](https://hackmd.io/_uploads/ryVxMXKia.png)

![NewConstant](https://hackmd.io/_uploads/SkCrM7Yip.png)



#### CCLEDMng::CTXTop::FGetShiftPeriod()
	
```c=
    
// Data access
 
VShiftPeriodMicrosecs=varSLEDStart*100000;
 
//Limit Period	
if(VShiftPeriodMicrosecs > CMaxShiftPeriodMicrosecs)
	VShiftPeriodMicrosecs=CMaxShiftPeriodMicrosecs;
else if (varSLEDStart < CMinShiftPeriodMicrosecs)
	VShiftPeriodMicrosecs=CMinShiftPeriodMicrosecs;
 
//Get Time reference
VTimeRef.GetTime();

```


#### CCLEDMng::CTXTop::FProgShift()
	
```c=
 
 VTimeRef+=Pr_Time(0,VShiftPeriodMicrosecs); // interval of X sec + Y microsec	 
  
 time= VTimeRef;

```

#### CCLEDMng::CTXTop::FShiftLEDs()
	
```c=
nexys_srg_gpio_turn_off_led(VLEDPos);
 
if(VShiftDirection){
 
	VLEDPos=(VLEDPos + 1)%10;
}else{
	if(VLEDPos){
		VLEDPos--;
	}else{
		VLEDPos=9;
	}
}
 
nexys_srg_gpio_turn_on_led(VLEDPos);

```

#### CCDisplaysMng::CTXTop::FRefreshDisplays()

```c=

for(uint16_t i=0; i < 1000 ; i++ )
	nexys_srg_gpio_seg_7seg_array(8,VDisplays7SegValue);


```

#### CCDisplaysMng::CTXTop::FIncreaseDisplays()

```c=

nexys_srg_gpio_increase_seg_7seg_array(VDisplays7SegValue);

```

#### CCDisplaysMng::CTXTop::FSendDisplaysReady()

```c=

for(uint8_t i=0; i < 8 ; i++)
	VDisplays7SegValue[i]=0;
 
nexys_srg_gpio_set_7seg_digit(7, 0) ;
```