1 // ********************************************************************* 2 // IQRF OS functions * 3 // ********************************************************************* 4 // 5 // Online IQRF OS Reference Guide: http://www.iqrf.org/IQRF-OS-Reference-guide/ 6 // 7 // Copyright (c) MICRORISC s.r.o. 8 // 9 // Intended for: 10 // HW: TR-72D, TR-76D, TR-77D, TR-78D, TR-75D, TR-72G, TR-76G 11 // OS: 4.05D, 4.05G 12 // 13 // File: IQRF-functions.h 14 // Version: v1.00 Revision: 03/06/2021 15 // 16 // Revision history: 17 // v1.00: 03/06/2021 First release for OS 4.05D and 4.05G. 18 // 19 // ********************************************************************* 20 21 #pragma optimize 0 22 #pragma update_PAGE 0 23 #pragma update_RP 0 24 25 // Identification header for internal use only 26 #pragma cdata[0x3800] = OS_VERSION /* OS Version */, MCU_ID /* MCU ID */ 27 28 #define dummy_address 0x3810 29 #pragma origin dummy_address 30 void dummy() 31 { 32 #asm 33 DW 0x2000 34 #endasm 35 #pragma updateBank exit=UserBank_01 36 } 37 38 #define iqrfSleep_address 0x3816 39 #pragma origin iqrfSleep_address 40 void iqrfSleep() 41 { 42 #asm 43 DW 0x2000 44 #endasm 45 #pragma updateBank exit=UserBank_01 46 } 47 48 #define _debug_address 0x3819 49 #pragma origin _debug_address 50 void _debug() 51 { 52 #asm 53 DW 0x2000 54 #endasm 55 #pragma updateBank exit=UserBank_01 56 } 57 58 #define debug() \ 59 do { \ 60 _debug(); \ 61 nop(); \ 62 } while (0) 63 64 #define moduleInfo_address 0x381c 65 #pragma origin moduleInfo_address 66 void moduleInfo() 67 { 68 #asm 69 DW 0x2000 70 #endasm 71 #pragma updateBank exit=UserBank_01 72 } 73 74 #define pulsingLEDR_address 0x3822 75 #pragma origin pulsingLEDR_address 76 void pulsingLEDR() 77 { 78 #asm 79 DW 0x2000 80 #endasm 81 #pragma updateBank exit=UserBank_01 82 } 83 84 #define pulseLEDR_address 0x3825 85 #pragma origin pulseLEDR_address 86 void pulseLEDR() 87 { 88 #asm 89 DW 0x2000 90 #endasm 91 #pragma updateBank exit=UserBank_01 92 } 93 94 #define stopLEDR_address 0x3828 95 #pragma origin stopLEDR_address 96 void stopLEDR() 97 { 98 #asm 99 DW 0x2000 100 #endasm 101 #pragma updateBank exit=UserBank_01 102 } 103 104 #define pulsingLEDG_address 0x382b 105 #pragma origin pulsingLEDG_address 106 void pulsingLEDG() 107 { 108 #asm 109 DW 0x2000 110 #endasm 111 #pragma updateBank exit=UserBank_01 112 } 113 114 #define pulseLEDG_address 0x382e 115 #pragma origin pulseLEDG_address 116 void pulseLEDG() 117 { 118 #asm 119 DW 0x2000 120 #endasm 121 #pragma updateBank exit=UserBank_01 122 } 123 124 #define stopLEDG_address 0x3831 125 #pragma origin stopLEDG_address 126 void stopLEDG() 127 { 128 #asm 129 DW 0x2000 130 #endasm 131 #pragma updateBank exit=UserBank_01 132 } 133 134 #define setOnPulsingLED_address 0x3834 135 #pragma origin setOnPulsingLED_address 136 void setOnPulsingLED(uns8 ticks @ W) 137 { 138 #asm 139 DW 0x2000 140 #endasm 141 #pragma updateBank exit=UserBank_01 142 } 143 144 #define setOffPulsingLED_address 0x3837 145 #pragma origin setOffPulsingLED_address 146 void setOffPulsingLED(uns8 ticks @ W) 147 { 148 #asm 149 DW 0x2000 150 #endasm 151 #pragma updateBank exit=UserBank_01 152 } 153 154 #define eeReadByte_address 0x383a 155 #pragma origin eeReadByte_address 156 uns8 eeReadByte(uns8 address @ W) 157 { 158 #asm 159 DW 0x2000 160 #endasm 161 #pragma updateBank exit=UserBank_01 162 return W; 163 } 164 165 #define eeReadData_address 0x383d 166 #pragma origin eeReadData_address 167 bit eeReadData(uns8 address @ param2, uns8 length @ W) 168 { 169 #asm 170 DW 0x2000 171 #endasm 172 #pragma updateBank exit=UserBank_01 173 return Carry; 174 } 175 176 #define eeWriteByte_address 0x3840 177 #pragma origin eeWriteByte_address 178 void eeWriteByte(uns8 address @ param2, uns8 data @ W) 179 { 180 #asm 181 DW 0x2000 182 #endasm 183 #pragma updateBank exit=UserBank_01 184 } 185 186 #define eeWriteData_address 0x3843 187 #pragma origin eeWriteData_address 188 void eeWriteData(uns8 address @ param2, uns8 length @ W) 189 { 190 #asm 191 DW 0x2000 192 #endasm 193 #pragma updateBank exit=UserBank_01 194 } 195 196 #define readFromRAM_address 0x3846 197 #pragma origin readFromRAM_address 198 uns8 readFromRAM(uns16 address @ FSR0) 199 { 200 #asm 201 DW 0x2000 202 #endasm 203 #pragma updateBank exit=UserBank_01 204 return W; 205 } 206 207 #define clearBufferINFO_address 0x384c 208 #pragma origin clearBufferINFO_address 209 void clearBufferINFO() 210 { 211 #asm 212 DW 0x2000 213 #endasm 214 #pragma updateBank exit=UserBank_01 215 } 216 217 #define swapBufferINFO_address 0x384f 218 #pragma origin swapBufferINFO_address 219 void swapBufferINFO() 220 { 221 #asm 222 DW 0x2000 223 #endasm 224 #pragma updateBank exit=UserBank_01 225 } 226 227 #define compareBufferINFO2RF_address 0x3852 228 #pragma origin compareBufferINFO2RF_address 229 bit compareBufferINFO2RF(uns8 length @ W) 230 { 231 #asm 232 DW 0x2000 233 #endasm 234 #pragma updateBank exit=UserBank_01 235 return Carry; 236 } 237 238 #define copyBufferINFO2COM_address 0x3855 239 #pragma origin copyBufferINFO2COM_address 240 void copyBufferINFO2COM() 241 { 242 #asm 243 DW 0x2000 244 #endasm 245 #pragma updateBank exit=UserBank_01 246 } 247 248 #define copyBufferINFO2RF_address 0x3858 249 #pragma origin copyBufferINFO2RF_address 250 void copyBufferINFO2RF() 251 { 252 #asm 253 DW 0x2000 254 #endasm 255 #pragma updateBank exit=UserBank_01 256 } 257 258 #define copyBufferRF2COM_address 0x385b 259 #pragma origin copyBufferRF2COM_address 260 void copyBufferRF2COM() 261 { 262 #asm 263 DW 0x2000 264 #endasm 265 #pragma updateBank exit=UserBank_01 266 } 267 268 #define copyBufferRF2INFO_address 0x385e 269 #pragma origin copyBufferRF2INFO_address 270 void copyBufferRF2INFO() 271 { 272 #asm 273 DW 0x2000 274 #endasm 275 #pragma updateBank exit=UserBank_01 276 } 277 278 #define copyBufferCOM2RF_address 0x3861 279 #pragma origin copyBufferCOM2RF_address 280 void copyBufferCOM2RF() 281 { 282 #asm 283 DW 0x2000 284 #endasm 285 #pragma updateBank exit=UserBank_01 286 } 287 288 #define copyBufferCOM2INFO_address 0x3864 289 #pragma origin copyBufferCOM2INFO_address 290 void copyBufferCOM2INFO() 291 { 292 #asm 293 DW 0x2000 294 #endasm 295 #pragma updateBank exit=UserBank_01 296 } 297 298 #define copyMemoryBlock_address 0x3867 299 #pragma origin copyMemoryBlock_address 300 void copyMemoryBlock(uns16 from @ FSR0, uns16 to @ FSR1, uns8 length @ W) 301 { 302 #asm 303 DW 0x2000 304 #endasm 305 #pragma updateBank exit=UserBank_01 306 } 307 308 #define startDelay_address 0x386a 309 #pragma origin startDelay_address 310 void startDelay(uns8 ticks @ W) 311 { 312 #asm 313 DW 0x2000 314 #endasm 315 #pragma updateBank exit=UserBank_01 316 } 317 318 #define startLongDelay_address 0x386d 319 #pragma origin startLongDelay_address 320 void startLongDelay(uns16 ticks @ param3) 321 { 322 #asm 323 DW 0x2000 324 #endasm 325 #pragma updateBank exit=UserBank_01 326 } 327 328 #define isDelay_address 0x3870 329 #pragma origin isDelay_address 330 bit isDelay() 331 { 332 #asm 333 DW 0x2000 334 #endasm 335 #pragma updateBank exit=UserBank_01 336 return Carry; 337 } 338 339 #define waitDelay_address 0x3873 340 #pragma origin waitDelay_address 341 void waitDelay(uns8 ticks @ W) 342 { 343 #asm 344 DW 0x2000 345 #endasm 346 #pragma updateBank exit=UserBank_01 347 } 348 349 #define waitMS_address 0x3876 350 #pragma origin waitMS_address 351 void waitMS(uns8 ms @ W) 352 { 353 #asm 354 DW 0x2000 355 #endasm 356 #pragma updateBank exit=UserBank_01 357 } 358 359 #define startCapture_address 0x3879 360 #pragma origin startCapture_address 361 void startCapture() 362 { 363 #asm 364 DW 0x2000 365 #endasm 366 #pragma updateBank exit=UserBank_01 367 } 368 369 #define captureTicks_address 0x387c 370 #pragma origin captureTicks_address 371 void captureTicks() 372 { 373 #asm 374 DW 0x2000 375 #endasm 376 #pragma updateBank exit=UserBank_01 377 } 378 379 #define waitNewTick_address 0x3882 380 #pragma origin waitNewTick_address 381 void waitNewTick() 382 { 383 #asm 384 DW 0x2000 385 #endasm 386 #pragma updateBank exit=UserBank_01 387 } 388 389 #define enableSPI_address 0x3885 390 #pragma origin enableSPI_address 391 void enableSPI() 392 { 393 #asm 394 DW 0x2000 395 #endasm 396 #pragma updateBank exit=UserBank_01 397 } 398 399 #define disableSPI_address 0x3888 400 #pragma origin disableSPI_address 401 void disableSPI() 402 { 403 #asm 404 DW 0x2000 405 #endasm 406 #pragma updateBank exit=UserBank_01 407 } 408 409 #define startSPI_address 0x388b 410 #pragma origin startSPI_address 411 void startSPI(uns8 length @ W) 412 { 413 #asm 414 DW 0x2000 415 #endasm 416 #pragma updateBank exit=UserBank_01 417 } 418 419 #define stopSPI_address 0x388e 420 #pragma origin stopSPI_address 421 void stopSPI() 422 { 423 #asm 424 DW 0x2000 425 #endasm 426 #pragma updateBank exit=UserBank_01 427 } 428 429 #define restartSPI_address 0x3891 430 #pragma origin restartSPI_address 431 void restartSPI() 432 { 433 #asm 434 DW 0x2000 435 #endasm 436 #pragma updateBank exit=UserBank_01 437 } 438 439 #define getStatusSPI_address 0x3894 440 #pragma origin getStatusSPI_address 441 bit getStatusSPI() 442 { 443 #asm 444 DW 0x2000 445 #endasm 446 #pragma updateBank exit=UserBank_01 447 return Carry; 448 } 449 450 #define setRFpower_address 0x3897 451 #pragma origin setRFpower_address 452 void setRFpower(uns8 level @ W) 453 { 454 #asm 455 DW 0x2000 456 #endasm 457 #pragma updateBank exit=UserBank_01 458 } 459 460 #define setLEDG_address 0x389a 461 #pragma origin setLEDG_address 462 void setLEDG() 463 { 464 #asm 465 DW 0x2000 466 #endasm 467 #pragma updateBank exit=UserBank_01 468 } 469 470 #define setRFchannel_address 0x389d 471 #pragma origin setRFchannel_address 472 void setRFchannel(uns8 channel @ W) 473 { 474 #asm 475 DW 0x2000 476 #endasm 477 #pragma updateBank exit=UserBank_01 478 } 479 480 #define setRFmode_address 0x38a0 481 #pragma origin setRFmode_address 482 void setRFmode(uns8 mode @ W) 483 { 484 #asm 485 DW 0x2000 486 #endasm 487 #pragma updateBank exit=UserBank_01 488 } 489 490 #define setRFspeed_address 0x38a3 491 #pragma origin setRFspeed_address 492 void setRFspeed(uns8 speed @ W) 493 { 494 #asm 495 DW 0x2000 496 #endasm 497 #pragma updateBank exit=UserBank_01 498 } 499 500 #define setRFsleep_address 0x38a6 501 #pragma origin setRFsleep_address 502 void setRFsleep() 503 { 504 #asm 505 DW 0x2000 506 #endasm 507 #pragma updateBank exit=UserBank_01 508 } 509 510 #define setRFready_address 0x38a9 511 #pragma origin setRFready_address 512 void setRFready() 513 { 514 #asm 515 DW 0x2000 516 #endasm 517 #pragma updateBank exit=UserBank_01 518 } 519 520 #define RFTXpacket_address 0x38ac 521 #pragma origin RFTXpacket_address 522 void RFTXpacket() 523 { 524 #asm 525 DW 0x2000 526 #endasm 527 #pragma updateBank exit=UserBank_01 528 } 529 530 #define RFRXpacket_address 0x38af 531 #pragma origin RFRXpacket_address 532 bit RFRXpacket() 533 { 534 #asm 535 DW 0x2000 536 #endasm 537 #pragma updateBank exit=UserBank_01 538 return Carry; 539 } 540 541 #define checkRF_address 0x38b2 542 #pragma origin checkRF_address 543 bit checkRF(uns8 level @ W) 544 { 545 #asm 546 DW 0x2000 547 #endasm 548 #pragma updateBank exit=UserBank_01 549 return Carry; 550 } 551 552 #define amIBonded_address 0x38b8 553 #pragma origin amIBonded_address 554 bit amIBonded() 555 { 556 #asm 557 DW 0x2000 558 #endasm 559 #pragma updateBank exit=UserBank_01 560 return Carry; 561 } 562 563 #define removeBond_address 0x38bb 564 #pragma origin removeBond_address 565 void removeBond() 566 { 567 #asm 568 DW 0x2000 569 #endasm 570 #pragma updateBank exit=UserBank_01 571 } 572 573 #define bondNewNode_address 0x38be 574 #pragma origin bondNewNode_address 575 bit bondNewNode(uns8 address @ W) 576 { 577 #asm 578 DW 0x2000 579 #endasm 580 #pragma updateBank exit=UserBank_01 581 return Carry; 582 } 583 584 #define isBondedNode_address 0x38c1 585 #pragma origin isBondedNode_address 586 bit isBondedNode(uns8 address @ W) 587 { 588 #asm 589 DW 0x2000 590 #endasm 591 #pragma updateBank exit=UserBank_01 592 return Carry; 593 } 594 595 #define removeBondedNode_address 0x38c4 596 #pragma origin removeBondedNode_address 597 void removeBondedNode(uns8 address @ W) 598 { 599 #asm 600 DW 0x2000 601 #endasm 602 #pragma updateBank exit=UserBank_01 603 } 604 605 #define rebondNode_address 0x38c7 606 #pragma origin rebondNode_address 607 bit rebondNode(uns8 address @ W) 608 { 609 #asm 610 DW 0x2000 611 #endasm 612 #pragma updateBank exit=UserBank_01 613 return Carry; 614 } 615 616 #define clearAllBonds_address 0x38ca 617 #pragma origin clearAllBonds_address 618 void clearAllBonds() 619 { 620 #asm 621 DW 0x2000 622 #endasm 623 #pragma updateBank exit=UserBank_01 624 } 625 626 #define setNonetMode_address 0x38cd 627 #pragma origin setNonetMode_address 628 void setNonetMode() 629 { 630 #asm 631 DW 0x2000 632 #endasm 633 #pragma updateBank exit=UserBank_01 634 } 635 636 #define setCoordinatorMode_address 0x38d0 637 #pragma origin setCoordinatorMode_address 638 void setCoordinatorMode() 639 { 640 #asm 641 DW 0x2000 642 #endasm 643 #pragma updateBank exit=UserBank_01 644 } 645 646 #define setNodeMode_address 0x38d3 647 #pragma origin setNodeMode_address 648 void setNodeMode() 649 { 650 #asm 651 DW 0x2000 652 #endasm 653 #pragma updateBank exit=UserBank_01 654 } 655 656 #define setNetworkFilteringOn_address 0x38d6 657 #pragma origin setNetworkFilteringOn_address 658 void setNetworkFilteringOn() 659 { 660 #asm 661 DW 0x2000 662 #endasm 663 #pragma updateBank exit=UserBank_01 664 } 665 666 #define setNetworkFilteringOff_address 0x38d9 667 #pragma origin setNetworkFilteringOff_address 668 void setNetworkFilteringOff() 669 { 670 #asm 671 DW 0x2000 672 #endasm 673 #pragma updateBank exit=UserBank_01 674 } 675 676 #define getNetworkParams_address 0x38dc 677 #pragma origin getNetworkParams_address 678 uns8 getNetworkParams() 679 { 680 #asm 681 DW 0x2000 682 #endasm 683 #pragma updateBank exit=UserBank_01 684 return W; 685 } 686 687 #define setRoutingOn_address 0x38df 688 #pragma origin setRoutingOn_address 689 void setRoutingOn() 690 { 691 #asm 692 DW 0x2000 693 #endasm 694 #pragma updateBank exit=UserBank_01 695 } 696 697 #define setRoutingOff_address 0x38e2 698 #pragma origin setRoutingOff_address 699 void setRoutingOff() 700 { 701 #asm 702 DW 0x2000 703 #endasm 704 #pragma updateBank exit=UserBank_01 705 } 706 707 #define answerSystemPacket_address 0x38e8 708 #pragma origin answerSystemPacket_address 709 void answerSystemPacket() 710 { 711 #asm 712 DW 0x2000 713 #endasm 714 #pragma updateBank exit=UserBank_01 715 } 716 717 #define discovery_address 0x38eb 718 #pragma origin discovery_address 719 uns8 discovery(uns8 MaxNodeAddress @ W) 720 { 721 #asm 722 DW 0x2000 723 #endasm 724 #pragma updateBank exit=UserBank_01 725 return W; 726 } 727 728 #define wasRouted_address 0x38ee 729 #pragma origin wasRouted_address 730 bit wasRouted() 731 { 732 #asm 733 DW 0x2000 734 #endasm 735 #pragma updateBank exit=UserBank_01 736 return Carry; 737 } 738 739 #define optimizeHops_address 0x38f1 740 #pragma origin optimizeHops_address 741 bit optimizeHops(uns8 method @ W) 742 { 743 #asm 744 DW 0x2000 745 #endasm 746 #pragma updateBank exit=UserBank_01 747 return Carry; 748 } 749 750 #define getSupplyVoltage_address 0x38f4 751 #pragma origin getSupplyVoltage_address 752 uns8 getSupplyVoltage() 753 { 754 #asm 755 DW 0x2000 756 #endasm 757 #pragma updateBank exit=UserBank_01 758 return W; 759 } 760 761 #define getTemperature_address 0x38f7 762 #pragma origin getTemperature_address 763 int8 getTemperature() 764 { 765 #asm 766 DW 0x2000 767 #endasm 768 #pragma updateBank exit=UserBank_01 769 return W; 770 } 771 772 #define clearBufferRF_address 0x38fa 773 #pragma origin clearBufferRF_address 774 void clearBufferRF() 775 { 776 #asm 777 DW 0x2000 778 #endasm 779 #pragma updateBank exit=UserBank_01 780 } 781 782 #define isDiscoveredNode_address 0x3910 783 #pragma origin isDiscoveredNode_address 784 bit isDiscoveredNode(uns8 address @ W) 785 { 786 #asm 787 DW 0x2000 788 #endasm 789 #pragma updateBank exit=UserBank_01 790 return Carry; 791 } 792 793 #define enableRFPGM_address 0x3913 794 #pragma origin enableRFPGM_address 795 void enableRFPGM() 796 { 797 #asm 798 DW 0x2000 799 #endasm 800 #pragma updateBank exit=UserBank_01 801 } 802 803 #define disableRFPGM_address 0x3916 804 #pragma origin disableRFPGM_address 805 void disableRFPGM() 806 { 807 #asm 808 DW 0x2000 809 #endasm 810 #pragma updateBank exit=UserBank_01 811 } 812 813 #define setupRFPGM_address 0x3919 814 #pragma origin setupRFPGM_address 815 void setupRFPGM(uns8 x @ W) 816 { 817 #asm 818 DW 0x2000 819 #endasm 820 #pragma updateBank exit=UserBank_01 821 } 822 823 #define runRFPGM_address 0x391c 824 #pragma origin runRFPGM_address 825 void runRFPGM() 826 { 827 #asm 828 DW 0x2000 829 #endasm 830 #pragma updateBank exit=UserBank_01 831 } 832 833 #define iqrfDeepSleep_address 0x391f 834 #pragma origin iqrfDeepSleep_address 835 void iqrfDeepSleep() 836 { 837 #asm 838 DW 0x2000 839 #endasm 840 #pragma updateBank exit=UserBank_01 841 } 842 843 #define wasRFICrestarted_address 0x3922 844 #pragma origin wasRFICrestarted_address 845 bit wasRFICrestarted() 846 { 847 #asm 848 DW 0x2000 849 #endasm 850 #pragma updateBank exit=UserBank_01 851 return Carry; 852 } 853 854 #define eeeWriteData_address 0x3925 855 #pragma origin eeeWriteData_address 856 bit eeeWriteData(uns16 address @ param3) 857 { 858 #asm 859 DW 0x2000 860 #endasm 861 #pragma updateBank exit=UserBank_01 862 return Carry; 863 } 864 865 #define eeeReadData_address 0x3928 866 #pragma origin eeeReadData_address 867 bit eeeReadData(uns16 address @ param3) 868 { 869 #asm 870 DW 0x2000 871 #endasm 872 #pragma updateBank exit=UserBank_01 873 return Carry; 874 } 875 876 #define setINDF0_address 0x3931 877 #pragma origin setINDF0_address 878 void setINDF0(uns8 value @ W) 879 { 880 #asm 881 DW 0x2000 882 #endasm 883 #pragma updateBank exit=UserBank_01 884 } 885 886 #define setINDF1_address 0x3934 887 #pragma origin setINDF1_address 888 void setINDF1(uns8 value @ W) 889 { 890 #asm 891 DW 0x2000 892 #endasm 893 #pragma updateBank exit=UserBank_01 894 } 895 896 #define getRSSI_address 0x3937 897 #pragma origin getRSSI_address 898 uns8 getRSSI() 899 { 900 #asm 901 DW 0x2000 902 #endasm 903 #pragma updateBank exit=UserBank_01 904 return W; 905 } 906 907 #define removeBondAddress_address 0x393a 908 #pragma origin removeBondAddress_address 909 void removeBondAddress() 910 { 911 #asm 912 DW 0x2000 913 #endasm 914 #pragma updateBank exit=UserBank_01 915 } 916 917 #define sendFRC_address 0x393d 918 #pragma origin sendFRC_address 919 uns8 sendFRC(uns8 command @ W) 920 { 921 #asm 922 DW 0x2000 923 #endasm 924 #pragma updateBank exit=UserBank_01 925 return W; 926 } 927 928 #define responseFRC_address 0x3940 929 #pragma origin responseFRC_address 930 void responseFRC() 931 { 932 #asm 933 DW 0x2000 934 #endasm 935 #pragma updateBank exit=UserBank_01 936 } 937 938 #define bondRequestAdvanced_address 0x3943 939 #pragma origin bondRequestAdvanced_address 940 bit bondRequestAdvanced() 941 { 942 #asm 943 DW 0x2000 944 #endasm 945 #pragma updateBank exit=UserBank_01 946 return Carry; 947 } 948 949 #define prebondNodeAtNode_address 0x3946 950 #pragma origin prebondNodeAtNode_address 951 bit prebondNodeAtNode() 952 { 953 #asm 954 DW 0x2000 955 #endasm 956 #pragma updateBank exit=UserBank_01 957 return Carry; 958 } 959 960 #define nodeAuthorization_address 0x3949 961 #pragma origin nodeAuthorization_address 962 bit nodeAuthorization(uns8 address @ W) 963 { 964 #asm 965 DW 0x2000 966 #endasm 967 #pragma updateBank exit=UserBank_01 968 return Carry; 969 } 970 971 #define dummy01_address 0x394c 972 #pragma origin dummy01_address 973 void dummy01() 974 { 975 #asm 976 DW 0x2000 977 #endasm 978 #pragma updateBank exit=UserBank_01 979 } 980 981 #define setAccessPassword_address 0x3958 982 #pragma origin setAccessPassword_address 983 void setAccessPassword() 984 { 985 #asm 986 DW 0x2000 987 #endasm 988 #pragma updateBank exit=UserBank_01 989 } 990 991 #define setUserKey_address 0x395b 992 #pragma origin setUserKey_address 993 void setUserKey() 994 { 995 #asm 996 DW 0x2000 997 #endasm 998 #pragma updateBank exit=UserBank_01 999 } 1000 1001 #define amIRecipientOfFRC_address 0x3961 1002 #pragma origin amIRecipientOfFRC_address 1003 bit amIRecipientOfFRC() 1004 { 1005 #asm 1006 DW 0x2000 1007 #endasm 1008 #pragma updateBank exit=UserBank_01 1009 return Carry; 1010 } 1011 1012 #define setLEDR_address 0x3964 1013 #pragma origin setLEDR_address 1014 void setLEDR() 1015 { 1016 #asm 1017 DW 0x2000 1018 #endasm 1019 #pragma updateBank exit=UserBank_01 1020 } 1021 1022 #define encryptBufferRF_address 0x3967 1023 #pragma origin encryptBufferRF_address 1024 void encryptBufferRF(uns8 blocks @ W) 1025 { 1026 #asm 1027 DW 0x2000 1028 #endasm 1029 #pragma updateBank exit=UserBank_01 1030 } 1031 1032 #define decryptBufferRF_address 0x396a 1033 #pragma origin decryptBufferRF_address 1034 void decryptBufferRF(uns8 blocks @ W) 1035 { 1036 #asm 1037 DW 0x2000 1038 #endasm 1039 #pragma updateBank exit=UserBank_01 1040 } 1041 1042 #define prebondNodeAtCoordinator_address 0x396d 1043 #pragma origin prebondNodeAtCoordinator_address 1044 bit prebondNodeAtCoordinator(uns8 address @ W) 1045 { 1046 #asm 1047 DW 0x2000 1048 #endasm 1049 #pragma updateBank exit=UserBank_01 1050 return Carry; 1051 } 1052 1053 #define setFSRs_address 0x3970 1054 #pragma origin setFSRs_address 1055 uns8 setFSRs(uns8 fsrs @ W) 1056 { 1057 #asm 1058 DW 0x2000 1059 #endasm 1060 #pragma updateBank exit=UserBank_01 1061 return W; 1062 } 1063 1064 // For internal usage only 1065 #define updateCRC16_address 0x3973 1066 #pragma origin updateCRC16_address 1067 void updateCRC16(uns8 value @ W) 1068 { 1069 #asm 1070 DW 0x2000 1071 #endasm 1072 #pragma updateBank exit=UserBank_01 1073 } 1074 1075 #define smartConnect_address 0x3976 1076 #pragma origin smartConnect_address 1077 bit smartConnect(uns8 address @ W) 1078 { 1079 #asm 1080 DW 0x2000 1081 #endasm 1082 #pragma updateBank exit=UserBank_01 1083 return Carry; 1084 } 1085 1086 #define addressBitmap_address 0x3979 1087 #pragma origin addressBitmap_address 1088 uns8 addressBitmap(uns8 bitIndex @ W) 1089 { 1090 #asm 1091 DW 0x2000 1092 #endasm 1093 #pragma updateBank exit=UserBank_01 1094 return W; 1095 } 1096 1097 #define setServiceChannel_address 0x397c 1098 #pragma origin setServiceChannel_address 1099 bit setServiceChannel(uns8 channelNumber @ W) 1100 { 1101 #asm 1102 DW 0x2000 1103 #endasm 1104 #pragma updateBank exit=UserBank_01 1105 return Carry; 1106 } 1107 1108 #pragma optimize 1 1109 #pragma update_RP 1 1110 #pragma update_PAGE 1 1111 #pragma origin __APPLICATION_ADDRESS