📄 uimgr.lst
字号:
306:UIMgr.c ****
307:UIMgr.c **** }
308:UIMgr.c ****
309:UIMgr.c **** /***********************************************************
310:UIMgr.c **** Function Name: UIMgr_convertTokenToValue
311:UIMgr.c **** Function Description: This function is responsible for
312:UIMgr.c **** converting a received token to a hex value It will
313:UIMgr.c **** access the asciiTokenBuffer directly, and store the
314:UIMgr.c **** result in the appropriate token buffer.
315:UIMgr.c **** Inputs: none
316:UIMgr.c **** Outputs: none
317:UIMgr.c **** ***********************************************************/
318:UIMgr.c **** static void UIMgr_convertTokenToValue(void)
319:UIMgr.c **** {
535 .LM67:
536 /* prologue: frame size=0 */
537 /* prologue end (size=0) */
320:UIMgr.c **** unsigned int newValue;
321:UIMgr.c ****
322:UIMgr.c **** newValue = atoi(asciiTokenBuffer);//The atoi() function converts the initial portion of the string
539 .LM68:
540 020c 80E0 ldi r24,lo8(asciiTokenBuffer)
541 020e 90E0 ldi r25,hi8(asciiTokenBuffer)
542 0210 0E94 0000 call atoi
543 0214 AC01 movw r20,r24
323:UIMgr.c **** //pointed to by \c nptr to integer representation.
324:UIMgr.c **** if (newValue > 255)
545 .LM69:
546 0216 8F3F cpi r24,255
547 0218 9105 cpc r25,__zero_reg__
548 021a 71F0 breq .L52
549 021c 68F0 brlo .L52
325:UIMgr.c **** {
326:UIMgr.c **** /* the value is too large */
327:UIMgr.c **** receivedCmd = invalidCmd;
551 .LM70:
552 021e 86E0 ldi r24,lo8(6)
553 0220 8093 0000 sts receivedCmd,r24
328:UIMgr.c **** tokenBuffer[tokenCount] = 0xFF; /* to indicate an error */
555 .LM71:
556 0224 2091 0000 lds r18,tokenCount
557 0228 80E0 ldi r24,lo8(tokenBuffer)
558 022a 90E0 ldi r25,hi8(tokenBuffer)
559 022c FC01 movw r30,r24
560 022e E20F add r30,r18
561 0230 F11D adc r31,__zero_reg__
562 0232 8FEF ldi r24,lo8(-1)
563 0234 8083 st Z,r24
564 0236 08C0 rjmp .L53
565 .L52:
329:UIMgr.c **** }
330:UIMgr.c **** else
331:UIMgr.c **** {
332:UIMgr.c **** /* copy the value into the tokenBuffer */
333:UIMgr.c **** tokenBuffer[tokenCount] = newValue;
567 .LM72:
568 0238 8091 0000 lds r24,tokenCount
569 023c 20E0 ldi r18,lo8(tokenBuffer)
570 023e 30E0 ldi r19,hi8(tokenBuffer)
571 0240 F901 movw r30,r18
572 0242 E80F add r30,r24
573 0244 F11D adc r31,__zero_reg__
574 0246 4083 st Z,r20
575 .L53:
334:UIMgr.c **** }
335:UIMgr.c **** memset(asciiTokenBuffer,0x00,MAX_TOKEN_LENGTH);
577 .LM73:
578 0248 83E0 ldi r24,lo8(3)
579 024a E0E0 ldi r30,lo8(asciiTokenBuffer)
580 024c F0E0 ldi r31,hi8(asciiTokenBuffer)
581 024e 1192 st Z+,__zero_reg__
582 0250 8A95 dec r24
583 0252 E9F7 brne .-6
336:UIMgr.c **** charIndex = 0;
585 .LM74:
586 0254 1092 0000 sts charIndex,__zero_reg__
337:UIMgr.c **** charCount = 0;
588 .LM75:
589 0258 1092 0000 sts charCount,__zero_reg__
590 /* epilogue: frame size=0 */
591 025c 0895 ret
592 /* epilogue end (size=1) */
593 /* function UIMgr_convertTokenToValue size 41 (40) */
598 .Lscope5:
601 UIMgr_convertTokenToCmd:
338:UIMgr.c **** }
339:UIMgr.c **** /***********************************************************
340:UIMgr.c **** Function Name: UIMgr_convertTokenToCmd
341:UIMgr.c **** Function Description: This function is responsible for
342:UIMgr.c **** parsing a received 2-character command. It will
343:UIMgr.c **** access the asciiTokenBuffer directly.
344:UIMgr.c **** Inputs: none
345:UIMgr.c **** Outputs: none
346:UIMgr.c **** ***********************************************************/
347:UIMgr.c **** static void UIMgr_convertTokenToCmd(void)
348:UIMgr.c **** {
603 .LM76:
604 /* prologue: frame size=0 */
605 /* prologue end (size=0) */
349:UIMgr.c **** if ( (asciiTokenBuffer[0] == 'P') &&
607 .LM77:
608 025e 8091 0000 lds r24,asciiTokenBuffer
609 0262 8035 cpi r24,lo8(80)
610 0264 41F4 brne .L55
612 .LM78:
613 0266 8091 0000 lds r24,asciiTokenBuffer+1
614 026a 8734 cpi r24,lo8(71)
615 026c 21F4 brne .L55
350:UIMgr.c **** (asciiTokenBuffer[1] == 'G') )
351:UIMgr.c **** {
352:UIMgr.c **** /* we got a "ping" command...but we still need to see
353:UIMgr.c **** if we are going to get the \r */
354:UIMgr.c **** receivedCmd = pingCmd;
617 .LM79:
618 026e 81E0 ldi r24,lo8(1)
619 0270 8093 0000 sts receivedCmd,r24
620 0274 32C0 rjmp .L56
621 .L55:
355:UIMgr.c **** }
356:UIMgr.c **** else if ( (asciiTokenBuffer[0] == 'G') &&
623 .LM80:
624 0276 8091 0000 lds r24,asciiTokenBuffer
625 027a 8734 cpi r24,lo8(71)
626 027c 39F4 brne .L57
627 027e 8091 0000 lds r24,asciiTokenBuffer+1
628 0282 8635 cpi r24,lo8(86)
629 0284 19F4 brne .L57
357:UIMgr.c **** (asciiTokenBuffer[1] == 'V') )
358:UIMgr.c **** {
359:UIMgr.c **** /* we got the "get version" command */
360:UIMgr.c **** receivedCmd = getVersionCmd;
631 .LM81:
632 0286 1092 0000 sts receivedCmd,__zero_reg__
633 028a 27C0 rjmp .L56
634 .L57:
361:UIMgr.c **** }
362:UIMgr.c **** else if ( (asciiTokenBuffer[0] == 'D') &&
636 .LM82:
637 028c 8091 0000 lds r24,asciiTokenBuffer
638 0290 8434 cpi r24,lo8(68)
639 0292 41F4 brne .L59
640 0294 8091 0000 lds r24,asciiTokenBuffer+1
641 0298 8634 cpi r24,lo8(70)
642 029a 21F4 brne .L59
363:UIMgr.c **** (asciiTokenBuffer[1] == 'F') )
364:UIMgr.c **** {
365:UIMgr.c **** /* we should go into frame dump mode */
366:UIMgr.c **** receivedCmd = dumpFrameCmd;
644 .LM83:
645 029c 83E0 ldi r24,lo8(3)
646 029e 8093 0000 sts receivedCmd,r24
647 02a2 1BC0 rjmp .L56
648 .L59:
367:UIMgr.c **** }
368:UIMgr.c **** else if ( (asciiTokenBuffer[0] == 'C') &&
650 .LM84:
651 02a4 8091 0000 lds r24,asciiTokenBuffer
652 02a8 8334 cpi r24,lo8(67)
653 02aa 41F4 brne .L61
654 02ac 8091 0000 lds r24,asciiTokenBuffer+1
655 02b0 8235 cpi r24,lo8(82)
656 02b2 21F4 brne .L61
369:UIMgr.c **** (asciiTokenBuffer[1] == 'R') )
370:UIMgr.c **** {
371:UIMgr.c **** /* the user wants to set registers in the OV6620 */
372:UIMgr.c **** receivedCmd = setCameraRegsCmd;
658 .LM85:
659 02b4 82E0 ldi r24,lo8(2)
660 02b6 8093 0000 sts receivedCmd,r24
661 02ba 0FC0 rjmp .L56
662 .L61:
373:UIMgr.c **** }
374:UIMgr.c ****
375:UIMgr.c ****
376:UIMgr.c **** else if ( (asciiTokenBuffer[0] == 'R') &&
664 .LM86:
665 02bc 8091 0000 lds r24,asciiTokenBuffer
666 02c0 8235 cpi r24,lo8(82)
667 02c2 41F4 brne .L63
668 02c4 8091 0000 lds r24,asciiTokenBuffer+1
669 02c8 8335 cpi r24,lo8(83)
670 02ca 21F4 brne .L63
377:UIMgr.c **** (asciiTokenBuffer[1] == 'S') )
378:UIMgr.c **** {
379:UIMgr.c **** receivedCmd = resetCameraCmd;
672 .LM87:
673 02cc 84E0 ldi r24,lo8(4)
674 02ce 8093 0000 sts receivedCmd,r24
675 02d2 03C0 rjmp .L56
676 .L63:
380:UIMgr.c **** }
381:UIMgr.c **** else
382:UIMgr.c **** {
383:UIMgr.c **** /* don't recognize the cmd */
384:UIMgr.c **** receivedCmd = invalidCmd;
678 .LM88:
679 02d4 86E0 ldi r24,lo8(6)
680 02d6 8093 0000 sts receivedCmd,r24
681 .L56:
385:UIMgr.c **** }
386:UIMgr.c **** memset(asciiTokenBuffer,0x00,MAX_TOKEN_LENGTH);
683 .LM89:
684 02da 83E0 ldi r24,lo8(3)
685 02dc E0E0 ldi r30,lo8(asciiTokenBuffer)
686 02de F0E0 ldi r31,hi8(asciiTokenBuffer)
687 02e0 1192 st Z+,__zero_reg__
688 02e2 8A95 dec r24
689 02e4 E9F7 brne .-6
387:UIMgr.c **** charIndex = 0;
691 .LM90:
692 02e6 1092 0000 sts charIndex,__zero_reg__
388:UIMgr.c **** charCount = 0;
694 .LM91:
695 02ea 1092 0000 sts charCount,__zero_reg__
696 /* epilogue: frame size=0 */
697 02ee 0895 ret
698 /* epilogue end (size=1) */
699 /* function UIMgr_convertTokenToCmd size 73 (72) */
701 .Lscope6:
704 UIMgr_sendAck:
389:UIMgr.c **** }
390:UIMgr.c **** /***********************************************************
391:UIMgr.c **** Function Name: UIMgr_sendAck
392:UIMgr.c **** Function Description: This function is responsible for
393:UIMgr.c **** queuing up an ACK to be sent to the user.
394:UIMgr.c **** Inputs: none
395:UIMgr.c **** Outputs: none
396:UIMgr.c **** ***********************************************************/
397:UIMgr.c **** static void UIMgr_sendAck(void)
398:UIMgr.c **** {
706 .LM92:
707 /* prologue: frame size=0 */
708 /* prologue end (size=0) */
399:UIMgr.c **** UIMgr_writeTxFifo('A');
710 .LM93:
711 02f0 81E4 ldi r24,lo8(65)
712 02f2 0E94 0000 call UIMgr_writeTxFifo
400:UIMgr.c **** UIMgr_writeTxFifo('C');
714 .LM94:
715 02f6 83E4 ldi r24,lo8(67)
716 02f8 0E94 0000 call UIMgr_writeTxFifo
401:UIMgr.c **** UIMgr_writeTxFifo('K');
718 .LM95:
719 02fc 8BE4 ldi r24,lo8(75)
720 02fe 0E94 0000 call UIMgr_writeTxFifo
402:UIMgr.c **** UIMgr_writeTxFifo(0x0D);
722 .LM96:
723 0302 8DE0 ldi r24,lo8(13)
724 0304 0E94 0000 call UIMgr_writeTxFifo
725 /* epilogue: frame size=0 */
726 0308 0895 ret
727 /* epilogue end (size=1) */
728 /* function UIMgr_sendAck size 13 (12) */
730 .Lscope7:
733 UIMgr_sendNck:
403:UIMgr.c **** }
404:UIMgr.c ****
405:UIMgr.c **** /***********************************************************
406:UIMgr.c **** Function Name: UIMgr_sendNck
407:UIMgr.c **** Function Description: This function is responsible for
408:UIMgr.c **** queueing up an NCK to be sent to the user.
409:UIMgr.c **** Inputs: none
410:UIMgr.c **** Outputs: none
411:UIMgr.c **** ***********************************************************/
412:UIMgr.c **** static void UIMgr_sendNck(void)
413:UIMgr.c **** {
735 .LM97:
736 /* prologue: frame size=0 */
737 /* prologue end (size=0) */
414:UIMgr.c **** UIMgr_writeTxFifo('N');
739 .LM98:
740 030a 8EE4 ldi r24,lo8(78)
741 030c 0E94 0000 call UIMgr_writeTxFifo
415:UIMgr.c **** UIMgr_writeTxFifo('C');
743 .LM99:
744 0310 83E4 ldi r24,lo8(67)
745 0312 0E94 0000 call UIMgr_writeTxFifo
416:UIMgr.c **** UIMgr_writeTxFifo('K');
747 .LM100:
748 0316 8BE4 ldi r24,lo8(75)
749 0318 0E94 0000 call UIMgr_writeTxFifo
417:UIMgr.c **** UIMgr_writeTxFifo('\r');
751 .LM101:
752 031c 8DE0 ldi r24,lo8(13)
753 031e 0E94 0000 call UIMgr_writeTxFifo
754 /* epilogue: frame size=0 */
755 0322 0895 ret
756 /* epilogue end (size=1) */
757 /* function UIMgr_sendNck size 13 (12) */
759 .Lscope8:
763 .global UIMgr_writeBufferToTxFifo
765 UIMgr_writeBufferToTxFifo:
418:UIMgr.c **** }
419:UIMgr.c ****
420:UIMgr.c ****
421:UIMgr.c **** /***********************************************************
422:UIMgr.c **** Function Name: UIMgr_writeBufferToTxFifo
423:UIMgr.c **** Function Description: This function is responsible for
424:UIMgr.c **** placing "length" bytes into the tx FIFO.
425:UIMgr.c **** Inputs: pData - a pointer to the data to send
426:UIMgr.c **** length - the number of bytes to send
427:UIMgr.c **** Outputs: none
428:UIMgr.c **** ***********************************************************/
429:UIMgr.c **** void UIMgr_writeBufferToTxFifo(unsigned char *pData, unsigned char length)
430:UIMgr.c **** {
767 .LM102:
768 /* prologue: frame size=0 */
769 /* prologue end (size=0) */
770 0324 DC01 movw r26,r24
431:UIMgr.c **** unsigned char tmpHead;
432:UIMgr.c **** if (length == 0)
772 .LM103:
773 0326 6623 tst r22
774 0328 A9F0 breq .L67
433:UIMgr.c **** {
434:UIMgr.c **** return;
435:UIMgr.c **** }
436:UIMgr.c ****
437:UIMgr.c **** DISABLE_INTS();
776 .LM104:
777 /* #APP */
778 032a F894 cli
438:UIMgr.c **** while(length-- != 0)
439:UIMgr.c **** {
440:UIMgr.c **** UIMgr_txFifo[UIMgr_txFifoHead] = *pData++;
441:UIMgr.c ****
442:UIMgr.c **** /* now move the head up */
443:UIMgr.c **** tmpHead = (UIMgr_txFifoHead + 1) & (UI_MGR_TX_FIFO_MASK);
444:UIMgr.c **** UIMgr_txFifoHead = tmpHead;
780 .LM105:
781 /* #NOAPP */
782 032c 6150 subi r22,lo8(-(-1))
783 032e 6F3F cpi r22,lo8(-1)
784 0330 81F0 breq .L73
785 0332 20E0 ldi r18,lo8(UIMgr_txFifo)
786 0334 30E0 ldi r19,hi8(UIMgr_txFifo)
787 .L71:
789 .LM106:
790 0336 9091 0000 lds r25,UIMgr_txFifoHead
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -