Tarea_I2C_Alarma
Dependencies: DebouncedIn QEI RTC-DS1307 mbed
main.cpp@0:642fe2aac275, 2015-11-23 (annotated)
- Committer:
- szapataa
- Date:
- Mon Nov 23 15:12:03 2015 +0000
- Revision:
- 0:642fe2aac275
Tarea_I2C_Alarma
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
szapataa | 0:642fe2aac275 | 1 | #include "mbed.h" |
szapataa | 0:642fe2aac275 | 2 | #include "Rtc_Ds1307.h" |
szapataa | 0:642fe2aac275 | 3 | #include "DebouncedIn.h" |
szapataa | 0:642fe2aac275 | 4 | #include "QEI.h" |
szapataa | 0:642fe2aac275 | 5 | |
szapataa | 0:642fe2aac275 | 6 | //RtcCls rtc(p28, p27, p29, true); |
szapataa | 0:642fe2aac275 | 7 | Rtc_Ds1307 rtc(PTE0,PTE1); /*modulo I2C*/ |
szapataa | 0:642fe2aac275 | 8 | |
szapataa | 0:642fe2aac275 | 9 | Serial pc(USBTX, USBRX, "pc"); |
szapataa | 0:642fe2aac275 | 10 | |
szapataa | 0:642fe2aac275 | 11 | |
szapataa | 0:642fe2aac275 | 12 | //Configuracion encoder |
szapataa | 0:642fe2aac275 | 13 | QEI wheel (PTA5, PTA4, NC, 100); |
szapataa | 0:642fe2aac275 | 14 | |
szapataa | 0:642fe2aac275 | 15 | //Botones |
szapataa | 0:642fe2aac275 | 16 | DebouncedIn BotonENC(PTD5); //Boton Encoder |
szapataa | 0:642fe2aac275 | 17 | |
szapataa | 0:642fe2aac275 | 18 | DebouncedIn Boton2(PTE2); //Boton para confirmar |
szapataa | 0:642fe2aac275 | 19 | |
szapataa | 0:642fe2aac275 | 20 | //salida led |
szapataa | 0:642fe2aac275 | 21 | DigitalOut myled(LED1); |
szapataa | 0:642fe2aac275 | 22 | int dia=0,mes=0,anno=2015,hor=0,min=0,seg=0; |
szapataa | 0:642fe2aac275 | 23 | |
szapataa | 0:642fe2aac275 | 24 | char buffer[128]; |
szapataa | 0:642fe2aac275 | 25 | int readptr = 0; |
szapataa | 0:642fe2aac275 | 26 | int start=0; |
szapataa | 0:642fe2aac275 | 27 | int Config; |
szapataa | 0:642fe2aac275 | 28 | |
szapataa | 0:642fe2aac275 | 29 | int main() { |
szapataa | 0:642fe2aac275 | 30 | char c; |
szapataa | 0:642fe2aac275 | 31 | Rtc_Ds1307::Time_rtc tm = {}; |
szapataa | 0:642fe2aac275 | 32 | |
szapataa | 0:642fe2aac275 | 33 | while(1) { |
szapataa | 0:642fe2aac275 | 34 | |
szapataa | 0:642fe2aac275 | 35 | set_reloj: |
szapataa | 0:642fe2aac275 | 36 | |
szapataa | 0:642fe2aac275 | 37 | pc.printf("*************************************\n"); |
szapataa | 0:642fe2aac275 | 38 | pc.printf("* Menu for RTC Test : *\n"); |
szapataa | 0:642fe2aac275 | 39 | pc.printf("* read - reads the clock *\n"); |
szapataa | 0:642fe2aac275 | 40 | pc.printf("* start - start the clock *\n"); |
szapataa | 0:642fe2aac275 | 41 | pc.printf("* stop - stop the clock *\n"); |
szapataa | 0:642fe2aac275 | 42 | pc.printf("* write - write the clock *\n"); |
szapataa | 0:642fe2aac275 | 43 | pc.printf("* ena - enable Square wave output *\n"); |
szapataa | 0:642fe2aac275 | 44 | pc.printf("* dis - disable square wave outp. *\n"); |
szapataa | 0:642fe2aac275 | 45 | pc.printf("*************************************\n"); |
szapataa | 0:642fe2aac275 | 46 | |
szapataa | 0:642fe2aac275 | 47 | while( (c = pc.getc()) != '\n') { |
szapataa | 0:642fe2aac275 | 48 | buffer[readptr++] = c; |
szapataa | 0:642fe2aac275 | 49 | } |
szapataa | 0:642fe2aac275 | 50 | buffer[readptr++] = 0; |
szapataa | 0:642fe2aac275 | 51 | if (strncmp(buffer, "read", 4) == 0) { |
szapataa | 0:642fe2aac275 | 52 | // perform read |
szapataa | 0:642fe2aac275 | 53 | pc.printf("Performing read operation\n"); |
szapataa | 0:642fe2aac275 | 54 | if (rtc.getTime(tm) ) { |
szapataa | 0:642fe2aac275 | 55 | pc.printf("The current time is : %02d:%02d:%02d\n", tm.hour, tm.min, tm.sec); |
szapataa | 0:642fe2aac275 | 56 | pc.printf("The current date is : %s, %02d/%02d/%04d\n", rtc.weekdayToString(tm.wday), tm.mon, tm.date, tm.year); |
szapataa | 0:642fe2aac275 | 57 | } |
szapataa | 0:642fe2aac275 | 58 | |
szapataa | 0:642fe2aac275 | 59 | } |
szapataa | 0:642fe2aac275 | 60 | else if (strncmp(buffer, "write", 5) == 0) { |
szapataa | 0:642fe2aac275 | 61 | // perform write |
szapataa | 0:642fe2aac275 | 62 | pc.printf("Enter the date (date 0..31)"); |
szapataa | 0:642fe2aac275 | 63 | pc.scanf("%d", &tm.date); |
szapataa | 0:642fe2aac275 | 64 | pc.printf("Enter the date (month 1..12)"); |
szapataa | 0:642fe2aac275 | 65 | pc.scanf("%d", &tm.mon); |
szapataa | 0:642fe2aac275 | 66 | pc.printf("Enter the date (year)"); |
szapataa | 0:642fe2aac275 | 67 | pc.scanf("%d", &tm.year); |
szapataa | 0:642fe2aac275 | 68 | pc.printf("Enter the time (hours 0..23)"); |
szapataa | 0:642fe2aac275 | 69 | pc.scanf("%d", &tm.hour); |
szapataa | 0:642fe2aac275 | 70 | pc.printf("Enter the time (minutes 0..59)"); |
szapataa | 0:642fe2aac275 | 71 | pc.scanf("%d", &tm.min); |
szapataa | 0:642fe2aac275 | 72 | pc.printf("Enter the time (seconds 0..59)"); |
szapataa | 0:642fe2aac275 | 73 | pc.scanf("%d", &tm.sec); |
szapataa | 0:642fe2aac275 | 74 | pc.printf("Performing write operation\n"); |
szapataa | 0:642fe2aac275 | 75 | |
szapataa | 0:642fe2aac275 | 76 | while(pc.readable()) |
szapataa | 0:642fe2aac275 | 77 | pc.getc(); |
szapataa | 0:642fe2aac275 | 78 | rtc.setTime(tm, false, false); |
szapataa | 0:642fe2aac275 | 79 | } |
szapataa | 0:642fe2aac275 | 80 | else if (strncmp(buffer, "start", 5) == 0) { |
szapataa | 0:642fe2aac275 | 81 | // start |
szapataa | 0:642fe2aac275 | 82 | readptr = 0; |
szapataa | 0:642fe2aac275 | 83 | pc.printf("Dispositivo Iniciado\n"); |
szapataa | 0:642fe2aac275 | 84 | rtc.startClock(); |
szapataa | 0:642fe2aac275 | 85 | goto set_prev; |
szapataa | 0:642fe2aac275 | 86 | |
szapataa | 0:642fe2aac275 | 87 | |
szapataa | 0:642fe2aac275 | 88 | } |
szapataa | 0:642fe2aac275 | 89 | else if (strncmp(buffer, "stop", 4) == 0) { |
szapataa | 0:642fe2aac275 | 90 | // stop |
szapataa | 0:642fe2aac275 | 91 | pc.printf("Performing stop operation\n"); |
szapataa | 0:642fe2aac275 | 92 | rtc.stopClock(); |
szapataa | 0:642fe2aac275 | 93 | } |
szapataa | 0:642fe2aac275 | 94 | else if (strncmp(buffer, "ena", 3) == 0) { |
szapataa | 0:642fe2aac275 | 95 | int rs; |
szapataa | 0:642fe2aac275 | 96 | pc.printf("Please specify the frequency : [0 = 1Hz, 1 = 4.096kHz, 2 = 8.192kHz, 3 = 32.768kHz] "); |
szapataa | 0:642fe2aac275 | 97 | scanf("%d", &rs); |
szapataa | 0:642fe2aac275 | 98 | pc.printf("Enabling the output with %d option\n", rs); |
szapataa | 0:642fe2aac275 | 99 | rtc.setSquareWaveOutput(true, (Rtc_Ds1307::SqwRateSelect_t)rs); |
szapataa | 0:642fe2aac275 | 100 | } |
szapataa | 0:642fe2aac275 | 101 | else if (strncmp(buffer, "dis", 3) == 0) { |
szapataa | 0:642fe2aac275 | 102 | pc.printf("Disableing square wave output\n"); |
szapataa | 0:642fe2aac275 | 103 | rtc.setSquareWaveOutput(false, Rtc_Ds1307::RS1Hz); |
szapataa | 0:642fe2aac275 | 104 | } |
szapataa | 0:642fe2aac275 | 105 | else { |
szapataa | 0:642fe2aac275 | 106 | pc.printf("syntax error\n"); |
szapataa | 0:642fe2aac275 | 107 | } |
szapataa | 0:642fe2aac275 | 108 | readptr = 0; |
szapataa | 0:642fe2aac275 | 109 | //pc.printf("\n\n\n"); |
szapataa | 0:642fe2aac275 | 110 | } |
szapataa | 0:642fe2aac275 | 111 | |
szapataa | 0:642fe2aac275 | 112 | |
szapataa | 0:642fe2aac275 | 113 | set_prev: |
szapataa | 0:642fe2aac275 | 114 | |
szapataa | 0:642fe2aac275 | 115 | |
szapataa | 0:642fe2aac275 | 116 | if (Config ==1){ |
szapataa | 0:642fe2aac275 | 117 | readptr = 0; |
szapataa | 0:642fe2aac275 | 118 | goto set_reloj; |
szapataa | 0:642fe2aac275 | 119 | } |
szapataa | 0:642fe2aac275 | 120 | |
szapataa | 0:642fe2aac275 | 121 | |
szapataa | 0:642fe2aac275 | 122 | |
szapataa | 0:642fe2aac275 | 123 | |
szapataa | 0:642fe2aac275 | 124 | set_alarma: |
szapataa | 0:642fe2aac275 | 125 | pc.printf("******* Configuracion Alarma *******\n"); |
szapataa | 0:642fe2aac275 | 126 | |
szapataa | 0:642fe2aac275 | 127 | |
szapataa | 0:642fe2aac275 | 128 | /*inicia seleccion anno*/ |
szapataa | 0:642fe2aac275 | 129 | set_anno: |
szapataa | 0:642fe2aac275 | 130 | while(1){ |
szapataa | 0:642fe2aac275 | 131 | |
szapataa | 0:642fe2aac275 | 132 | anno=anno+wheel.getPulses(); |
szapataa | 0:642fe2aac275 | 133 | wheel.reset(); |
szapataa | 0:642fe2aac275 | 134 | |
szapataa | 0:642fe2aac275 | 135 | /*restriccion del año--no se puede config alarma hacia el pasado*/ |
szapataa | 0:642fe2aac275 | 136 | |
szapataa | 0:642fe2aac275 | 137 | if(anno>=2100){ |
szapataa | 0:642fe2aac275 | 138 | anno=2100; |
szapataa | 0:642fe2aac275 | 139 | } |
szapataa | 0:642fe2aac275 | 140 | else if (anno<=2015){ |
szapataa | 0:642fe2aac275 | 141 | anno=2015; |
szapataa | 0:642fe2aac275 | 142 | } |
szapataa | 0:642fe2aac275 | 143 | pc.printf("*Anno=%d\n ",anno); |
szapataa | 0:642fe2aac275 | 144 | |
szapataa | 0:642fe2aac275 | 145 | |
szapataa | 0:642fe2aac275 | 146 | if(BotonENC.falling()){ |
szapataa | 0:642fe2aac275 | 147 | goto set_mes; |
szapataa | 0:642fe2aac275 | 148 | } |
szapataa | 0:642fe2aac275 | 149 | if(Boton2.falling()){ |
szapataa | 0:642fe2aac275 | 150 | goto set_comp; |
szapataa | 0:642fe2aac275 | 151 | } |
szapataa | 0:642fe2aac275 | 152 | |
szapataa | 0:642fe2aac275 | 153 | } |
szapataa | 0:642fe2aac275 | 154 | /*termina seleccion anno*/ |
szapataa | 0:642fe2aac275 | 155 | |
szapataa | 0:642fe2aac275 | 156 | /*seleccion mes*/ |
szapataa | 0:642fe2aac275 | 157 | set_mes: |
szapataa | 0:642fe2aac275 | 158 | while(1){ |
szapataa | 0:642fe2aac275 | 159 | |
szapataa | 0:642fe2aac275 | 160 | mes=mes+wheel.getPulses(); |
szapataa | 0:642fe2aac275 | 161 | wheel.reset(); |
szapataa | 0:642fe2aac275 | 162 | |
szapataa | 0:642fe2aac275 | 163 | /*restricción mes--maximo 12 meses*/ |
szapataa | 0:642fe2aac275 | 164 | |
szapataa | 0:642fe2aac275 | 165 | if(mes>=12){ |
szapataa | 0:642fe2aac275 | 166 | mes=12;} |
szapataa | 0:642fe2aac275 | 167 | else if (mes<=0){ |
szapataa | 0:642fe2aac275 | 168 | mes=0;} |
szapataa | 0:642fe2aac275 | 169 | pc.printf("*Mes=%d\n ",mes); |
szapataa | 0:642fe2aac275 | 170 | |
szapataa | 0:642fe2aac275 | 171 | if(BotonENC.falling()){ |
szapataa | 0:642fe2aac275 | 172 | goto set_dia;} |
szapataa | 0:642fe2aac275 | 173 | if(Boton2.falling()){ |
szapataa | 0:642fe2aac275 | 174 | goto set_comp;} |
szapataa | 0:642fe2aac275 | 175 | |
szapataa | 0:642fe2aac275 | 176 | } |
szapataa | 0:642fe2aac275 | 177 | /*termina seleccion mes*/ |
szapataa | 0:642fe2aac275 | 178 | |
szapataa | 0:642fe2aac275 | 179 | /*inicia dia*/ |
szapataa | 0:642fe2aac275 | 180 | set_dia: |
szapataa | 0:642fe2aac275 | 181 | while(1){ |
szapataa | 0:642fe2aac275 | 182 | |
szapataa | 0:642fe2aac275 | 183 | dia=dia+wheel.getPulses(); |
szapataa | 0:642fe2aac275 | 184 | wheel.reset(); |
szapataa | 0:642fe2aac275 | 185 | /*restricción al numero de dias--maximo 31--*/ |
szapataa | 0:642fe2aac275 | 186 | if(dia>=31){ |
szapataa | 0:642fe2aac275 | 187 | dia=31;} |
szapataa | 0:642fe2aac275 | 188 | else if (dia<=0){ |
szapataa | 0:642fe2aac275 | 189 | dia=0;} |
szapataa | 0:642fe2aac275 | 190 | |
szapataa | 0:642fe2aac275 | 191 | pc.printf("*Dia=%d\n ",dia); |
szapataa | 0:642fe2aac275 | 192 | |
szapataa | 0:642fe2aac275 | 193 | if(BotonENC.falling()){ |
szapataa | 0:642fe2aac275 | 194 | goto set_hor; |
szapataa | 0:642fe2aac275 | 195 | } |
szapataa | 0:642fe2aac275 | 196 | if(Boton2.falling()){ |
szapataa | 0:642fe2aac275 | 197 | goto set_comp; |
szapataa | 0:642fe2aac275 | 198 | } |
szapataa | 0:642fe2aac275 | 199 | } |
szapataa | 0:642fe2aac275 | 200 | /*termine dia*/ |
szapataa | 0:642fe2aac275 | 201 | /*inicia seleccion hora*/ |
szapataa | 0:642fe2aac275 | 202 | set_hor: |
szapataa | 0:642fe2aac275 | 203 | while(1){ |
szapataa | 0:642fe2aac275 | 204 | |
szapataa | 0:642fe2aac275 | 205 | hor=hor+wheel.getPulses(); |
szapataa | 0:642fe2aac275 | 206 | wheel.reset(); |
szapataa | 0:642fe2aac275 | 207 | |
szapataa | 0:642fe2aac275 | 208 | /*restriccion de la hora--no puede ser mayor de 23*/ |
szapataa | 0:642fe2aac275 | 209 | |
szapataa | 0:642fe2aac275 | 210 | if(hor>=23){ |
szapataa | 0:642fe2aac275 | 211 | hor=23; |
szapataa | 0:642fe2aac275 | 212 | } |
szapataa | 0:642fe2aac275 | 213 | else if (hor<=0){ |
szapataa | 0:642fe2aac275 | 214 | hor=0; |
szapataa | 0:642fe2aac275 | 215 | } |
szapataa | 0:642fe2aac275 | 216 | pc.printf("*Hora=%d\n ",hor); |
szapataa | 0:642fe2aac275 | 217 | |
szapataa | 0:642fe2aac275 | 218 | |
szapataa | 0:642fe2aac275 | 219 | if(BotonENC.falling()){ |
szapataa | 0:642fe2aac275 | 220 | goto set_min; |
szapataa | 0:642fe2aac275 | 221 | } |
szapataa | 0:642fe2aac275 | 222 | if(Boton2.falling()){ |
szapataa | 0:642fe2aac275 | 223 | goto set_comp; |
szapataa | 0:642fe2aac275 | 224 | } |
szapataa | 0:642fe2aac275 | 225 | |
szapataa | 0:642fe2aac275 | 226 | |
szapataa | 0:642fe2aac275 | 227 | } |
szapataa | 0:642fe2aac275 | 228 | /*finaliza la seleccion de la hora*/ |
szapataa | 0:642fe2aac275 | 229 | |
szapataa | 0:642fe2aac275 | 230 | /*seleccion min*/ |
szapataa | 0:642fe2aac275 | 231 | set_min: |
szapataa | 0:642fe2aac275 | 232 | while(1){ |
szapataa | 0:642fe2aac275 | 233 | |
szapataa | 0:642fe2aac275 | 234 | min=min+wheel.getPulses(); |
szapataa | 0:642fe2aac275 | 235 | wheel.reset(); |
szapataa | 0:642fe2aac275 | 236 | |
szapataa | 0:642fe2aac275 | 237 | /*restriccion de la hora--no puede ser mayor a 59*/ |
szapataa | 0:642fe2aac275 | 238 | |
szapataa | 0:642fe2aac275 | 239 | if(min>=59){ |
szapataa | 0:642fe2aac275 | 240 | min=59; |
szapataa | 0:642fe2aac275 | 241 | } |
szapataa | 0:642fe2aac275 | 242 | else if (min<=0){ |
szapataa | 0:642fe2aac275 | 243 | min=0; |
szapataa | 0:642fe2aac275 | 244 | } |
szapataa | 0:642fe2aac275 | 245 | pc.printf("*Min=%d\n ",min); |
szapataa | 0:642fe2aac275 | 246 | |
szapataa | 0:642fe2aac275 | 247 | if(BotonENC.falling()){ |
szapataa | 0:642fe2aac275 | 248 | goto set_seg; |
szapataa | 0:642fe2aac275 | 249 | } |
szapataa | 0:642fe2aac275 | 250 | if(Boton2.falling()){ |
szapataa | 0:642fe2aac275 | 251 | goto set_comp; |
szapataa | 0:642fe2aac275 | 252 | } |
szapataa | 0:642fe2aac275 | 253 | |
szapataa | 0:642fe2aac275 | 254 | } |
szapataa | 0:642fe2aac275 | 255 | /*termina la seleccion de los minutos*/ |
szapataa | 0:642fe2aac275 | 256 | |
szapataa | 0:642fe2aac275 | 257 | /*seleccionar segundos*/ |
szapataa | 0:642fe2aac275 | 258 | set_seg: |
szapataa | 0:642fe2aac275 | 259 | while(1){ |
szapataa | 0:642fe2aac275 | 260 | |
szapataa | 0:642fe2aac275 | 261 | seg=seg+wheel.getPulses(); |
szapataa | 0:642fe2aac275 | 262 | wheel.reset(); |
szapataa | 0:642fe2aac275 | 263 | |
szapataa | 0:642fe2aac275 | 264 | /*restriccion de los segundos--no puede ser mas de 59*/ |
szapataa | 0:642fe2aac275 | 265 | |
szapataa | 0:642fe2aac275 | 266 | if(seg>=59){ |
szapataa | 0:642fe2aac275 | 267 | seg=59; |
szapataa | 0:642fe2aac275 | 268 | } |
szapataa | 0:642fe2aac275 | 269 | else if (seg<=0){ |
szapataa | 0:642fe2aac275 | 270 | seg=0; |
szapataa | 0:642fe2aac275 | 271 | } |
szapataa | 0:642fe2aac275 | 272 | pc.printf("*Seg=%d\n ",seg); |
szapataa | 0:642fe2aac275 | 273 | |
szapataa | 0:642fe2aac275 | 274 | if(BotonENC.falling()){ |
szapataa | 0:642fe2aac275 | 275 | goto set_anno; |
szapataa | 0:642fe2aac275 | 276 | } |
szapataa | 0:642fe2aac275 | 277 | if(Boton2.falling()){ |
szapataa | 0:642fe2aac275 | 278 | goto set_comp; |
szapataa | 0:642fe2aac275 | 279 | } |
szapataa | 0:642fe2aac275 | 280 | |
szapataa | 0:642fe2aac275 | 281 | |
szapataa | 0:642fe2aac275 | 282 | } |
szapataa | 0:642fe2aac275 | 283 | /*termina la seleccion de los segundos*/ |
szapataa | 0:642fe2aac275 | 284 | |
szapataa | 0:642fe2aac275 | 285 | set_comp: |
szapataa | 0:642fe2aac275 | 286 | |
szapataa | 0:642fe2aac275 | 287 | pc.printf("Alarma configurada para: \n"); |
szapataa | 0:642fe2aac275 | 288 | pc.printf(" Anno=%d\n ",anno); /* imprime el año */ |
szapataa | 0:642fe2aac275 | 289 | pc.printf(" Mes=%d\n ",mes); /* imprime el mes */ |
szapataa | 0:642fe2aac275 | 290 | pc.printf(" Dia=%d\n ",dia); /* imprime el dia */ |
szapataa | 0:642fe2aac275 | 291 | pc.printf(" Hora=%d\n ",hor); /* imprime la hora */ |
szapataa | 0:642fe2aac275 | 292 | pc.printf(" Min=%d\n ",min); /* imprime los minutos */ |
szapataa | 0:642fe2aac275 | 293 | pc.printf(" Seg=%d\n ",seg); /* imprime los segundos */ |
szapataa | 0:642fe2aac275 | 294 | wait(3); |
szapataa | 0:642fe2aac275 | 295 | |
szapataa | 0:642fe2aac275 | 296 | /*comparamos la alarma programada con la hora del reloj, si coincide |
szapataa | 0:642fe2aac275 | 297 | prende el led*/ |
szapataa | 0:642fe2aac275 | 298 | while(1){ |
szapataa | 0:642fe2aac275 | 299 | rtc.getTime(tm); |
szapataa | 0:642fe2aac275 | 300 | pc.printf("The current time is : %02d:%02d:%02d\n", tm.hour, tm.min, tm.sec); |
szapataa | 0:642fe2aac275 | 301 | |
szapataa | 0:642fe2aac275 | 302 | if(tm.hour>=hor && tm.min>=min &&tm.sec>=seg && tm.mon>=mes && tm.date>=dia && tm.year>=anno){ |
szapataa | 0:642fe2aac275 | 303 | myled=0; |
szapataa | 0:642fe2aac275 | 304 | } |
szapataa | 0:642fe2aac275 | 305 | else { |
szapataa | 0:642fe2aac275 | 306 | myled=1; |
szapataa | 0:642fe2aac275 | 307 | } |
szapataa | 0:642fe2aac275 | 308 | wait(1); |
szapataa | 0:642fe2aac275 | 309 | } |
szapataa | 0:642fe2aac275 | 310 | //// |
szapataa | 0:642fe2aac275 | 311 | |
szapataa | 0:642fe2aac275 | 312 | } |