/[PAMELA software]/quicklook/dataToXML/Data/compilationInfo/src/INFN/KHB_Driver_INFN.c
ViewVC logotype

Annotation of /quicklook/dataToXML/Data/compilationInfo/src/INFN/KHB_Driver_INFN.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (hide annotations) (download)
Tue Apr 25 09:00:20 2006 UTC (19 years, 2 months ago) by kusanagi
Branch point for: MAIN
File MIME type: text/plain
Initial revision

1 kusanagi 1.1 /****************************************************************************
2     * F i l e D a t a
3     * $Id: KHB_Driver_INFN.c,v 1.73 2005/03/20 18:20:32 sebastiani Exp $
4     * $Revision: 1.73 $
5     * $Date: 2005/03/20 18:20:32 $
6     * $RCSfile: KHB_Driver_INFN.c,v $
7     *
8     ****************************************************************************
9     * S W D e v e l o p m e n t E n v i r o n m e n t
10     *
11     * $Author: sebastiani $
12     * :
13     ****************************************************************************
14     * U p d a t i n g
15    
16     * $Log: KHB_Driver_INFN.c,v $
17     * Revision 1.73 2005/03/20 18:20:32 sebastiani
18     * PRH_VAR_RM_IDAQONLYACQ cancelled
19     *
20     * Revision 1.72 2005/02/24 16:51:19 sebastiani
21     * more comments in logs
22     *
23     * Revision 1.71 2005/02/21 08:58:29 sebastiani
24     * all log comments completed
25     *
26     * Revision 1.70 2005/02/19 10:19:38 sebastiani
27     * ALM_S4_CALIB_00_HARD,ALM_S4_CALIB_00_SOFT,ALM_S4_128TRIGGER_0 added
28     *
29     * Revision 1.69 2005/01/26 18:46:48 sebastiani
30     * new bug fixes for WS
31     *
32     * Revision 1.68 2005/01/07 15:41:51 sebastiani
33     * fix alarm precedure
34     * add exp 64 delay patch
35     * removed unused sleep
36     *
37     * Revision 1.67 2004/12/17 12:46:40 faber
38     * ALARM REGISTER aligned to be 32 bit. memory aling core dump (should be) fixed
39     *
40     * Revision 1.66 2004/12/15 09:21:33 sebastiani
41     * KHB_ALARM_MASK_ALL introduced
42     *
43     * Revision 1.65 2004/11/19 15:14:52 sebastiani
44     * PRH_EXTERN_{VAR,ARR,TABLE} removed and put them on the autogenerated parameter heeader file
45     *
46     * Revision 1.64 2004/11/18 16:02:34 sebastiani
47     * GAS/TRD removed
48     *
49     * Revision 1.63 2004/11/05 09:36:35 sebastiani
50     * first version of the PM state machine. tried but not deeply tested
51     *
52     * Revision 1.62 2004/10/19 16:59:27 sebastiani
53     * first text for IPM/ciclyc
54     *
55     * Revision 1.61 2004/10/08 15:57:51 sebastiani
56     * fix power hot cold variables settings.
57     * fix ws
58     * added function to set khb hot or cold
59     *
60     * Revision 1.60 2004/10/04 08:25:06 sebastiani
61     * *** empty log message ***
62     *
63     * Revision 1.59 2004/09/17 15:01:00 faber
64     * LU_INFN_LOG flags fixing
65     *
66     * Revision 1.58 2004/09/14 13:05:37 alfarano
67     * update TM constants and definitions
68     *
69     * Revision 1.57 2004/08/27 13:30:39 alfarano
70     * cvs header
71     *
72     * Revision 1.1 2003/10/03 16:12:26 faber
73     * *** empty log message ***
74     *
75     *
76     *****************************************************************************/
77     /*============================= Include File ================================*/
78    
79     #include <src/INFN/LU_SourceFileID_INFN.h>
80     #define __FILEID__ _KHB_Driver_INFN__c
81     #include <src/INFN/PRH_ParamHandler_INFN.h>
82     #include <src/INFN/LU_LogUtility_INFN.h>
83     #include <src/INFN/PRH_ParamHandler_INFN_auto.h>
84     LU_DECL_MASK();
85    
86     #include <src/TM_TCManager/TMTCManager/TM_TMTCManager_p.h>
87     #include <src/INFN/CM_Common_INFN.h>
88     #include <src/INFN/KHB_Driver_INFN.h>
89    
90    
91     /*============================== global variables ==========================*/
92    
93     /* this variable contains which serial line is enabled:
94     SERIAL_LINE_1 or SERIAL_LINE_2
95     */
96     static BYTE KHB_SerialLine;
97    
98     /* this variable contains which DBL line is enabled */
99     static UINT32 KHB_DBC_Status;
100    
101     /* Code for serial write and read operation from KHB and DBC lines */
102    
103     static KHB_ADDR_TYPE KHB_SerialAddress[2]={{TM_KHB_HOT,TM_KHB_DS_HOT,KHB_DBC0_HI_1,KHB_DBC1_HI_1},
104     {TM_KHB_COLD,TM_KHB_DS_COLD,KHB_DBC0_HI_2,KHB_DBC1_HI_2}};
105    
106     /*============================ Functions ====================================*/
107    
108     status_code KHB_Init()
109     {
110     KHB_SetSerialLine(CM_HOT);
111     KHB_DBC_Status = 0;
112    
113     return SUCCESSFUL;
114     }
115    
116     status_code KHB_InitBoard(/*XX*/)
117     {
118     status_code status;
119     UINT16 reg;
120    
121     //KHB_SetSerialLine(XX);
122    
123     status = KHB_HWReset();
124    
125     // some delay here ?
126    
127     if (status== CM_RC_SUCCESSFUL)
128     {
129     status = KHB_UpdateMaskRegister(KHB_ALARM_MASK_NONE,KHB_PRESET);
130     if(status == CM_RC_SUCCESSFUL) {
131     status=KHB_ReadStatusRegister(&reg);
132     if(status != CM_RC_SUCCESSFUL || ((reg & KHB_STATUS_MASK) != KHB_STATUS_VALUE) ) {
133     /*@LOG InitBoard: status register not the same as written - khb_status_reg */
134     LU_INFN_LOG(LU_WARNING|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,reg);
135     status= CM_RC_KHB_ERROR;
136     }
137     }
138     }
139    
140     #if 0
141     /* old code: no special reason to work on mask register */
142     if (!status)
143     {
144     status = KHB_UpdateMaskRegister(KHB_START_MASK,KHB_PRESET);
145    
146     if (!status)
147     {
148     status = KHB_ReadMaskRegister(&reg);
149    
150     if(!status)
151     if (reg != KHB_START_MASK)
152     status = CM_RC_INTERNAL_ERR;
153     }
154     }
155    
156     if (!status)
157     status = KHB_UpdateMaskRegister(KHB_MASK_NONE,KHB_PRESET);
158     #endif
159     /*@LOG InitBoard trace - status */
160     LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,status);
161     return(status);
162     }
163    
164     /*****************************************************************************/
165     /*
166     * KHB_SetSerialLine
167     *
168     * Selects the serial line to use
169     *
170     * Input parameters:
171     * line = selects SERIAL_LINE_1 or SERIAL_LINE_2
172     *
173     * Output parameters: status_code
174     *
175     */
176     /*****************************************************************************/
177    
178     status_code KHB_SetSerialLine(CM_HOT_COLD hl)
179     {
180     if(hl == CM_HOT)
181     KHB_SerialLine = KHB_SERIAL_HOT;
182     else
183     KHB_SerialLine = KHB_SERIAL_COLD;
184     return(SUCCESSFUL);
185     }
186    
187     /*****************************************************************************/
188     /*
189     * KHB_GetSerialLine
190     *
191     * Selects the serial line to use
192     *
193     * Input parameters:
194     * pointer to khb hot cold status (selected by SERIAL_LINE_1 or SERIAL_LINE_2)
195     *
196     * Output parameters: status_code
197     *
198     */
199     /*****************************************************************************/
200    
201     status_code KHB_GetSerialLine(CM_HOT_COLD *hl)
202     {
203     if(hl){
204     if(KHB_SerialLine == KHB_SERIAL_HOT)
205     *hl = CM_HOT;
206     else
207     *hl = CM_COLD;
208     }
209     return(SUCCESSFUL);
210     }
211    
212    
213     /*****************************************************************************/
214     /*
215     * KHB_SendFECommand
216     *
217     * Sends a write command to KHB
218     *
219     * Input parameters:
220     * link = selects which link to send the commnand
221     * counter = sets how many words will follow the command
222     * expected = sets how many words are expected from reply
223     *
224     *
225     * Output parameters: status_code
226     *
227     */
228     /*****************************************************************************/
229    
230     status_code KHB_SendFECommand(BYTE link,BYTE counter,BYTE expected,UINT16 *buffer)
231     {
232     int i;
233     status_code status;
234     KHB_COMMAND_TYPE KHB_Command;
235     TM_TC_ML com_to_send[4];
236    
237     KHB_Command.link = link;
238     KHB_Command.clear = 0;
239     KHB_Command.output = NULL;
240     KHB_Command.counter_command = counter+1; // including end pattern
241     KHB_Command.counter_answer = expected;
242    
243     com_to_send[0].Code = KHB_SerialAddress[KHB_SerialLine].writeAddr;
244     com_to_send[0].Value = (UINT32)*(UINT16*)&KHB_Command;
245    
246     for (i=1; i < counter+1; i++)
247     {
248     com_to_send[i].Code = KHB_SerialAddress[KHB_SerialLine].writeAddr;
249     com_to_send[i].Value = (UINT32)*buffer++;
250     }
251    
252     com_to_send[i].Code = KHB_SerialAddress[KHB_SerialLine].writeAddr;
253     com_to_send[i].Value = KHB_END_PATTERN;
254    
255     // status = TM_piSendTC(KHB_SerialAddress[KHB_SerialLine].writeAddr,*(UINT16*)&KHB_Command);
256     // if (!status)
257     status = TM_piSendMLTC(com_to_send,counter+2);
258    
259     return(status);
260     }
261    
262    
263     /*****************************************************************************/
264     /*
265     * KHB_WriteMaskRegister
266     *
267     * Sends a write command to KHB
268     *
269     * Input parameters: maskvalue = set the mask value to write
270     *
271     *
272     * Output parameters: status_code
273     *
274     */
275     /*****************************************************************************/
276    
277     status_code KHB_WriteMaskRegister(UINT16 mask_reg)
278     {
279     int i;
280     status_code status;
281     KHB_COMMAND_TYPE KHB_Command;
282     TM_TC_ML com_to_send[3];
283    
284     KHB_Command.link = KHB_INTERNAL_LINK;
285     KHB_Command.clear = 0;
286     KHB_Command.counter_command = 2;
287     KHB_Command.counter_answer = NULL;
288     KHB_Command.output = NULL;
289    
290     for(i=0; i < 3; i++)
291     com_to_send[i].Code = KHB_SerialAddress[KHB_SerialLine].writeAddr;
292    
293     com_to_send[0].Value = *(UINT16*)&KHB_Command;
294     com_to_send[1].Value = mask_reg;
295     com_to_send[2].Value = KHB_END_PATTERN;
296    
297     status = TM_piSendMLTC(com_to_send,3);
298     return(status);
299     }
300    
301    
302     /*****************************************************************************/
303     /*
304     * KHB_RequestKHBReg
305     *
306     * Sends a write command to KHB
307     *
308     * Input parameters:
309     * output = sets which register to read
310     * expected = sets how many words are expected from reply in case
311     * object is data buffer
312     *
313     *
314     * Output parameters: status_code
315     *
316     */
317     /*****************************************************************************/
318    
319     status_code KHB_RequestKHBReg(BYTE output,BYTE expected)
320     {
321     status_code status;
322     KHB_COMMAND_TYPE KHB_Command;
323     TM_TC_ML com_to_send[2];
324    
325     KHB_Command.link = NULL;
326     KHB_Command.clear = 0;
327     KHB_Command.output = output;
328     KHB_Command.counter_command = 1;
329     KHB_Command.counter_answer = expected;
330    
331     com_to_send[0].Code = com_to_send[1].Code = KHB_SerialAddress[KHB_SerialLine].writeAddr;
332     com_to_send[0].Value = *(UINT16*)&KHB_Command;
333     com_to_send[1].Value = KHB_END_PATTERN;
334    
335     status = TM_piSendMLTC(com_to_send,2);
336     return(status);
337     }
338    
339    
340     /*****************************************************************************/
341     /*
342     * KHB_ReadMaskRegister
343     *
344     * read mask register
345     *
346     * Input parameters: none
347     *
348     * Output parameters: status_code
349     *
350     */
351     /*****************************************************************************/
352    
353     status_code KHB_ReadMaskRegister(UINT16 *value)
354     {
355     status_code status;
356     UINT16 temp;
357     static int sleep0=2,sleep1=1;
358    
359     if(sleep0)
360     OS_piTaskSuspend (sleep0);
361    
362     status = KHB_RequestKHBReg(MASK_REG,0);
363    
364     if (!status)
365     {
366     status = KHB_SetKHBMode(READ_OBJ_MODE);
367    
368     if(sleep1)
369     OS_piTaskSuspend (sleep1);
370    
371     if (!status)
372     {
373     status = TM_piGetKHBValue(KHB_SerialAddress[KHB_SerialLine].readAddr,&temp,1);
374     if (!status)
375     {
376     *value = temp;
377     status = KHB_SetKHBMode(READ_STATUS_MODE);
378     }
379     }
380     }
381     return(status);
382     }
383    
384     /*****************************************************************************/
385     /*
386     * KHB_UpdateMaskRegister
387     *
388     * update mask register
389     *
390     * Input parameters: none
391     *
392     * Output parameters: status_code
393     *
394     */
395     /*****************************************************************************/
396    
397     status_code KHB_UpdateMaskRegister(UINT16 bitmask,BYTE action)
398     {
399     UINT16 KHB_MaskRegister;
400     status_code status;
401    
402     status = KHB_ReadMaskRegister(&KHB_MaskRegister);
403    
404     switch (action)
405     {
406     case KHB_BITSET :
407     KHB_MaskRegister |= bitmask;
408     break;
409     case KHB_BITRESET :
410     KHB_MaskRegister &= ~bitmask;
411     break;
412     case KHB_PRESET :
413     KHB_MaskRegister = bitmask;
414     break;
415     }
416    
417     if (!status)
418     status = KHB_WriteMaskRegister(KHB_MaskRegister);
419    
420     return(status);
421     }
422    
423    
424     /*****************************************************************************/
425     /*
426     * KHB_ReadStatusRegister
427     *
428     * Read the status register (provided that DBC1 is high)
429     *
430     * Input parameters: status_reg will contain the status register read
431     *
432     * Output parameters: status_code
433     *
434     */
435     /*****************************************************************************/
436    
437     status_code KHB_ReadStatusRegister(UINT16 *status_reg)
438     {
439     status_code status;
440    
441     status = KHB_SetKHBMode(READ_STATUS_MODE);
442    
443     if (!status) {
444     status = KHB_ReadCurrentVal(status_reg);
445     *status_reg ^= KHB_STS_XORED_BITS;
446     /* apply low level mask to disable definitively dummy alarms: */
447     *status_reg &= ~((UINT16)PRH_VAR_KHB_STATUS_REG_LOW_LEVEL_MASK);
448     }
449    
450     return(status);
451     }
452    
453     /*****************************************************************************/
454     /*
455     * KHB_ReadAlarmRegister
456     *
457     * Read the alarm register
458     *
459     * Input parameters : alarm32 will contain two words (16 bit) from the alarm
460     * registers:
461     * the higher 16 bit will contain all errors occured
462     * the lower 16 bit will contain the first error occured
463     *
464     * Output parameters: status_code
465     *
466     */
467     /*****************************************************************************/
468    
469     status_code KHB_ReadAlarmRegister(UINT32 *alarm)
470     {
471     status_code status,modestatus=CM_RC_SUCCESSFUL;
472     UINT16 tmp;
473    
474     static int sleep2=1;
475    
476     status = KHB_SetKHBMode(READ_OBJ_MODE);
477    
478     if (!status)
479     {
480     status = KHB_RequestKHBReg(ALARM_REG,0);
481    
482     if (!status)
483     {
484     status = KHB_ReadCurrentVal(&tmp);
485     if (!status)
486     {
487     *alarm = (( (tmp & KHB_ALARM_MASK_ALL ) ^ KHB_ALARM_XORED_BITS)<<16);
488     if(sleep2)
489     OS_piTaskSuspend (sleep2);
490     status = KHB_ReadCurrentVal(&tmp);
491     if (!status)
492     {
493     *alarm |= (tmp & KHB_ALARM_MASK_ALL) ^ KHB_ALARM_XORED_BITS;
494     /* apply low level mask to disable definitively dummy alarms: */
495     *alarm &= ~((UINT16)PRH_VAR_KHB_ALARM_REG_LOW_LEVEL_MASK);
496     }
497     }
498     }
499     modestatus = KHB_SetKHBMode(READ_STATUS_MODE);
500     }
501     return ((status!=CM_RC_SUCCESSFUL) ? status : modestatus);
502     }
503    
504     /*****************************************************************************/
505     /*
506     * KHB_ReadBuffer
507     *
508     * Request for buffer
509     *
510     * Input parameters: expected = word expected to receive
511     *
512     *
513     * Output parameters: status_code
514     *
515     */
516     /*****************************************************************************/
517    
518     status_code KHB_ReadBuffer(BYTE expected,UINT16 *buffer)
519     {
520     status_code status;
521     UINT16 status_reg;
522    
523     status = KHB_SetKHBMode(READ_OBJ_MODE);
524    
525     if (!status)
526     status = KHB_RequestKHBReg(BUFFER,0);
527    
528     if (!status)
529     status = TM_piGetKHBValue(KHB_SerialAddress[KHB_SerialLine].readAddr,buffer,expected);
530    
531     status = KHB_SetKHBMode(READ_STATUS_MODE);
532    
533     return(status);
534     }
535    
536     /*****************************************************************************/
537     /*
538     * KHB_Clear
539     *
540     * Clear the KHB buffer
541     *
542     * Input parameters: none
543     *
544     *
545     * Output parameters: status_code
546     *
547     */
548     /*****************************************************************************/
549    
550     status_code KHB_SendClearFE()
551     {
552     status_code status;
553     KHB_COMMAND_TYPE KHB_Command;
554     TM_TC_ML com_to_send[2];
555    
556     KHB_Command.link = NULL;
557     KHB_Command.clear = 1;
558     KHB_Command.output = NULL;
559     KHB_Command.counter_command = 1;
560     KHB_Command.counter_answer = NULL;
561    
562     com_to_send[0].Code = com_to_send[1].Code = KHB_SerialAddress[KHB_SerialLine].writeAddr;
563     com_to_send[0].Value = *(UINT16*)&KHB_Command;
564     com_to_send[1].Value = KHB_END_PATTERN;
565    
566     status = TM_piSendMLTC(com_to_send,2);
567     return(status);
568     }
569    
570     status_code KHB_ReadCurrentVal(UINT16 *value)
571     {
572     status_code status;
573     UINT16 tmp;
574    
575     status = TM_piGetKHBValue(KHB_SerialAddress[KHB_SerialLine].readAddr,&tmp,1);
576     *value = tmp;
577     return(status);
578     }
579    
580     status_code KHB_SendTrigger()
581     {
582     status_code status;
583     KHB_COMMAND_TYPE KHB_Command;
584     TM_TC_ML com_to_send[2];
585    
586     KHB_Command.link = NULL;
587     KHB_Command.clear = 1;
588     KHB_Command.output = NULL;
589     KHB_Command.counter_command = 1;
590     KHB_Command.counter_answer = NULL;
591     KHB_Command.trigger = 0xa;
592    
593     com_to_send[0].Code = com_to_send[1].Code = KHB_SerialAddress[KHB_SerialLine].writeAddr;
594     com_to_send[0].Value = *(UINT16*)&KHB_Command;
595     com_to_send[1].Value = KHB_END_PATTERN;
596    
597     status = TM_piSendMLTC(com_to_send,2);
598     return(status);
599     }
600    
601     /*****************************************************************************/
602     /*
603     * KHB_HWReset
604     *
605     * Reset the KHB
606     *
607     * Input parameters: none
608     *
609     *
610     * Output parameters: status_code
611     *
612     */
613     /*****************************************************************************/
614    
615     status_code KHB_HWReset()
616     {
617     status_code status;
618    
619     // static int sleep0=1;
620     // if(sleep0)
621     // OS_piTaskSuspend (sleep0);
622    
623    
624     KHB_SetDBC0(KHB_BITRESET);
625    
626     status = TM_piSendTC(TM_DBL_CMD,KHB_DBC_Status);
627    
628     if (!status)
629     {
630     KHB_SetDBC0(KHB_BITSET);
631     KHB_SetDBC1(KHB_BITSET);
632     // if(sleep0)
633     // OS_piTaskSuspend (sleep0);
634     status = TM_piSendTC(TM_DBL_CMD,KHB_DBC_Status);
635     }
636     return(status);
637     }
638    
639     status_code KHB_SetKHBMode(KHB_MODE mode)
640     {
641     status_code status;
642    
643     if (mode == READ_STATUS_MODE)
644     KHB_SetDBC1(KHB_BITSET);
645     else
646     KHB_SetDBC1(KHB_BITRESET);
647    
648     status = TM_piSendTC(TM_DBL_CMD,KHB_DBC_Status);
649    
650     return(status);
651     }
652    
653     status_code KHB_SetDBC0(BYTE status)
654     {
655     if (status == KHB_BITSET)
656     KHB_DBC_Status |= KHB_SerialAddress[KHB_SerialLine].dbc0hi;
657     else
658     KHB_DBC_Status &= ~KHB_SerialAddress[KHB_SerialLine].dbc0hi;
659    
660     return CM_RC_SUCCESSFUL;
661     }
662    
663     status_code KHB_SetDBC1(BYTE status)
664     {
665     if (status == KHB_BITSET)
666     KHB_DBC_Status |= KHB_SerialAddress[KHB_SerialLine].dbc1hi;
667     else
668     KHB_DBC_Status &= ~KHB_SerialAddress[KHB_SerialLine].dbc1hi;
669    
670     return CM_RC_SUCCESSFUL;
671     }
672    
673    
674    
675     // Test Functions
676    
677    
678     status_code KHB_Log()
679     {
680     status_code statusMask,statusStatus;
681     UINT16 mask;
682     UINT16 reg;
683    
684     statusMask = KHB_ReadMaskRegister(&mask);
685     statusStatus = KHB_ReadStatusRegister(&reg);
686     /*@LOG KHB Log: mask */
687     LU_INFN_LOG(LU_NORMAL_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,mask);
688     /*@LOG KHB Log: reg */
689     LU_INFN_LOG(LU_NORMAL_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,reg);
690     /*@LOG KHB Log: status_mask */
691     LU_INFN_LOG(LU_NORMAL_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,statusMask);
692     /*@LOG KHB Log: status_khb_status */
693     LU_INFN_LOG(LU_NORMAL_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,statusStatus);
694    
695     return(CM_RC_SUCCESSFUL);
696     }
697    
698     status_code KHB_TestBoard(unsigned short selected_test)
699     {
700     int x;
701     static int n;
702     int test;
703     int a=1,b=1,c=1,d=1,e=1;
704     UINT16 value[3];
705    
706     n = 1000;
707     test = selected_test;
708    
709     switch(test)
710     {
711     case 0:
712     {
713     int i;
714     UINT16 mask;
715     status_code status;
716    
717     status = KHB_UpdateMaskRegister(KHB_START_MASK,KHB_PRESET);
718    
719     for (i=0; i < 1000; i++)
720     {
721     status = KHB_ReadMaskRegister(&mask);
722     if(!status)
723     if (mask != KHB_START_MASK)
724     {
725     status = CM_RC_INTERNAL_ERR;
726     break;
727     }
728     }
729     }
730     break;
731     case 1:
732     {
733     int i;
734     UINT16 reg;
735     status_code status;
736    
737     for (i=0; i < 1000; i++)
738     {
739     status = KHB_ReadStatusRegister(&reg);
740     if (reg != KHB_STATUS_VALUE)
741     {
742     status = CM_RC_INTERNAL_ERR;
743     break;
744     }
745     }
746     }
747     break;
748     case 2:
749     {
750     UINT32 alarm;
751     UINT16 statusw;
752     int a=1,b=1;
753     status_code status;
754    
755     if (a)
756     status = KHB_ReadAlarmRegister(&alarm);
757     if (b)
758     status = KHB_ReadStatusRegister(&statusw);
759     }
760     break;
761    
762     }
763     }
764    
765    
766     UINT32 KHB_GetSerialLineReadAddress(){
767     return KHB_SerialAddress[KHB_SerialLine].readAddr;
768     }

  ViewVC Help
Powered by ViewVC 1.1.23