From b6dc5f2246ae9ab95a02bdac3af3018dcfcaecac Mon Sep 17 00:00:00 2001 From: Lucas Teske Date: Sat, 21 Jun 2014 21:39:35 -0300 Subject: [PATCH 1/2] Updated stuff to work in new AVR-GCC --- firmware/main.c | 2 +- firmware/main.hex | 270 +++++++++++++------------- firmware/ppm.c | 8 +- firmware/usbdrv/Changelog.txt | 10 + firmware/usbdrv/USB-IDs-for-free.txt | 16 +- firmware/usbdrv/USBID-License.txt | 143 ++++++++++++++ firmware/usbdrv/iarcompat.h | 70 +++++++ firmware/usbdrv/oddebug.c | 2 +- firmware/usbdrv/oddebug.h | 2 +- firmware/usbdrv/usbconfig-prototype.h | 2 +- firmware/usbdrv/usbdrv.c | 19 +- firmware/usbdrv/usbdrv.h | 21 +- firmware/usbdrv/usbdrvasm.S | 2 +- firmware/usbdrv/usbdrvasm12.inc | 2 +- firmware/usbdrv/usbdrvasm128.inc | 2 +- firmware/usbdrv/usbdrvasm15.inc | 2 +- firmware/usbdrv/usbdrvasm16.inc | 2 +- firmware/usbdrv/usbdrvasm165.inc | 2 +- firmware/usbdrv/usbdrvasm18-crc.inc | 2 +- firmware/usbdrv/usbdrvasm20.inc | 2 +- firmware/usbdrv/usbportability.h | 2 +- 21 files changed, 408 insertions(+), 175 deletions(-) create mode 100755 firmware/usbdrv/USBID-License.txt create mode 100755 firmware/usbdrv/iarcompat.h diff --git a/firmware/main.c b/firmware/main.c index 8401cd9..63749b0 100755 --- a/firmware/main.c +++ b/firmware/main.c @@ -35,7 +35,7 @@ /* ----------------------------- USB interface ----------------------------- */ /* ------------------------------------------------------------------------- */ -PROGMEM char usbHidReportDescriptor[50] = { /* USB report descriptor, size must match usbconfig.h */ +PROGMEM const char usbHidReportDescriptor[50] = { /* USB report descriptor, size must match usbconfig.h */ 0x05, 0x01, // USAGE_PAGE (Generic Desktop) 0x15, 0x00, // LOGICAL_MINIMUM (0) 0x26, 0xff, 0x00, // LOGICAL_MAXIMUM (255) diff --git a/firmware/main.hex b/firmware/main.hex index ebd887c..3423bf4 100644 --- a/firmware/main.hex +++ b/firmware/main.hex @@ -1,142 +1,140 @@ -:1000000089C001C2A2C0A1C0A0C057C336C39DC051 +:1000000089C0FEC1A2C0A1C0A0C053C333C39DC05C :100010009CC09BC09AC099C098C097C096C095C01C -:1000200094C093C092C004030904240374006800C0 -:100030006F006D006100730070006600650069006C -:100040006600650072002E006E00650074003403C7 -:10005000500050004D0032005500530042002D006A -:10006000740068006F006D0061007300700066002E -:10007000650069006600650072002E006E00650074 -:1000800074002C03740068006F006D006100730041 -:1000900070006600650069006600650072002E0051 -:1000A0006E00650074003A0030003000310012012B -:1000B000100100000008C016DB2700010102030147 -:1000C00009022200010100800A0904000001030066 -:1000D0000000092101010001223200070581030807 -:1000E000000A0501150026FF0075080904A1010991 +:1000200094C093C092C009022200010100800A0915 +:100030000400000103000000092101010001223237 +:10004000000705810308000A1201100100000008E2 +:10005000C016DB270001010203012C0374006800B5 +:100060006F006D006100730070006600650069003C +:100070006600650072002E006E00650074003A0094 +:100080003000300031003403500050004D00320089 +:100090005500530042002D00740068006F006D0091 +:1000A000610073007000660065006900660065000D +:1000B00072002E006E006500740024037400680056 +:1000C0006F006D00610073007000660065006900DC +:1000D0006600650072002E006E0065007400040367 +:1000E00009040501150026FF0075080904A101098E :1000F00001A1000930093195028182C0A1000932B5 :10010000093395028182C0093409350936093795CA :10011000048182C011241FBECFE5D4E0DEBFCDBF75 -:1001200010E0A0E6B0E0E6EBF8E002C005900D922A +:1001200010E0A0E6B0E0E0EAF8E002C005900D9231 :10013000A436B107D9F710E0A4E6B0E001C01D92E3 -:10014000A73BB107E1F756D3B4C35ACF85B7826056 -:1001500085BF8BB780648BBF8BE480937A008AE580 -:100160008093790008951F93CF93DF9390918A0035 -:10017000935097FDB2C020918700809186008D3208 -:1001800009F0A9C0983009F0A6C0CCE0D0E0C21BAD -:10019000D109C257DF4F83EC80936E008AE58093CC -:1001A0006000109264008881807621F0CE01FFD239 -:1001B000282F88C09A81109277008981882331F492 -:1001C0001092780087E790E022E078C0853019F43B -:1001D00090938B0070C0863009F058C08B818130BD -:1001E00041F48EEA90E0909389008093880022E1A8 -:1001F00049C0823041F480EC90E090938900809374 -:10020000880022E23FC0833041F5992341F486E221 -:1002100090E0909389008093880024E033C091306F -:1002200041F48AE290E0909389008093880024E270 -:1002300029C0923041F48EE490E09093890080933D -:10024000880024E31FC09330E1F482E890E09093AB -:100250008900809388002CE215C0813241F482ED40 -:1002600090E0909389008093880029E00BC082324F -:1002700041F482EE90E0909389008093880022E31D -:1002800001C020E080E4809364001CC0883019F431 -:100290008DE890E009C0893019F490938D000BC06F -:1002A0008A3021F487E790E021E008C08B3019F410 -:1002B0008BE480937A0087E790E020E090938900B8 -:1002C000809388008F81882321F48E81821708F41F -:1002D000282F2093610010928A008091600084FF93 -:1002E00049C0809161008F3F09F444C0182F8930C4 -:1002F00008F018E0811B8093610080916E0098E8FF -:10030000892780936E00112341F12091880030915C -:1003100089008091640086FF0DC0AFE6B0E080E008 -:1003200090E0F901E80FF91FE491ED930196181799 -:10033000C1F708C0912FD901EFE6F0E08D918193CC -:100340009150E1F71150812F90E01F5F0196820FCD -:10035000931F90938900809388008FE690E0612F2F -:100360004ED0612F6C5F6C3019F08FEF809361007D -:100370006093600094E180B3847131F49150D9F7B7 -:1003800010928B0010928500DF91CF911F910895FC -:100390001F93DC01162F8091790084FF07C08091A4 -:1003A0007A0098E8892780937A0003C08AE58093D1 -:1003B0007900912FEBE7F0E08D9181939150191620 -:1003C000DCF38BE790E0612F1AD01C5F109379006B -:1003D0001F910895A82FB92F80E090E041E050EAE6 -:1003E000609530E009C02D9182279795879510F090 -:1003F00084279527305EC8F36F5FA8F30895EADF7E -:100400008D939D930895CF93CFB7CF93C395849B3E -:10041000E9F7849B09C0849B07C0849B05C0849B2B -:1004200003C0849B01C0A3C0DF93C0918700DD2778 -:10043000C257DF4F849B02C0DF91EBCF2F930F9306 -:100440001F9300B32FEF04FB20F94F933F9310B39A -:100450004FEF012704FB21F93BE031C04E7F012F14 -:1004600010B3216028C0102F4D7F2260000000B320 -:1004700029C04B7F2460012F000010B32BC010B3A4 -:10048000477F28602AC04F7E00B320612CC04F7D7B -:1004900010B320622FC04F7B00B3206432C04227CC -:1004A00000B349934FEF0000102714FB20F910B35D -:1004B0001471C9F1297F91F2012704FB21F900B3DE -:1004C000237F89F2315058F1102714FB22F910B321 -:1004D000277E79F2012704FB23F92F7C81F200B3F8 -:1004E000102714FB24F92F7971F200C010B30127F3 -:1004F00004FB25F92F7359F200C000B3102714FB39 -:1005000026F9223040F200C010B3012704FB27F97E -:10051000243028F64F77206810B30000F9CF10E49C -:100520001ABF002719C03B503195C31BD04010E4BF -:100530001ABF0881033CF9F00B34E9F020918500E3 -:100540001981110F1213EDCF4A81441F093641F171 -:100550000D3211F0013E29F700938C003F914F912D -:100560001F910F912F91DF91CAB7C6FD4FCFCF9149 -:10057000CFBFCF91189520918C00222379F3109151 -:100580008A00112369F534306AF130938A00209390 -:100590008600109187003BE0311B3093870022C01A -:1005A00000918A000130E4F40AE54F7049F430917B -:1005B000600034FD19C000936000CEE6D0E018C0A2 -:1005C0003091790034FD10C000937900CAE7D0E083 -:1005D0000FC02795A8F45150A9F4220F0000F9CFBD -:1005E0004AE503C042ED01C0432FC4E1D0E032E050 -:1005F00011B31461949A11BB02B320E414E15F9328 -:10060000012756E002BB279520F4515021F4220F18 -:10061000F9CF012756E000003B5A02BBD0F22795E4 -:1006200028F4515029F4220F0000F9CF012756E099 -:10063000279502BB20F4515021F4220FF9CF012756 -:1006400056E02991332302BB21F60B7E10918B00DB -:10065000110FC651D04002BB11F01093850010E479 -:100660001ABF006111B31B7E402F4B7E5F9100C00B -:1006700000C002BB11BB42BB71CF1F920F920FB6DD -:100680000F9211242F938F939F93809162009091EA -:1006900063008F5F9F4F19F081E08093B6008FEF6A -:1006A0009FEF90936300809362009F918F912F91B1 -:1006B0000F900FBE0F901F9018951F920F920FB6BC -:1006C0000F9211242F933F938F939F93EF93FF9358 -:1006D00026B537B5205633473BBD2ABD205A3C4886 -:1006E0008091B4009091B5008091B4009091B500D4 -:1006F000281B390B86B597B59093B5008093B4004D -:10070000809162009091630097FD10C0809162001B -:1007100090916300089754F4E0916200F0916300B7 -:10072000EE0FFF1FEC55FF4F318320838091620055 -:100730009091630001969093630080936200FF9113 -:10074000EF919F918F913F912F910F900FBE0F903E -:100750001F90189581E08EBD8EB580688EBD8EB5D8 -:1007600080648EBD80E389BF1092B6008FEF9FEF4B -:1007700090936300809362000895FC01EE0FFF1FC9 -:10078000EC55FF4F808191812EE2803E920710F45C -:1007900080EE9EE2805E9E426FE270E076D0CB01FA -:1007A0006F3F710519F010F08FEF90E00895FC0194 -:1007B000808180768032E1F48181813041F485E668 -:1007C00090E0909389008093880088E008958230BB -:1007D00041F48DE690E0909389008093880081E059 -:1007E00008958A3029F4838180936D0080E0089514 -:1007F00080E00895FF920F931F93CF93DF932EE035 -:1008000088E190E00FB6F894A89581BD0FBE21BD98 -:10081000A1DF9CDC8C9A20E048EB5BE004C0A8954B -:10082000CA010197F1F72150D1F78C98789481E0B3 -:100830008093B60028C0FF24F394A89594DC80919F -:10084000B6008823D1F31092B60005E610E0C0E0B0 -:10085000D0E0CE0192DF982FF8018081891719F03E -:100860009083FF24F39421960F5F1F4FC830D1056A -:1008700081F7FF2011F38091790084FFDCCF85E6BA -:1008800090E068E085DDFF24D8CFAA1BBB1B51E1B7 -:1008900007C0AA1FBB1FA617B70710F0A61BB70BF0 -:1008A000881F991F5A95A9F780959095BC01CD0195 -:0608B0000895F894FFCF4B -:0408B6005AFFFFFFE7 +:10014000A73BB107E1F750D3A9C35ACFCF93C62F2E +:100150002091790024FF07C020917A0038E82327F6 +:1001600020937A0003C02AE520937900DC01EBE7B5 +:10017000F0E09C2F9E0F8D918193892F8E1B181676 +:10018000D4F36C2F8BE790E037D1CC5FC09379002C +:10019000CF910895CF93DF9380918A00835087FD9C +:1001A000B2C090918700209186002D3209F0A9C03D +:1001B000883009F0A6C0CCE0D0E0C91BD109C257F5 +:1001C000DF4F83EC80936E008AE58093610010928C +:1001D00064008881807619F0CE01E5D289C09A81C9 +:1001E000109277008981811106C01092780027E76C +:1001F00030E082E079C0853019F490938B0071C0B3 +:10020000863009F058C08B81813041F488E490E059 +:10021000909389008093880082E149C0823041F444 +:1002200086E290E0909389008093880082E23FC04C +:10023000833041F5911108C08EED90E090938900D4 +:100240008093880084E033C0913041F48AEB90E0E1 +:10025000909389008093880084E229C0923041F411 +:1002600086E890E0909389008093880084E31FC023 +:100270009330E1F48AE590E09093890080938800C0 +:100280008CE215C0813241F488E390E090938900BC +:100290008093880089E00BC0823241F482EE90E0C6 +:1002A000909389008093880082E301C080E090E40D +:1002B000909364001DC0883069F0893019F49093E0 +:1002C0008D000FC08A3049F08B3059F48BE4809355 +:1002D0007A0007C02DE830E002C027E730E081E077 +:1002E00003C027E730E080E0309389002093880046 +:1002F0009F81911104C09E81981708F4892F8093E3 +:10030000600010928A008091610084FF46C0809155 +:1003100060008F3F09F441C0C82F893008F0C8E061 +:100320008C1B8093600080916E0098E889278093F1 +:100330006E00CC2331F120918800309189008091AA +:10034000640086FF0BC0AFE6B0E0F9018C2F8A0F86 +:1003500094919D9331968A13FBCF09C0D901EFE6A2 +:10036000F0E08C2F8E0F9D9191938E13FCCF8FEF29 +:100370008C0F90E00196820F931F909389008093D9 +:1003800088006C2F8FE690E037D0CC5FCC3019F02E +:100390008FEF80936000C093610084E190B394710B +:1003A00031F48150D9F710928B0010928500DF91C3 +:1003B000CF91089585B7826085BF8BB780648BBF6E +:1003C0008BE480937A008AE5809379000895A82FC2 +:1003D000B92F80E090E041E050EA609530E009C03C +:1003E0002D9182279795879510F084279527305E69 +:1003F000C8F36F5FA8F30895EADF8D939D93089586 +:10040000CF93CFB7CF93C395849BE9F7849B09C063 +:10041000849B07C0849B05C0849B03C0849B01C050 +:10042000A3C0DF93C0918700DD27C257DF4F849BB5 +:1004300002C0DF91EBCF2F930F931F9300B32FEFE9 +:1004400004FB20F94F933F9310B34FEF012704FBB8 +:1004500021F93BE031C04E7F012F10B3216028C04D +:10046000102F4D7F2260000000B329C04B7F246015 +:10047000012F000010B32BC010B3477F28602AC0A3 +:100480004F7E00B320612CC04F7D10B320622FC07F +:100490004F7B00B3206432C0422700B349934FEF33 +:1004A0000000102714FB20F910B31471C9F1297F43 +:1004B00091F2012704FB21F900B3237F89F2315027 +:1004C00058F1102714FB22F910B3277E79F2012787 +:1004D00004FB23F92F7C81F200B3102714FB24F9CD +:1004E0002F7971F200C010B3012704FB25F92F7397 +:1004F00059F200C000B3102714FB26F9223040F255 +:1005000000C010B3012704FB27F9243028F64F77E9 +:10051000206810B30000F9CF10E41ABF002719C0FB +:100520003B503195C31BD04010E41ABF0881033CF7 +:10053000F9F00B34E9F0209185001981110F1213A5 +:10054000EDCF4A81441F093641F10D3211F0013ED1 +:1005500029F700938C003F914F911F910F912F919C +:10056000DF91CAB7C6FD4FCFCF91CFBFCF911895BE +:1005700020918C00222379F310918A00112369F5D0 +:1005800034306AF130938A002093860010918700FE +:100590003BE0311B3093870022C000918A0001307C +:1005A000E4F40AE54F7049F43091610034FD19C05C +:1005B00000936100CEE6D0E018C03091790034FDA0 +:1005C00010C000937900CAE7D0E00FC02795A8F4C7 +:1005D0005150A9F4220F0000F9CF4AE503C042EDC3 +:1005E00001C0432FC4E1D0E032E011B31461949A0A +:1005F00011BB02B320E414E15F93012756E002BB74 +:10060000279520F4515021F4220FF9CF012756E00D +:1006100000003B5A02BBD0F2279528F4515029F430 +:10062000220F0000F9CF012756E0279502BB20F4E6 +:10063000515021F4220FF9CF012756E0299133239D +:1006400002BB21F60B7E10918B00110FC651D040DA +:1006500002BB11F01093850010E41ABF006111B3C2 +:100660001B7E402F4B7E5F9100C000C002BB11BBC0 +:1006700042BB71CF1F920F920FB60F9211242F938E +:100680008F939F938091620090916300019619F07F +:1006900081E08093B6008FEF9FEF9093630080938B +:1006A00062009F918F912F910F900FBE0F901F901E +:1006B00018951F920F920FB60F9211242F933F930C +:1006C0008F939F93EF93FF9386B597B59C01205628 +:1006D00033473BBD2ABD2091B4003091B500209135 +:1006E000B4003091B500821B930B26B537B530931B +:1006F000B5002093B400209162003091630037FD73 +:1007000011C020916200309163002830310554F40B +:10071000E0916200F0916300EE0FFF1FEC55FF4F78 +:100720009183808380916200909163000196909301 +:10073000630080936200FF91EF919F918F913F91B1 +:100740002F910F900FBE0F901F90189581E08EBDD6 +:100750008EB580688EBD8EB580648EBD80E389BF06 +:100760001092B6008FEF9FEF90936300809362002A +:100770000895FC01EE0FFF1FEC55FF4F8081918122 +:10078000803E2EE2920710F480EE9EE2805E9E4252 +:100790006FE270E06FD06F3F710519F010F06FEFEE +:1007A00070E0862F0895FC01808180768032D1F43C +:1007B0008181813041F486E690E0909389008093B6 +:1007C000880088E00895823041F485E690E09093B7 +:1007D00089008093880081E008958A3019F483812C +:1007E0008093650080E008952EE088E190E00FB6E8 +:1007F000F894A89581BD0FBE21BDA8DFDBDD8C9AE2 +:1008000080E0815041F0A895E7EBFBE03197F1F7EC +:1008100000C00000F6CF8C98789481E08093B600F9 +:10082000F12CA895B7DC8091B6008823D1F3109203 +:10083000B60006E610E0C0E0D0E0CE019ADFF80195 +:100840009081981719F08083FF24F39421960F5F0D +:100850001F4FC830D10589F7FF2019F38091790027 +:1008600084FD03C0FF24F394DCCF68E086E690E0CB +:100870006DDCD6CFAA1BBB1B51E107C0AA1FBB1F53 +:10088000A617B70710F0A61BB70B881F991F5A951C +:10089000A9F780959095BC01CD010895F894FFCFFC +:0408A000FF5AFFFFFD :00000001FF diff --git a/firmware/ppm.c b/firmware/ppm.c index 6766d50..146f15d 100755 --- a/firmware/ppm.c +++ b/firmware/ppm.c @@ -22,8 +22,8 @@ //========================================================================= #include +#include #include "ppm.h" -#include #define PPM_TCNT TCNT1 @@ -41,7 +41,8 @@ volatile unsigned int timeOld; /** * Interrupt: Compare 1A match = timeout */ -SIGNAL (SIG_OUTPUT_COMPARE1A) { +//SIGNAL (SIG_OUTPUT_COMPARE1A) { +ISR(TIMER1_COMPA_vect) { if (chan!=-1) { ppmNewData=1; } @@ -51,7 +52,8 @@ SIGNAL (SIG_OUTPUT_COMPARE1A) { /** * Interrupt: ICP-Edge detect */ -SIGNAL (SIG_INPUT_CAPTURE1) { +//SIGNAL (SIG_INPUT_CAPTURE1) { +ISR(TIMER1_CAPT_vect) { unsigned int time=ICR1; OCR1A=time+T_OUT; if (time>timeOld) { diff --git a/firmware/usbdrv/Changelog.txt b/firmware/usbdrv/Changelog.txt index 5c6354a..5fae8f3 100755 --- a/firmware/usbdrv/Changelog.txt +++ b/firmware/usbdrv/Changelog.txt @@ -306,3 +306,13 @@ Scroll down to the bottom to see the most recent changes. endpoint now. * Release 2010-07-15 + + - Fixed bug in usbDriverSetup() which prevented descriptor sizes above 255 + bytes. + - Avoid a compiler warning for unused parameter in usbHandleResetHook() when + compiler option -Wextra is enabled. + - Fixed wrong hex value for some IDs in USB-IDs-for-free.txt. + - Keep a define for USBATTR_BUSPOWER, although the flag does not exist + in USB 1.1 any more. Set it to 0. This is for backward compatibility. + +* Release 2012-01-09 diff --git a/firmware/usbdrv/USB-IDs-for-free.txt b/firmware/usbdrv/USB-IDs-for-free.txt index 2f4d59a..d46517d 100755 --- a/firmware/usbdrv/USB-IDs-for-free.txt +++ b/firmware/usbdrv/USB-IDs-for-free.txt @@ -86,8 +86,9 @@ If you use one of the IDs listed below, your device and host-side software must conform to these rules: (1) The USB device MUST provide a textual representation of the serial -number. The serial number string MUST be available at least in USB language -0x0409 (English/US). +number, unless ONLY the operating system's default class driver is used. +The serial number string MUST be available at least in USB language 0x0409 +(English/US). (2) The serial number MUST start with either an Internet domain name (e.g. "mycompany.com") registered and owned by you, or an e-mail address under your @@ -108,6 +109,11 @@ driver for Vendor Class devices is needed, this driver must be libusb or libusb-win32 (see http://libusb.org/ and http://libusb-win32.sourceforge.net/). +(7) If ONLY the operating system's default class driver is used, e.g. for +mice, keyboards, joysticks, CDC or MIDI devices and no discrimination by an +application is needed, the serial number may be omitted. + + Table if IDs for discrimination by serial number string: PID dec (hex) | VID dec (hex) | Description of use @@ -121,11 +127,11 @@ PID dec (hex) | VID dec (hex) | Description of use ---------------+---------------+------------------------------------------- 10203 (0x27db) | 5824 (0x16c0) | For USB Keyboards ---------------+---------------+------------------------------------------- -10204 (0x27db) | 5824 (0x16c0) | For USB Joysticks +10204 (0x27dc) | 5824 (0x16c0) | For USB Joysticks ---------------+---------------+------------------------------------------- -10205 (0x27dc) | 5824 (0x16c0) | For CDC-ACM class devices (modems) +10205 (0x27dd) | 5824 (0x16c0) | For CDC-ACM class devices (modems) ---------------+---------------+------------------------------------------- -10206 (0x27dd) | 5824 (0x16c0) | For MIDI class devices +10206 (0x27de) | 5824 (0x16c0) | For MIDI class devices ---------------+---------------+------------------------------------------- diff --git a/firmware/usbdrv/USBID-License.txt b/firmware/usbdrv/USBID-License.txt new file mode 100755 index 0000000..4739a57 --- /dev/null +++ b/firmware/usbdrv/USBID-License.txt @@ -0,0 +1,143 @@ +Royalty-Free Non-Exclusive License USB Product-ID +================================================= + +Version 2006-06-19 + +OBJECTIVE DEVELOPMENT Software GmbH hereby grants you the non-exclusive +right to use three USB.org vendor-ID (VID) / product-ID (PID) pairs with +products based on Objective Development's firmware-only USB driver for +Atmel AVR microcontrollers: + + * VID = 5824 (=0x16c0) / PID = 1500 (=0x5dc) for devices implementing no + USB device class (vendor-class devices with USB class = 0xff). Devices + using this pair will be referred to as "VENDOR CLASS" devices. + + * VID = 5824 (=0x16c0) / PID = 1503 (=0x5df) for HID class devices + (excluding mice and keyboards). Devices using this pair will be referred + to as "HID CLASS" devices. + + * VID = 5824 (=0x16c0) / PID = 1505 (=0x5e1) for CDC class modem devices + Devices using this pair will be referred to as "CDC-ACM CLASS" devices. + +Since the granted right is non-exclusive, the same VID/PID pairs may be +used by many companies and individuals for different products. To avoid +conflicts, your device and host driver software MUST adhere to the rules +outlined below. + +OBJECTIVE DEVELOPMENT Software GmbH has licensed these VID/PID pairs from +Wouter van Ooijen (see www.voti.nl), who has licensed the VID from the USB +Implementers Forum, Inc. (see www.usb.org). The VID is registered for the +company name "Van Ooijen Technische Informatica". + + +RULES AND RESTRICTIONS +====================== + +(1) The USB device MUST provide a textual representation of the +manufacturer and product identification. The manufacturer identification +MUST be available at least in USB language 0x0409 (English/US). + +(2) The textual manufacturer identification MUST contain either an Internet +domain name (e.g. "mycompany.com") registered and owned by you, or an +e-mail address under your control (e.g. "myname@gmx.net"). You can embed +the domain name or e-mail address in any string you like, e.g. "Objective +Development http://www.obdev.at/avrusb/". + +(3) You are responsible for retaining ownership of the domain or e-mail +address for as long as any of your products are in use. + +(4) You may choose any string for the textual product identification, as +long as this string is unique within the scope of your textual manufacturer +identification. + +(5) Matching of device-specific drivers MUST be based on the textual +manufacturer and product identification in addition to the usual VID/PID +matching. This means that operating system features which are based on +VID/PID matching only (e.g. Windows kernel level drivers, automatic actions +when the device is plugged in etc) MUST NOT be used. The driver matching +MUST be a comparison of the entire strings, NOT a sub-string match. For +CDC-ACM CLASS devices, a generic class driver should be used and the +matching is based on the USB device class. + +(6) The extent to which VID/PID matching is allowed for non device-specific +drivers or features depends on the operating system and particular VID/PID +pair used: + + * Mac OS X, Linux, FreeBSD and other Unixes: No VID/PID matching is + required and hence no VID/PID-only matching is allowed at all. + + * Windows: The operating system performs VID/PID matching for the kernel + level driver. You are REQUIRED to use libusb-win32 (see + http://libusb-win32.sourceforge.net/) as the kernel level driver for + VENDOR CLASS devices. HID CLASS devices all use the generic HID class + driver shipped with Windows, except mice and keyboards. You therefore + MUST NOT use any of the shared VID/PID pairs for mice or keyboards. + CDC-ACM CLASS devices require a ".inf" file which matches on the VID/PID + pair. This ".inf" file MUST load the "usbser" driver to configure the + device as modem (COM-port). + +(7) OBJECTIVE DEVELOPMENT Software GmbH disclaims all liability for any +problems which are caused by the shared use of these VID/PID pairs. You +have been warned that the sharing of VID/PID pairs may cause problems. If +you want to avoid them, get your own VID/PID pair for exclusive use. + + +HOW TO IMPLEMENT THESE RULES +============================ + +The following rules are for VENDOR CLASS and HID CLASS devices. CDC-ACM +CLASS devices use the operating system's class driver and don't need a +custom driver. + +The host driver MUST iterate over all devices with the given VID/PID +numbers in their device descriptors and query the string representation for +the manufacturer name in USB language 0x0409 (English/US). It MUST compare +the ENTIRE string with your textual manufacturer identification chosen in +(2) above. A substring search for your domain or e-mail address is NOT +acceptable. The driver MUST NOT touch the device (other than querying the +descriptors) unless the strings match. + +For all USB devices with matching VID/PID and textual manufacturer +identification, the host driver must query the textual product +identification and string-compare it with the name of the product it can +control. It may only initialize the device if the product matches exactly. + +Objective Development provides examples for these matching rules with the +"PowerSwitch" project (using libusb) and with the "Automator" project +(using Windows calls on Windows and libusb on Unix). + + +Technical Notes: +================ + +Sharing the same VID/PID pair among devices is possible as long as ALL +drivers which match the VID/PID also perform matching on the textual +identification strings. This is easy on all operating systems except +Windows, since Windows establishes a static connection between the VID/PID +pair and a kernel level driver. All devices with the same VID/PID pair must +therefore use THE SAME kernel level driver. + +We therefore demand that you use libusb-win32 for VENDOR CLASS devices. +This is a generic kernel level driver which allows all types of USB access +for user space applications. This is only a partial solution of the +problem, though, because different device drivers may come with different +versions of libusb-win32 and they may not work with the libusb version of +the respective other driver. You are therefore encouraged to test your +driver against a broad range of libusb-win32 versions. Do not use new +features in new versions, or check for their existence before you use them. +When a new libusb-win32 becomes available, make sure that your driver is +compatible with it. + +For HID CLASS devices it is necessary that all those devices bind to the +same kernel driver: Microsoft's generic USB HID driver. This is true for +all HID devices except those with a specialized driver. Currently, the only +HIDs with specialized drivers are mice and keyboards. You therefore MUST +NOT use a shared VID/PID with mouse and keyboard devices. + +Sharing the same VID/PID among different products is unusual and probably +violates the USB specification. If you do it, you do it at your own risk. + +To avoid possible incompatibilities, we highly recommend that you get your +own VID/PID pair if you intend to sell your product. Objective +Development's commercial licenses for AVR-USB include a PID for +unrestricted exclusive use. diff --git a/firmware/usbdrv/iarcompat.h b/firmware/usbdrv/iarcompat.h new file mode 100755 index 0000000..443d3ff --- /dev/null +++ b/firmware/usbdrv/iarcompat.h @@ -0,0 +1,70 @@ +/* Name: iarcompat.h + * Project: AVR USB driver + * Author: Christian Starkjohann + * Creation Date: 2006-03-01 + * Tabsize: 4 + * Copyright: (c) 2006 by OBJECTIVE DEVELOPMENT Software GmbH + * License: Proprietary, free under certain conditions. See Documentation. + * This Revision: $Id: iarcompat.h 174 2006-03-23 10:09:01Z cs $ + */ + +/* +General Description: +This header is included when we compile with the IAR C-compiler and assembler. +It defines macros for cross compatibility between gcc and IAR-cc. + +Thanks to Oleg Semyonov for his help with the IAR tools port! +*/ + +#ifndef __iarcompat_h_INCLUDED__ +#define __iarcompat_h_INCLUDED__ + +#if defined __IAR_SYSTEMS_ICC__ || defined __IAR_SYSTEMS_ASM__ + +/* Enable bit definitions */ +#ifndef ENABLE_BIT_DEFINITIONS +# define ENABLE_BIT_DEFINITIONS 1 +#endif + +/* Include IAR headers */ +#include +#ifndef __IAR_SYSTEMS_ASM__ +# include +#endif + +#define __attribute__(arg) +#define IAR_SECTION(section) @ section + +#ifndef USB_BUFFER_SECTION +# define USB_BUFFER_SECTION "TINY_Z" /* if user has not selected a named section */ +#endif + +#ifdef __IAR_SYSTEMS_ASM__ +# define __ASSEMBLER__ +#endif + +#ifdef __HAS_ELPM__ +# define PROGMEM __farflash +#else +# define PROGMEM __flash +#endif + +#define PRG_RDB(addr) (*(PROGMEM char *)(addr)) + +/* The following definitions are not needed by the driver, but may be of some + * help if you port a gcc based project to IAR. + */ +#define cli() __disable_interrupt() +#define sei() __enable_interrupt() +#define wdt_reset() __watchdog_reset() + +/* Depending on the device you use, you may get problems with the way usbdrv.h + * handles the differences between devices. Since IAR does not use #defines + * for MCU registers, we can't check for the existence of a particular + * register with an #ifdef. If the autodetection mechanism fails, include + * definitions for the required USB_INTR_* macros in your usbconfig.h. See + * usbconfig-prototype.h and usbdrv.h for details. + */ + +#endif /* defined __IAR_SYSTEMS_ICC__ || defined __IAR_SYSTEMS_ASM__ */ +#endif /* __iarcompat_h_INCLUDED__ */ diff --git a/firmware/usbdrv/oddebug.c b/firmware/usbdrv/oddebug.c index 945457c..466e68f 100755 --- a/firmware/usbdrv/oddebug.c +++ b/firmware/usbdrv/oddebug.c @@ -5,7 +5,7 @@ * Tabsize: 4 * Copyright: (c) 2005 by OBJECTIVE DEVELOPMENT Software GmbH * License: GNU GPL v2 (see License.txt), GNU GPL v3 or proprietary (CommercialLicense.txt) - * This Revision: $Id: oddebug.c 692 2008-11-07 15:07:40Z cs $ + * This Revision: $Id$ */ #include "oddebug.h" diff --git a/firmware/usbdrv/oddebug.h b/firmware/usbdrv/oddebug.h index d61309d..c56af1c 100755 --- a/firmware/usbdrv/oddebug.h +++ b/firmware/usbdrv/oddebug.h @@ -5,7 +5,7 @@ * Tabsize: 4 * Copyright: (c) 2005 by OBJECTIVE DEVELOPMENT Software GmbH * License: GNU GPL v2 (see License.txt), GNU GPL v3 or proprietary (CommercialLicense.txt) - * This Revision: $Id: oddebug.h 692 2008-11-07 15:07:40Z cs $ + * This Revision: $Id$ */ #ifndef __oddebug_h_included__ diff --git a/firmware/usbdrv/usbconfig-prototype.h b/firmware/usbdrv/usbconfig-prototype.h index 847710e..826f026 100755 --- a/firmware/usbdrv/usbconfig-prototype.h +++ b/firmware/usbdrv/usbconfig-prototype.h @@ -5,7 +5,7 @@ * Tabsize: 4 * Copyright: (c) 2005 by OBJECTIVE DEVELOPMENT Software GmbH * License: GNU GPL v2 (see License.txt), GNU GPL v3 or proprietary (CommercialLicense.txt) - * This Revision: $Id: usbconfig-prototype.h 785 2010-05-30 17:57:07Z cs $ + * This Revision: $Id$ */ #ifndef __usbconfig_h_included__ diff --git a/firmware/usbdrv/usbdrv.c b/firmware/usbdrv/usbdrv.c index 21ed554..5594407 100755 --- a/firmware/usbdrv/usbdrv.c +++ b/firmware/usbdrv/usbdrv.c @@ -5,7 +5,7 @@ * Tabsize: 4 * Copyright: (c) 2005 by OBJECTIVE DEVELOPMENT Software GmbH * License: GNU GPL v2 (see License.txt), GNU GPL v3 or proprietary (CommercialLicense.txt) - * This Revision: $Id: usbdrv.c 791 2010-07-15 15:56:13Z cs $ + * This Revision: $Id$ */ #include "usbportability.h" @@ -67,7 +67,7 @@ optimizing hints: #if USB_CFG_DESCR_PROPS_STRING_0 == 0 #undef USB_CFG_DESCR_PROPS_STRING_0 #define USB_CFG_DESCR_PROPS_STRING_0 sizeof(usbDescriptorString0) -PROGMEM char usbDescriptorString0[] = { /* language descriptor */ +PROGMEM const char usbDescriptorString0[] = { /* language descriptor */ 4, /* sizeof(usbDescriptorString0): length of descriptor in bytes */ 3, /* descriptor type */ 0x09, 0x04, /* language index (0x0409 = US-English) */ @@ -77,7 +77,7 @@ PROGMEM char usbDescriptorString0[] = { /* language descriptor */ #if USB_CFG_DESCR_PROPS_STRING_VENDOR == 0 && USB_CFG_VENDOR_NAME_LEN #undef USB_CFG_DESCR_PROPS_STRING_VENDOR #define USB_CFG_DESCR_PROPS_STRING_VENDOR sizeof(usbDescriptorStringVendor) -PROGMEM int usbDescriptorStringVendor[] = { +PROGMEM const int usbDescriptorStringVendor[] = { USB_STRING_DESCRIPTOR_HEADER(USB_CFG_VENDOR_NAME_LEN), USB_CFG_VENDOR_NAME }; @@ -86,7 +86,7 @@ PROGMEM int usbDescriptorStringVendor[] = { #if USB_CFG_DESCR_PROPS_STRING_PRODUCT == 0 && USB_CFG_DEVICE_NAME_LEN #undef USB_CFG_DESCR_PROPS_STRING_PRODUCT #define USB_CFG_DESCR_PROPS_STRING_PRODUCT sizeof(usbDescriptorStringDevice) -PROGMEM int usbDescriptorStringDevice[] = { +PROGMEM const int usbDescriptorStringDevice[] = { USB_STRING_DESCRIPTOR_HEADER(USB_CFG_DEVICE_NAME_LEN), USB_CFG_DEVICE_NAME }; @@ -95,7 +95,7 @@ PROGMEM int usbDescriptorStringDevice[] = { #if USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER == 0 && USB_CFG_SERIAL_NUMBER_LEN #undef USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER #define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER sizeof(usbDescriptorStringSerialNumber) -PROGMEM int usbDescriptorStringSerialNumber[] = { +PROGMEM const int usbDescriptorStringSerialNumber[] = { USB_STRING_DESCRIPTOR_HEADER(USB_CFG_SERIAL_NUMBER_LEN), USB_CFG_SERIAL_NUMBER }; @@ -108,7 +108,7 @@ PROGMEM int usbDescriptorStringSerialNumber[] = { #if USB_CFG_DESCR_PROPS_DEVICE == 0 #undef USB_CFG_DESCR_PROPS_DEVICE #define USB_CFG_DESCR_PROPS_DEVICE sizeof(usbDescriptorDevice) -PROGMEM char usbDescriptorDevice[] = { /* USB device descriptor */ +PROGMEM const char usbDescriptorDevice[] = { /* USB device descriptor */ 18, /* sizeof(usbDescriptorDevice): length of descriptor in bytes */ USBDESCR_DEVICE, /* descriptor type */ 0x10, 0x01, /* USB version supported */ @@ -139,7 +139,7 @@ PROGMEM char usbDescriptorDevice[] = { /* USB device descriptor */ #if USB_CFG_DESCR_PROPS_CONFIGURATION == 0 #undef USB_CFG_DESCR_PROPS_CONFIGURATION #define USB_CFG_DESCR_PROPS_CONFIGURATION sizeof(usbDescriptorConfiguration) -PROGMEM char usbDescriptorConfiguration[] = { /* USB configuration descriptor */ +PROGMEM const char usbDescriptorConfiguration[] = { /* USB configuration descriptor */ 9, /* sizeof(usbDescriptorConfiguration): length of descriptor in bytes */ USBDESCR_CONFIG, /* descriptor type */ 18 + 7 * USB_CFG_HAVE_INTRIN_ENDPOINT + 7 * USB_CFG_HAVE_INTRIN_ENDPOINT3 + @@ -361,7 +361,8 @@ uchar flags = USB_FLG_MSGPTR_IS_ROM; */ static inline usbMsgLen_t usbDriverSetup(usbRequest_t *rq) { -uchar len = 0, *dataPtr = usbTxBuf + 9; /* there are 2 bytes free space at the end of the buffer */ +usbMsgLen_t len = 0; +uchar *dataPtr = usbTxBuf + 9; /* there are 2 bytes free space at the end of the buffer */ uchar value = rq->wValue.bytes[0]; #if USB_CFG_IMPLEMENT_HALT uchar index = rq->wIndex.bytes[0]; @@ -557,6 +558,8 @@ uchar isReset = !notResetState; USB_RESET_HOOK(isReset); wasReset = isReset; } +#else + notResetState = notResetState; // avoid compiler warning #endif } diff --git a/firmware/usbdrv/usbdrv.h b/firmware/usbdrv/usbdrv.h index 3a78f30..9bee353 100755 --- a/firmware/usbdrv/usbdrv.h +++ b/firmware/usbdrv/usbdrv.h @@ -5,7 +5,7 @@ * Tabsize: 4 * Copyright: (c) 2005 by OBJECTIVE DEVELOPMENT Software GmbH * License: GNU GPL v2 (see License.txt), GNU GPL v3 or proprietary (CommercialLicense.txt) - * This Revision: $Id: usbdrv.h 793 2010-07-15 15:58:11Z cs $ + * This Revision: $Id$ */ #ifndef __usbdrv_h_included__ @@ -122,7 +122,7 @@ USB messages, even if they address another (low-speed) device on the same bus. /* --------------------------- Module Interface ---------------------------- */ /* ------------------------------------------------------------------------- */ -#define USBDRV_VERSION 20100715 +#define USBDRV_VERSION 20120109 /* This define uniquely identifies a driver version. It is a decimal number * constructed from the driver's release date in the form YYYYMMDD. If the * driver's behavior or interface changes, you can use this constant to @@ -237,7 +237,7 @@ USB_PUBLIC void usbSetInterrupt3(uchar *data, uchar len); #endif /* USB_CFG_HAVE_INTRIN_ENDPOINT */ #if USB_CFG_HID_REPORT_DESCRIPTOR_LENGTH /* simplified interface for backward compatibility */ #define usbHidReportDescriptor usbDescriptorHidReport -/* should be declared as: PROGMEM char usbHidReportDescriptor[]; */ +/* should be declared as: PROGMEM const char usbHidReportDescriptor[]; */ /* If you implement an HID device, you need to provide a report descriptor. * The HID report descriptor syntax is a bit complex. If you understand how * report descriptors are constructed, we recommend that you use the HID @@ -450,43 +450,43 @@ extern volatile schar usbRxLen; #ifndef __ASSEMBLER__ extern #if !(USB_CFG_DESCR_PROPS_DEVICE & USB_PROP_IS_RAM) -PROGMEM +PROGMEM const #endif char usbDescriptorDevice[]; extern #if !(USB_CFG_DESCR_PROPS_CONFIGURATION & USB_PROP_IS_RAM) -PROGMEM +PROGMEM const #endif char usbDescriptorConfiguration[]; extern #if !(USB_CFG_DESCR_PROPS_HID_REPORT & USB_PROP_IS_RAM) -PROGMEM +PROGMEM const #endif char usbDescriptorHidReport[]; extern #if !(USB_CFG_DESCR_PROPS_STRING_0 & USB_PROP_IS_RAM) -PROGMEM +PROGMEM const #endif char usbDescriptorString0[]; extern #if !(USB_CFG_DESCR_PROPS_STRING_VENDOR & USB_PROP_IS_RAM) -PROGMEM +PROGMEM const #endif int usbDescriptorStringVendor[]; extern #if !(USB_CFG_DESCR_PROPS_STRING_PRODUCT & USB_PROP_IS_RAM) -PROGMEM +PROGMEM const #endif int usbDescriptorStringDevice[]; extern #if !(USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER & USB_PROP_IS_RAM) -PROGMEM +PROGMEM const #endif int usbDescriptorStringSerialNumber[]; @@ -719,6 +719,7 @@ typedef struct usbRequest{ #define USBDESCR_HID_PHYS 0x23 //#define USBATTR_BUSPOWER 0x80 // USB 1.1 does not define this value any more +#define USBATTR_BUSPOWER 0 #define USBATTR_SELFPOWER 0x40 #define USBATTR_REMOTEWAKE 0x20 diff --git a/firmware/usbdrv/usbdrvasm.S b/firmware/usbdrv/usbdrvasm.S index 45fcf18..4e6158c 100755 --- a/firmware/usbdrv/usbdrvasm.S +++ b/firmware/usbdrv/usbdrvasm.S @@ -5,7 +5,7 @@ * Tabsize: 4 * Copyright: (c) 2007 by OBJECTIVE DEVELOPMENT Software GmbH * License: GNU GPL v2 (see License.txt), GNU GPL v3 or proprietary (CommercialLicense.txt) - * Revision: $Id: usbdrvasm.S 785 2010-05-30 17:57:07Z cs $ + * Revision: $Id$ */ /* diff --git a/firmware/usbdrv/usbdrvasm12.inc b/firmware/usbdrv/usbdrvasm12.inc index c116758..cb74ceb 100755 --- a/firmware/usbdrv/usbdrvasm12.inc +++ b/firmware/usbdrv/usbdrvasm12.inc @@ -5,7 +5,7 @@ * Tabsize: 4 * Copyright: (c) 2007 by OBJECTIVE DEVELOPMENT Software GmbH * License: GNU GPL v2 (see License.txt), GNU GPL v3 or proprietary (CommercialLicense.txt) - * This Revision: $Id: usbdrvasm12.inc 740 2009-04-13 18:23:31Z cs $ + * This Revision: $Id$ */ /* Do not link this file! Link usbdrvasm.S instead, which includes the diff --git a/firmware/usbdrv/usbdrvasm128.inc b/firmware/usbdrv/usbdrvasm128.inc index bcd6621..122cc75 100755 --- a/firmware/usbdrv/usbdrvasm128.inc +++ b/firmware/usbdrv/usbdrvasm128.inc @@ -5,7 +5,7 @@ * Tabsize: 4 * Copyright: (c) 2008 by OBJECTIVE DEVELOPMENT Software GmbH * License: GNU GPL v2 (see License.txt), GNU GPL v3 or proprietary (CommercialLicense.txt) - * This Revision: $Id: usbdrvasm128.inc 758 2009-08-06 10:12:54Z cs $ + * This Revision: $Id$ */ /* Do not link this file! Link usbdrvasm.S instead, which includes the diff --git a/firmware/usbdrv/usbdrvasm15.inc b/firmware/usbdrv/usbdrvasm15.inc index 401b7f8..ce10391 100755 --- a/firmware/usbdrv/usbdrvasm15.inc +++ b/firmware/usbdrv/usbdrvasm15.inc @@ -5,7 +5,7 @@ * Tabsize: 4 * Copyright: (c) 2007 by OBJECTIVE DEVELOPMENT Software GmbH * License: GNU GPL v2 (see License.txt), GNU GPL v3 or proprietary (CommercialLicense.txt) - * Revision: $Id: usbdrvasm15.inc 740 2009-04-13 18:23:31Z cs $ + * Revision: $Id$ */ /* Do not link this file! Link usbdrvasm.S instead, which includes the diff --git a/firmware/usbdrv/usbdrvasm16.inc b/firmware/usbdrv/usbdrvasm16.inc index 207b6e4..4c00faa 100755 --- a/firmware/usbdrv/usbdrvasm16.inc +++ b/firmware/usbdrv/usbdrvasm16.inc @@ -5,7 +5,7 @@ * Tabsize: 4 * Copyright: (c) 2007 by OBJECTIVE DEVELOPMENT Software GmbH * License: GNU GPL v2 (see License.txt), GNU GPL v3 or proprietary (CommercialLicense.txt) - * Revision: $Id: usbdrvasm16.inc 760 2009-08-09 18:59:43Z cs $ + * Revision: $Id$ */ /* Do not link this file! Link usbdrvasm.S instead, which includes the diff --git a/firmware/usbdrv/usbdrvasm165.inc b/firmware/usbdrv/usbdrvasm165.inc index 79b3c61..d8a95ba 100755 --- a/firmware/usbdrv/usbdrvasm165.inc +++ b/firmware/usbdrv/usbdrvasm165.inc @@ -5,7 +5,7 @@ * Tabsize: 4 * Copyright: (c) 2007 by OBJECTIVE DEVELOPMENT Software GmbH * License: GNU GPL v2 (see License.txt), GNU GPL v3 or proprietary (CommercialLicense.txt) - * Revision: $Id: usbdrvasm165.inc 740 2009-04-13 18:23:31Z cs $ + * Revision: $Id$ */ /* Do not link this file! Link usbdrvasm.S instead, which includes the diff --git a/firmware/usbdrv/usbdrvasm18-crc.inc b/firmware/usbdrv/usbdrvasm18-crc.inc index f83347d..dde09da 100755 --- a/firmware/usbdrv/usbdrvasm18-crc.inc +++ b/firmware/usbdrv/usbdrvasm18-crc.inc @@ -5,7 +5,7 @@ * Tabsize: 4 * Copyright: (c) 2008 by Lukas Schrittwieser and OBJECTIVE DEVELOPMENT Software GmbH * License: GNU GPL v2 (see License.txt), GNU GPL v3 or proprietary (CommercialLicense.txt) - * Revision: $Id: usbdrvasm18-crc.inc 740 2009-04-13 18:23:31Z cs $ + * Revision: $Id$ */ /* Do not link this file! Link usbdrvasm.S instead, which includes the diff --git a/firmware/usbdrv/usbdrvasm20.inc b/firmware/usbdrv/usbdrvasm20.inc index 303abaf..0c74679 100755 --- a/firmware/usbdrv/usbdrvasm20.inc +++ b/firmware/usbdrv/usbdrvasm20.inc @@ -6,7 +6,7 @@ * Tabsize: 4 * Copyright: (c) 2008 by Jeroen Benschop and OBJECTIVE DEVELOPMENT Software GmbH * License: GNU GPL v2 (see License.txt), GNU GPL v3 or proprietary (CommercialLicense.txt) - * Revision: $Id: usbdrvasm20.inc 740 2009-04-13 18:23:31Z cs $ + * Revision: $Id$ */ /* Do not link this file! Link usbdrvasm.S instead, which includes the diff --git a/firmware/usbdrv/usbportability.h b/firmware/usbdrv/usbportability.h index 476184d..a1ea93b 100755 --- a/firmware/usbdrv/usbportability.h +++ b/firmware/usbdrv/usbportability.h @@ -5,7 +5,7 @@ * Tabsize: 4 * Copyright: (c) 2008 by OBJECTIVE DEVELOPMENT Software GmbH * License: GNU GPL v2 (see License.txt), GNU GPL v3 or proprietary (CommercialLicense.txt) - * This Revision: $Id: usbportability.h 785 2010-05-30 17:57:07Z cs $ + * This Revision: $Id$ */ /* From 9751bc57db91402d98d6711b50b3aa498d97784e Mon Sep 17 00:00:00 2001 From: Lucas Teske Date: Sat, 21 Jun 2014 21:39:35 -0300 Subject: [PATCH 2/2] Updated stuff to work in new AVR-GCC --- README | 2 +- firmware/main.c | 2 +- firmware/main.hex | 270 +++++++++++++------------- firmware/ppm.c | 8 +- firmware/usbdrv/Changelog.txt | 10 + firmware/usbdrv/USB-IDs-for-free.txt | 16 +- firmware/usbdrv/USBID-License.txt | 143 ++++++++++++++ firmware/usbdrv/iarcompat.h | 70 +++++++ firmware/usbdrv/oddebug.c | 2 +- firmware/usbdrv/oddebug.h | 2 +- firmware/usbdrv/usbconfig-prototype.h | 2 +- firmware/usbdrv/usbdrv.c | 19 +- firmware/usbdrv/usbdrv.h | 21 +- firmware/usbdrv/usbdrvasm.S | 2 +- firmware/usbdrv/usbdrvasm12.inc | 2 +- firmware/usbdrv/usbdrvasm128.inc | 2 +- firmware/usbdrv/usbdrvasm15.inc | 2 +- firmware/usbdrv/usbdrvasm16.inc | 2 +- firmware/usbdrv/usbdrvasm165.inc | 2 +- firmware/usbdrv/usbdrvasm18-crc.inc | 2 +- firmware/usbdrv/usbdrvasm20.inc | 2 +- firmware/usbdrv/usbportability.h | 2 +- 22 files changed, 409 insertions(+), 176 deletions(-) create mode 100755 firmware/usbdrv/USBID-License.txt create mode 100755 firmware/usbdrv/iarcompat.h diff --git a/README b/README index 87f4c67..38fae0b 100644 --- a/README +++ b/README @@ -15,5 +15,5 @@ http://thomaspfeifer.net/usbasp_to_ppm2usb_mod.htm http://thomaspfeifer.net/usbasp_to_ppm2usb_mod_en.htm - +(21/06/2014) - Updated to work in new AVR-GCC diff --git a/firmware/main.c b/firmware/main.c index 8401cd9..63749b0 100755 --- a/firmware/main.c +++ b/firmware/main.c @@ -35,7 +35,7 @@ /* ----------------------------- USB interface ----------------------------- */ /* ------------------------------------------------------------------------- */ -PROGMEM char usbHidReportDescriptor[50] = { /* USB report descriptor, size must match usbconfig.h */ +PROGMEM const char usbHidReportDescriptor[50] = { /* USB report descriptor, size must match usbconfig.h */ 0x05, 0x01, // USAGE_PAGE (Generic Desktop) 0x15, 0x00, // LOGICAL_MINIMUM (0) 0x26, 0xff, 0x00, // LOGICAL_MAXIMUM (255) diff --git a/firmware/main.hex b/firmware/main.hex index ebd887c..3423bf4 100644 --- a/firmware/main.hex +++ b/firmware/main.hex @@ -1,142 +1,140 @@ -:1000000089C001C2A2C0A1C0A0C057C336C39DC051 +:1000000089C0FEC1A2C0A1C0A0C053C333C39DC05C :100010009CC09BC09AC099C098C097C096C095C01C -:1000200094C093C092C004030904240374006800C0 -:100030006F006D006100730070006600650069006C -:100040006600650072002E006E00650074003403C7 -:10005000500050004D0032005500530042002D006A -:10006000740068006F006D0061007300700066002E -:10007000650069006600650072002E006E00650074 -:1000800074002C03740068006F006D006100730041 -:1000900070006600650069006600650072002E0051 -:1000A0006E00650074003A0030003000310012012B -:1000B000100100000008C016DB2700010102030147 -:1000C00009022200010100800A0904000001030066 -:1000D0000000092101010001223200070581030807 -:1000E000000A0501150026FF0075080904A1010991 +:1000200094C093C092C009022200010100800A0915 +:100030000400000103000000092101010001223237 +:10004000000705810308000A1201100100000008E2 +:10005000C016DB270001010203012C0374006800B5 +:100060006F006D006100730070006600650069003C +:100070006600650072002E006E00650074003A0094 +:100080003000300031003403500050004D00320089 +:100090005500530042002D00740068006F006D0091 +:1000A000610073007000660065006900660065000D +:1000B00072002E006E006500740024037400680056 +:1000C0006F006D00610073007000660065006900DC +:1000D0006600650072002E006E0065007400040367 +:1000E00009040501150026FF0075080904A101098E :1000F00001A1000930093195028182C0A1000932B5 :10010000093395028182C0093409350936093795CA :10011000048182C011241FBECFE5D4E0DEBFCDBF75 -:1001200010E0A0E6B0E0E6EBF8E002C005900D922A +:1001200010E0A0E6B0E0E0EAF8E002C005900D9231 :10013000A436B107D9F710E0A4E6B0E001C01D92E3 -:10014000A73BB107E1F756D3B4C35ACF85B7826056 -:1001500085BF8BB780648BBF8BE480937A008AE580 -:100160008093790008951F93CF93DF9390918A0035 -:10017000935097FDB2C020918700809186008D3208 -:1001800009F0A9C0983009F0A6C0CCE0D0E0C21BAD -:10019000D109C257DF4F83EC80936E008AE58093CC -:1001A0006000109264008881807621F0CE01FFD239 -:1001B000282F88C09A81109277008981882331F492 -:1001C0001092780087E790E022E078C0853019F43B -:1001D00090938B0070C0863009F058C08B818130BD -:1001E00041F48EEA90E0909389008093880022E1A8 -:1001F00049C0823041F480EC90E090938900809374 -:10020000880022E23FC0833041F5992341F486E221 -:1002100090E0909389008093880024E033C091306F -:1002200041F48AE290E0909389008093880024E270 -:1002300029C0923041F48EE490E09093890080933D -:10024000880024E31FC09330E1F482E890E09093AB -:100250008900809388002CE215C0813241F482ED40 -:1002600090E0909389008093880029E00BC082324F -:1002700041F482EE90E0909389008093880022E31D -:1002800001C020E080E4809364001CC0883019F431 -:100290008DE890E009C0893019F490938D000BC06F -:1002A0008A3021F487E790E021E008C08B3019F410 -:1002B0008BE480937A0087E790E020E090938900B8 -:1002C000809388008F81882321F48E81821708F41F -:1002D000282F2093610010928A008091600084FF93 -:1002E00049C0809161008F3F09F444C0182F8930C4 -:1002F00008F018E0811B8093610080916E0098E8FF -:10030000892780936E00112341F12091880030915C -:1003100089008091640086FF0DC0AFE6B0E080E008 -:1003200090E0F901E80FF91FE491ED930196181799 -:10033000C1F708C0912FD901EFE6F0E08D918193CC -:100340009150E1F71150812F90E01F5F0196820FCD -:10035000931F90938900809388008FE690E0612F2F -:100360004ED0612F6C5F6C3019F08FEF809361007D -:100370006093600094E180B3847131F49150D9F7B7 -:1003800010928B0010928500DF91CF911F910895FC -:100390001F93DC01162F8091790084FF07C08091A4 -:1003A0007A0098E8892780937A0003C08AE58093D1 -:1003B0007900912FEBE7F0E08D9181939150191620 -:1003C000DCF38BE790E0612F1AD01C5F109379006B -:1003D0001F910895A82FB92F80E090E041E050EAE6 -:1003E000609530E009C02D9182279795879510F090 -:1003F00084279527305EC8F36F5FA8F30895EADF7E -:100400008D939D930895CF93CFB7CF93C395849B3E -:10041000E9F7849B09C0849B07C0849B05C0849B2B -:1004200003C0849B01C0A3C0DF93C0918700DD2778 -:10043000C257DF4F849B02C0DF91EBCF2F930F9306 -:100440001F9300B32FEF04FB20F94F933F9310B39A -:100450004FEF012704FB21F93BE031C04E7F012F14 -:1004600010B3216028C0102F4D7F2260000000B320 -:1004700029C04B7F2460012F000010B32BC010B3A4 -:10048000477F28602AC04F7E00B320612CC04F7D7B -:1004900010B320622FC04F7B00B3206432C04227CC -:1004A00000B349934FEF0000102714FB20F910B35D -:1004B0001471C9F1297F91F2012704FB21F900B3DE -:1004C000237F89F2315058F1102714FB22F910B321 -:1004D000277E79F2012704FB23F92F7C81F200B3F8 -:1004E000102714FB24F92F7971F200C010B30127F3 -:1004F00004FB25F92F7359F200C000B3102714FB39 -:1005000026F9223040F200C010B3012704FB27F97E -:10051000243028F64F77206810B30000F9CF10E49C -:100520001ABF002719C03B503195C31BD04010E4BF -:100530001ABF0881033CF9F00B34E9F020918500E3 -:100540001981110F1213EDCF4A81441F093641F171 -:100550000D3211F0013E29F700938C003F914F912D -:100560001F910F912F91DF91CAB7C6FD4FCFCF9149 -:10057000CFBFCF91189520918C00222379F3109151 -:100580008A00112369F534306AF130938A00209390 -:100590008600109187003BE0311B3093870022C01A -:1005A00000918A000130E4F40AE54F7049F430917B -:1005B000600034FD19C000936000CEE6D0E018C0A2 -:1005C0003091790034FD10C000937900CAE7D0E083 -:1005D0000FC02795A8F45150A9F4220F0000F9CFBD -:1005E0004AE503C042ED01C0432FC4E1D0E032E050 -:1005F00011B31461949A11BB02B320E414E15F9328 -:10060000012756E002BB279520F4515021F4220F18 -:10061000F9CF012756E000003B5A02BBD0F22795E4 -:1006200028F4515029F4220F0000F9CF012756E099 -:10063000279502BB20F4515021F4220FF9CF012756 -:1006400056E02991332302BB21F60B7E10918B00DB -:10065000110FC651D04002BB11F01093850010E479 -:100660001ABF006111B31B7E402F4B7E5F9100C00B -:1006700000C002BB11BB42BB71CF1F920F920FB6DD -:100680000F9211242F938F939F93809162009091EA -:1006900063008F5F9F4F19F081E08093B6008FEF6A -:1006A0009FEF90936300809362009F918F912F91B1 -:1006B0000F900FBE0F901F9018951F920F920FB6BC -:1006C0000F9211242F933F938F939F93EF93FF9358 -:1006D00026B537B5205633473BBD2ABD205A3C4886 -:1006E0008091B4009091B5008091B4009091B500D4 -:1006F000281B390B86B597B59093B5008093B4004D -:10070000809162009091630097FD10C0809162001B -:1007100090916300089754F4E0916200F0916300B7 -:10072000EE0FFF1FEC55FF4F318320838091620055 -:100730009091630001969093630080936200FF9113 -:10074000EF919F918F913F912F910F900FBE0F903E -:100750001F90189581E08EBD8EB580688EBD8EB5D8 -:1007600080648EBD80E389BF1092B6008FEF9FEF4B -:1007700090936300809362000895FC01EE0FFF1FC9 -:10078000EC55FF4F808191812EE2803E920710F45C -:1007900080EE9EE2805E9E426FE270E076D0CB01FA -:1007A0006F3F710519F010F08FEF90E00895FC0194 -:1007B000808180768032E1F48181813041F485E668 -:1007C00090E0909389008093880088E008958230BB -:1007D00041F48DE690E0909389008093880081E059 -:1007E00008958A3029F4838180936D0080E0089514 -:1007F00080E00895FF920F931F93CF93DF932EE035 -:1008000088E190E00FB6F894A89581BD0FBE21BD98 -:10081000A1DF9CDC8C9A20E048EB5BE004C0A8954B -:10082000CA010197F1F72150D1F78C98789481E0B3 -:100830008093B60028C0FF24F394A89594DC80919F -:10084000B6008823D1F31092B60005E610E0C0E0B0 -:10085000D0E0CE0192DF982FF8018081891719F03E -:100860009083FF24F39421960F5F1F4FC830D1056A -:1008700081F7FF2011F38091790084FFDCCF85E6BA -:1008800090E068E085DDFF24D8CFAA1BBB1B51E1B7 -:1008900007C0AA1FBB1FA617B70710F0A61BB70BF0 -:1008A000881F991F5A95A9F780959095BC01CD0195 -:0608B0000895F894FFCF4B -:0408B6005AFFFFFFE7 +:10014000A73BB107E1F750D3A9C35ACFCF93C62F2E +:100150002091790024FF07C020917A0038E82327F6 +:1001600020937A0003C02AE520937900DC01EBE7B5 +:10017000F0E09C2F9E0F8D918193892F8E1B181676 +:10018000D4F36C2F8BE790E037D1CC5FC09379002C +:10019000CF910895CF93DF9380918A00835087FD9C +:1001A000B2C090918700209186002D3209F0A9C03D +:1001B000883009F0A6C0CCE0D0E0C91BD109C257F5 +:1001C000DF4F83EC80936E008AE58093610010928C +:1001D00064008881807619F0CE01E5D289C09A81C9 +:1001E000109277008981811106C01092780027E76C +:1001F00030E082E079C0853019F490938B0071C0B3 +:10020000863009F058C08B81813041F488E490E059 +:10021000909389008093880082E149C0823041F444 +:1002200086E290E0909389008093880082E23FC04C +:10023000833041F5911108C08EED90E090938900D4 +:100240008093880084E033C0913041F48AEB90E0E1 +:10025000909389008093880084E229C0923041F411 +:1002600086E890E0909389008093880084E31FC023 +:100270009330E1F48AE590E09093890080938800C0 +:100280008CE215C0813241F488E390E090938900BC +:100290008093880089E00BC0823241F482EE90E0C6 +:1002A000909389008093880082E301C080E090E40D +:1002B000909364001DC0883069F0893019F49093E0 +:1002C0008D000FC08A3049F08B3059F48BE4809355 +:1002D0007A0007C02DE830E002C027E730E081E077 +:1002E00003C027E730E080E0309389002093880046 +:1002F0009F81911104C09E81981708F4892F8093E3 +:10030000600010928A008091610084FF46C0809155 +:1003100060008F3F09F441C0C82F893008F0C8E061 +:100320008C1B8093600080916E0098E889278093F1 +:100330006E00CC2331F120918800309189008091AA +:10034000640086FF0BC0AFE6B0E0F9018C2F8A0F86 +:1003500094919D9331968A13FBCF09C0D901EFE6A2 +:10036000F0E08C2F8E0F9D9191938E13FCCF8FEF29 +:100370008C0F90E00196820F931F909389008093D9 +:1003800088006C2F8FE690E037D0CC5FCC3019F02E +:100390008FEF80936000C093610084E190B394710B +:1003A00031F48150D9F710928B0010928500DF91C3 +:1003B000CF91089585B7826085BF8BB780648BBF6E +:1003C0008BE480937A008AE5809379000895A82FC2 +:1003D000B92F80E090E041E050EA609530E009C03C +:1003E0002D9182279795879510F084279527305E69 +:1003F000C8F36F5FA8F30895EADF8D939D93089586 +:10040000CF93CFB7CF93C395849BE9F7849B09C063 +:10041000849B07C0849B05C0849B03C0849B01C050 +:10042000A3C0DF93C0918700DD27C257DF4F849BB5 +:1004300002C0DF91EBCF2F930F931F9300B32FEFE9 +:1004400004FB20F94F933F9310B34FEF012704FBB8 +:1004500021F93BE031C04E7F012F10B3216028C04D +:10046000102F4D7F2260000000B329C04B7F246015 +:10047000012F000010B32BC010B3477F28602AC0A3 +:100480004F7E00B320612CC04F7D10B320622FC07F +:100490004F7B00B3206432C0422700B349934FEF33 +:1004A0000000102714FB20F910B31471C9F1297F43 +:1004B00091F2012704FB21F900B3237F89F2315027 +:1004C00058F1102714FB22F910B3277E79F2012787 +:1004D00004FB23F92F7C81F200B3102714FB24F9CD +:1004E0002F7971F200C010B3012704FB25F92F7397 +:1004F00059F200C000B3102714FB26F9223040F255 +:1005000000C010B3012704FB27F9243028F64F77E9 +:10051000206810B30000F9CF10E41ABF002719C0FB +:100520003B503195C31BD04010E41ABF0881033CF7 +:10053000F9F00B34E9F0209185001981110F1213A5 +:10054000EDCF4A81441F093641F10D3211F0013ED1 +:1005500029F700938C003F914F911F910F912F919C +:10056000DF91CAB7C6FD4FCFCF91CFBFCF911895BE +:1005700020918C00222379F310918A00112369F5D0 +:1005800034306AF130938A002093860010918700FE +:100590003BE0311B3093870022C000918A0001307C +:1005A000E4F40AE54F7049F43091610034FD19C05C +:1005B00000936100CEE6D0E018C03091790034FDA0 +:1005C00010C000937900CAE7D0E00FC02795A8F4C7 +:1005D0005150A9F4220F0000F9CF4AE503C042EDC3 +:1005E00001C0432FC4E1D0E032E011B31461949A0A +:1005F00011BB02B320E414E15F93012756E002BB74 +:10060000279520F4515021F4220FF9CF012756E00D +:1006100000003B5A02BBD0F2279528F4515029F430 +:10062000220F0000F9CF012756E0279502BB20F4E6 +:10063000515021F4220FF9CF012756E0299133239D +:1006400002BB21F60B7E10918B00110FC651D040DA +:1006500002BB11F01093850010E41ABF006111B3C2 +:100660001B7E402F4B7E5F9100C000C002BB11BBC0 +:1006700042BB71CF1F920F920FB60F9211242F938E +:100680008F939F938091620090916300019619F07F +:1006900081E08093B6008FEF9FEF9093630080938B +:1006A00062009F918F912F910F900FBE0F901F901E +:1006B00018951F920F920FB60F9211242F933F930C +:1006C0008F939F93EF93FF9386B597B59C01205628 +:1006D00033473BBD2ABD2091B4003091B500209135 +:1006E000B4003091B500821B930B26B537B530931B +:1006F000B5002093B400209162003091630037FD73 +:1007000011C020916200309163002830310554F40B +:10071000E0916200F0916300EE0FFF1FEC55FF4F78 +:100720009183808380916200909163000196909301 +:10073000630080936200FF91EF919F918F913F91B1 +:100740002F910F900FBE0F901F90189581E08EBDD6 +:100750008EB580688EBD8EB580648EBD80E389BF06 +:100760001092B6008FEF9FEF90936300809362002A +:100770000895FC01EE0FFF1FEC55FF4F8081918122 +:10078000803E2EE2920710F480EE9EE2805E9E4252 +:100790006FE270E06FD06F3F710519F010F06FEFEE +:1007A00070E0862F0895FC01808180768032D1F43C +:1007B0008181813041F486E690E0909389008093B6 +:1007C000880088E00895823041F485E690E09093B7 +:1007D00089008093880081E008958A3019F483812C +:1007E0008093650080E008952EE088E190E00FB6E8 +:1007F000F894A89581BD0FBE21BDA8DFDBDD8C9AE2 +:1008000080E0815041F0A895E7EBFBE03197F1F7EC +:1008100000C00000F6CF8C98789481E08093B600F9 +:10082000F12CA895B7DC8091B6008823D1F3109203 +:10083000B60006E610E0C0E0D0E0CE019ADFF80195 +:100840009081981719F08083FF24F39421960F5F0D +:100850001F4FC830D10589F7FF2019F38091790027 +:1008600084FD03C0FF24F394DCCF68E086E690E0CB +:100870006DDCD6CFAA1BBB1B51E107C0AA1FBB1F53 +:10088000A617B70710F0A61BB70B881F991F5A951C +:10089000A9F780959095BC01CD010895F894FFCFFC +:0408A000FF5AFFFFFD :00000001FF diff --git a/firmware/ppm.c b/firmware/ppm.c index 6766d50..146f15d 100755 --- a/firmware/ppm.c +++ b/firmware/ppm.c @@ -22,8 +22,8 @@ //========================================================================= #include +#include #include "ppm.h" -#include #define PPM_TCNT TCNT1 @@ -41,7 +41,8 @@ volatile unsigned int timeOld; /** * Interrupt: Compare 1A match = timeout */ -SIGNAL (SIG_OUTPUT_COMPARE1A) { +//SIGNAL (SIG_OUTPUT_COMPARE1A) { +ISR(TIMER1_COMPA_vect) { if (chan!=-1) { ppmNewData=1; } @@ -51,7 +52,8 @@ SIGNAL (SIG_OUTPUT_COMPARE1A) { /** * Interrupt: ICP-Edge detect */ -SIGNAL (SIG_INPUT_CAPTURE1) { +//SIGNAL (SIG_INPUT_CAPTURE1) { +ISR(TIMER1_CAPT_vect) { unsigned int time=ICR1; OCR1A=time+T_OUT; if (time>timeOld) { diff --git a/firmware/usbdrv/Changelog.txt b/firmware/usbdrv/Changelog.txt index 5c6354a..5fae8f3 100755 --- a/firmware/usbdrv/Changelog.txt +++ b/firmware/usbdrv/Changelog.txt @@ -306,3 +306,13 @@ Scroll down to the bottom to see the most recent changes. endpoint now. * Release 2010-07-15 + + - Fixed bug in usbDriverSetup() which prevented descriptor sizes above 255 + bytes. + - Avoid a compiler warning for unused parameter in usbHandleResetHook() when + compiler option -Wextra is enabled. + - Fixed wrong hex value for some IDs in USB-IDs-for-free.txt. + - Keep a define for USBATTR_BUSPOWER, although the flag does not exist + in USB 1.1 any more. Set it to 0. This is for backward compatibility. + +* Release 2012-01-09 diff --git a/firmware/usbdrv/USB-IDs-for-free.txt b/firmware/usbdrv/USB-IDs-for-free.txt index 2f4d59a..d46517d 100755 --- a/firmware/usbdrv/USB-IDs-for-free.txt +++ b/firmware/usbdrv/USB-IDs-for-free.txt @@ -86,8 +86,9 @@ If you use one of the IDs listed below, your device and host-side software must conform to these rules: (1) The USB device MUST provide a textual representation of the serial -number. The serial number string MUST be available at least in USB language -0x0409 (English/US). +number, unless ONLY the operating system's default class driver is used. +The serial number string MUST be available at least in USB language 0x0409 +(English/US). (2) The serial number MUST start with either an Internet domain name (e.g. "mycompany.com") registered and owned by you, or an e-mail address under your @@ -108,6 +109,11 @@ driver for Vendor Class devices is needed, this driver must be libusb or libusb-win32 (see http://libusb.org/ and http://libusb-win32.sourceforge.net/). +(7) If ONLY the operating system's default class driver is used, e.g. for +mice, keyboards, joysticks, CDC or MIDI devices and no discrimination by an +application is needed, the serial number may be omitted. + + Table if IDs for discrimination by serial number string: PID dec (hex) | VID dec (hex) | Description of use @@ -121,11 +127,11 @@ PID dec (hex) | VID dec (hex) | Description of use ---------------+---------------+------------------------------------------- 10203 (0x27db) | 5824 (0x16c0) | For USB Keyboards ---------------+---------------+------------------------------------------- -10204 (0x27db) | 5824 (0x16c0) | For USB Joysticks +10204 (0x27dc) | 5824 (0x16c0) | For USB Joysticks ---------------+---------------+------------------------------------------- -10205 (0x27dc) | 5824 (0x16c0) | For CDC-ACM class devices (modems) +10205 (0x27dd) | 5824 (0x16c0) | For CDC-ACM class devices (modems) ---------------+---------------+------------------------------------------- -10206 (0x27dd) | 5824 (0x16c0) | For MIDI class devices +10206 (0x27de) | 5824 (0x16c0) | For MIDI class devices ---------------+---------------+------------------------------------------- diff --git a/firmware/usbdrv/USBID-License.txt b/firmware/usbdrv/USBID-License.txt new file mode 100755 index 0000000..4739a57 --- /dev/null +++ b/firmware/usbdrv/USBID-License.txt @@ -0,0 +1,143 @@ +Royalty-Free Non-Exclusive License USB Product-ID +================================================= + +Version 2006-06-19 + +OBJECTIVE DEVELOPMENT Software GmbH hereby grants you the non-exclusive +right to use three USB.org vendor-ID (VID) / product-ID (PID) pairs with +products based on Objective Development's firmware-only USB driver for +Atmel AVR microcontrollers: + + * VID = 5824 (=0x16c0) / PID = 1500 (=0x5dc) for devices implementing no + USB device class (vendor-class devices with USB class = 0xff). Devices + using this pair will be referred to as "VENDOR CLASS" devices. + + * VID = 5824 (=0x16c0) / PID = 1503 (=0x5df) for HID class devices + (excluding mice and keyboards). Devices using this pair will be referred + to as "HID CLASS" devices. + + * VID = 5824 (=0x16c0) / PID = 1505 (=0x5e1) for CDC class modem devices + Devices using this pair will be referred to as "CDC-ACM CLASS" devices. + +Since the granted right is non-exclusive, the same VID/PID pairs may be +used by many companies and individuals for different products. To avoid +conflicts, your device and host driver software MUST adhere to the rules +outlined below. + +OBJECTIVE DEVELOPMENT Software GmbH has licensed these VID/PID pairs from +Wouter van Ooijen (see www.voti.nl), who has licensed the VID from the USB +Implementers Forum, Inc. (see www.usb.org). The VID is registered for the +company name "Van Ooijen Technische Informatica". + + +RULES AND RESTRICTIONS +====================== + +(1) The USB device MUST provide a textual representation of the +manufacturer and product identification. The manufacturer identification +MUST be available at least in USB language 0x0409 (English/US). + +(2) The textual manufacturer identification MUST contain either an Internet +domain name (e.g. "mycompany.com") registered and owned by you, or an +e-mail address under your control (e.g. "myname@gmx.net"). You can embed +the domain name or e-mail address in any string you like, e.g. "Objective +Development http://www.obdev.at/avrusb/". + +(3) You are responsible for retaining ownership of the domain or e-mail +address for as long as any of your products are in use. + +(4) You may choose any string for the textual product identification, as +long as this string is unique within the scope of your textual manufacturer +identification. + +(5) Matching of device-specific drivers MUST be based on the textual +manufacturer and product identification in addition to the usual VID/PID +matching. This means that operating system features which are based on +VID/PID matching only (e.g. Windows kernel level drivers, automatic actions +when the device is plugged in etc) MUST NOT be used. The driver matching +MUST be a comparison of the entire strings, NOT a sub-string match. For +CDC-ACM CLASS devices, a generic class driver should be used and the +matching is based on the USB device class. + +(6) The extent to which VID/PID matching is allowed for non device-specific +drivers or features depends on the operating system and particular VID/PID +pair used: + + * Mac OS X, Linux, FreeBSD and other Unixes: No VID/PID matching is + required and hence no VID/PID-only matching is allowed at all. + + * Windows: The operating system performs VID/PID matching for the kernel + level driver. You are REQUIRED to use libusb-win32 (see + http://libusb-win32.sourceforge.net/) as the kernel level driver for + VENDOR CLASS devices. HID CLASS devices all use the generic HID class + driver shipped with Windows, except mice and keyboards. You therefore + MUST NOT use any of the shared VID/PID pairs for mice or keyboards. + CDC-ACM CLASS devices require a ".inf" file which matches on the VID/PID + pair. This ".inf" file MUST load the "usbser" driver to configure the + device as modem (COM-port). + +(7) OBJECTIVE DEVELOPMENT Software GmbH disclaims all liability for any +problems which are caused by the shared use of these VID/PID pairs. You +have been warned that the sharing of VID/PID pairs may cause problems. If +you want to avoid them, get your own VID/PID pair for exclusive use. + + +HOW TO IMPLEMENT THESE RULES +============================ + +The following rules are for VENDOR CLASS and HID CLASS devices. CDC-ACM +CLASS devices use the operating system's class driver and don't need a +custom driver. + +The host driver MUST iterate over all devices with the given VID/PID +numbers in their device descriptors and query the string representation for +the manufacturer name in USB language 0x0409 (English/US). It MUST compare +the ENTIRE string with your textual manufacturer identification chosen in +(2) above. A substring search for your domain or e-mail address is NOT +acceptable. The driver MUST NOT touch the device (other than querying the +descriptors) unless the strings match. + +For all USB devices with matching VID/PID and textual manufacturer +identification, the host driver must query the textual product +identification and string-compare it with the name of the product it can +control. It may only initialize the device if the product matches exactly. + +Objective Development provides examples for these matching rules with the +"PowerSwitch" project (using libusb) and with the "Automator" project +(using Windows calls on Windows and libusb on Unix). + + +Technical Notes: +================ + +Sharing the same VID/PID pair among devices is possible as long as ALL +drivers which match the VID/PID also perform matching on the textual +identification strings. This is easy on all operating systems except +Windows, since Windows establishes a static connection between the VID/PID +pair and a kernel level driver. All devices with the same VID/PID pair must +therefore use THE SAME kernel level driver. + +We therefore demand that you use libusb-win32 for VENDOR CLASS devices. +This is a generic kernel level driver which allows all types of USB access +for user space applications. This is only a partial solution of the +problem, though, because different device drivers may come with different +versions of libusb-win32 and they may not work with the libusb version of +the respective other driver. You are therefore encouraged to test your +driver against a broad range of libusb-win32 versions. Do not use new +features in new versions, or check for their existence before you use them. +When a new libusb-win32 becomes available, make sure that your driver is +compatible with it. + +For HID CLASS devices it is necessary that all those devices bind to the +same kernel driver: Microsoft's generic USB HID driver. This is true for +all HID devices except those with a specialized driver. Currently, the only +HIDs with specialized drivers are mice and keyboards. You therefore MUST +NOT use a shared VID/PID with mouse and keyboard devices. + +Sharing the same VID/PID among different products is unusual and probably +violates the USB specification. If you do it, you do it at your own risk. + +To avoid possible incompatibilities, we highly recommend that you get your +own VID/PID pair if you intend to sell your product. Objective +Development's commercial licenses for AVR-USB include a PID for +unrestricted exclusive use. diff --git a/firmware/usbdrv/iarcompat.h b/firmware/usbdrv/iarcompat.h new file mode 100755 index 0000000..443d3ff --- /dev/null +++ b/firmware/usbdrv/iarcompat.h @@ -0,0 +1,70 @@ +/* Name: iarcompat.h + * Project: AVR USB driver + * Author: Christian Starkjohann + * Creation Date: 2006-03-01 + * Tabsize: 4 + * Copyright: (c) 2006 by OBJECTIVE DEVELOPMENT Software GmbH + * License: Proprietary, free under certain conditions. See Documentation. + * This Revision: $Id: iarcompat.h 174 2006-03-23 10:09:01Z cs $ + */ + +/* +General Description: +This header is included when we compile with the IAR C-compiler and assembler. +It defines macros for cross compatibility between gcc and IAR-cc. + +Thanks to Oleg Semyonov for his help with the IAR tools port! +*/ + +#ifndef __iarcompat_h_INCLUDED__ +#define __iarcompat_h_INCLUDED__ + +#if defined __IAR_SYSTEMS_ICC__ || defined __IAR_SYSTEMS_ASM__ + +/* Enable bit definitions */ +#ifndef ENABLE_BIT_DEFINITIONS +# define ENABLE_BIT_DEFINITIONS 1 +#endif + +/* Include IAR headers */ +#include +#ifndef __IAR_SYSTEMS_ASM__ +# include +#endif + +#define __attribute__(arg) +#define IAR_SECTION(section) @ section + +#ifndef USB_BUFFER_SECTION +# define USB_BUFFER_SECTION "TINY_Z" /* if user has not selected a named section */ +#endif + +#ifdef __IAR_SYSTEMS_ASM__ +# define __ASSEMBLER__ +#endif + +#ifdef __HAS_ELPM__ +# define PROGMEM __farflash +#else +# define PROGMEM __flash +#endif + +#define PRG_RDB(addr) (*(PROGMEM char *)(addr)) + +/* The following definitions are not needed by the driver, but may be of some + * help if you port a gcc based project to IAR. + */ +#define cli() __disable_interrupt() +#define sei() __enable_interrupt() +#define wdt_reset() __watchdog_reset() + +/* Depending on the device you use, you may get problems with the way usbdrv.h + * handles the differences between devices. Since IAR does not use #defines + * for MCU registers, we can't check for the existence of a particular + * register with an #ifdef. If the autodetection mechanism fails, include + * definitions for the required USB_INTR_* macros in your usbconfig.h. See + * usbconfig-prototype.h and usbdrv.h for details. + */ + +#endif /* defined __IAR_SYSTEMS_ICC__ || defined __IAR_SYSTEMS_ASM__ */ +#endif /* __iarcompat_h_INCLUDED__ */ diff --git a/firmware/usbdrv/oddebug.c b/firmware/usbdrv/oddebug.c index 945457c..466e68f 100755 --- a/firmware/usbdrv/oddebug.c +++ b/firmware/usbdrv/oddebug.c @@ -5,7 +5,7 @@ * Tabsize: 4 * Copyright: (c) 2005 by OBJECTIVE DEVELOPMENT Software GmbH * License: GNU GPL v2 (see License.txt), GNU GPL v3 or proprietary (CommercialLicense.txt) - * This Revision: $Id: oddebug.c 692 2008-11-07 15:07:40Z cs $ + * This Revision: $Id$ */ #include "oddebug.h" diff --git a/firmware/usbdrv/oddebug.h b/firmware/usbdrv/oddebug.h index d61309d..c56af1c 100755 --- a/firmware/usbdrv/oddebug.h +++ b/firmware/usbdrv/oddebug.h @@ -5,7 +5,7 @@ * Tabsize: 4 * Copyright: (c) 2005 by OBJECTIVE DEVELOPMENT Software GmbH * License: GNU GPL v2 (see License.txt), GNU GPL v3 or proprietary (CommercialLicense.txt) - * This Revision: $Id: oddebug.h 692 2008-11-07 15:07:40Z cs $ + * This Revision: $Id$ */ #ifndef __oddebug_h_included__ diff --git a/firmware/usbdrv/usbconfig-prototype.h b/firmware/usbdrv/usbconfig-prototype.h index 847710e..826f026 100755 --- a/firmware/usbdrv/usbconfig-prototype.h +++ b/firmware/usbdrv/usbconfig-prototype.h @@ -5,7 +5,7 @@ * Tabsize: 4 * Copyright: (c) 2005 by OBJECTIVE DEVELOPMENT Software GmbH * License: GNU GPL v2 (see License.txt), GNU GPL v3 or proprietary (CommercialLicense.txt) - * This Revision: $Id: usbconfig-prototype.h 785 2010-05-30 17:57:07Z cs $ + * This Revision: $Id$ */ #ifndef __usbconfig_h_included__ diff --git a/firmware/usbdrv/usbdrv.c b/firmware/usbdrv/usbdrv.c index 21ed554..5594407 100755 --- a/firmware/usbdrv/usbdrv.c +++ b/firmware/usbdrv/usbdrv.c @@ -5,7 +5,7 @@ * Tabsize: 4 * Copyright: (c) 2005 by OBJECTIVE DEVELOPMENT Software GmbH * License: GNU GPL v2 (see License.txt), GNU GPL v3 or proprietary (CommercialLicense.txt) - * This Revision: $Id: usbdrv.c 791 2010-07-15 15:56:13Z cs $ + * This Revision: $Id$ */ #include "usbportability.h" @@ -67,7 +67,7 @@ optimizing hints: #if USB_CFG_DESCR_PROPS_STRING_0 == 0 #undef USB_CFG_DESCR_PROPS_STRING_0 #define USB_CFG_DESCR_PROPS_STRING_0 sizeof(usbDescriptorString0) -PROGMEM char usbDescriptorString0[] = { /* language descriptor */ +PROGMEM const char usbDescriptorString0[] = { /* language descriptor */ 4, /* sizeof(usbDescriptorString0): length of descriptor in bytes */ 3, /* descriptor type */ 0x09, 0x04, /* language index (0x0409 = US-English) */ @@ -77,7 +77,7 @@ PROGMEM char usbDescriptorString0[] = { /* language descriptor */ #if USB_CFG_DESCR_PROPS_STRING_VENDOR == 0 && USB_CFG_VENDOR_NAME_LEN #undef USB_CFG_DESCR_PROPS_STRING_VENDOR #define USB_CFG_DESCR_PROPS_STRING_VENDOR sizeof(usbDescriptorStringVendor) -PROGMEM int usbDescriptorStringVendor[] = { +PROGMEM const int usbDescriptorStringVendor[] = { USB_STRING_DESCRIPTOR_HEADER(USB_CFG_VENDOR_NAME_LEN), USB_CFG_VENDOR_NAME }; @@ -86,7 +86,7 @@ PROGMEM int usbDescriptorStringVendor[] = { #if USB_CFG_DESCR_PROPS_STRING_PRODUCT == 0 && USB_CFG_DEVICE_NAME_LEN #undef USB_CFG_DESCR_PROPS_STRING_PRODUCT #define USB_CFG_DESCR_PROPS_STRING_PRODUCT sizeof(usbDescriptorStringDevice) -PROGMEM int usbDescriptorStringDevice[] = { +PROGMEM const int usbDescriptorStringDevice[] = { USB_STRING_DESCRIPTOR_HEADER(USB_CFG_DEVICE_NAME_LEN), USB_CFG_DEVICE_NAME }; @@ -95,7 +95,7 @@ PROGMEM int usbDescriptorStringDevice[] = { #if USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER == 0 && USB_CFG_SERIAL_NUMBER_LEN #undef USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER #define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER sizeof(usbDescriptorStringSerialNumber) -PROGMEM int usbDescriptorStringSerialNumber[] = { +PROGMEM const int usbDescriptorStringSerialNumber[] = { USB_STRING_DESCRIPTOR_HEADER(USB_CFG_SERIAL_NUMBER_LEN), USB_CFG_SERIAL_NUMBER }; @@ -108,7 +108,7 @@ PROGMEM int usbDescriptorStringSerialNumber[] = { #if USB_CFG_DESCR_PROPS_DEVICE == 0 #undef USB_CFG_DESCR_PROPS_DEVICE #define USB_CFG_DESCR_PROPS_DEVICE sizeof(usbDescriptorDevice) -PROGMEM char usbDescriptorDevice[] = { /* USB device descriptor */ +PROGMEM const char usbDescriptorDevice[] = { /* USB device descriptor */ 18, /* sizeof(usbDescriptorDevice): length of descriptor in bytes */ USBDESCR_DEVICE, /* descriptor type */ 0x10, 0x01, /* USB version supported */ @@ -139,7 +139,7 @@ PROGMEM char usbDescriptorDevice[] = { /* USB device descriptor */ #if USB_CFG_DESCR_PROPS_CONFIGURATION == 0 #undef USB_CFG_DESCR_PROPS_CONFIGURATION #define USB_CFG_DESCR_PROPS_CONFIGURATION sizeof(usbDescriptorConfiguration) -PROGMEM char usbDescriptorConfiguration[] = { /* USB configuration descriptor */ +PROGMEM const char usbDescriptorConfiguration[] = { /* USB configuration descriptor */ 9, /* sizeof(usbDescriptorConfiguration): length of descriptor in bytes */ USBDESCR_CONFIG, /* descriptor type */ 18 + 7 * USB_CFG_HAVE_INTRIN_ENDPOINT + 7 * USB_CFG_HAVE_INTRIN_ENDPOINT3 + @@ -361,7 +361,8 @@ uchar flags = USB_FLG_MSGPTR_IS_ROM; */ static inline usbMsgLen_t usbDriverSetup(usbRequest_t *rq) { -uchar len = 0, *dataPtr = usbTxBuf + 9; /* there are 2 bytes free space at the end of the buffer */ +usbMsgLen_t len = 0; +uchar *dataPtr = usbTxBuf + 9; /* there are 2 bytes free space at the end of the buffer */ uchar value = rq->wValue.bytes[0]; #if USB_CFG_IMPLEMENT_HALT uchar index = rq->wIndex.bytes[0]; @@ -557,6 +558,8 @@ uchar isReset = !notResetState; USB_RESET_HOOK(isReset); wasReset = isReset; } +#else + notResetState = notResetState; // avoid compiler warning #endif } diff --git a/firmware/usbdrv/usbdrv.h b/firmware/usbdrv/usbdrv.h index 3a78f30..9bee353 100755 --- a/firmware/usbdrv/usbdrv.h +++ b/firmware/usbdrv/usbdrv.h @@ -5,7 +5,7 @@ * Tabsize: 4 * Copyright: (c) 2005 by OBJECTIVE DEVELOPMENT Software GmbH * License: GNU GPL v2 (see License.txt), GNU GPL v3 or proprietary (CommercialLicense.txt) - * This Revision: $Id: usbdrv.h 793 2010-07-15 15:58:11Z cs $ + * This Revision: $Id$ */ #ifndef __usbdrv_h_included__ @@ -122,7 +122,7 @@ USB messages, even if they address another (low-speed) device on the same bus. /* --------------------------- Module Interface ---------------------------- */ /* ------------------------------------------------------------------------- */ -#define USBDRV_VERSION 20100715 +#define USBDRV_VERSION 20120109 /* This define uniquely identifies a driver version. It is a decimal number * constructed from the driver's release date in the form YYYYMMDD. If the * driver's behavior or interface changes, you can use this constant to @@ -237,7 +237,7 @@ USB_PUBLIC void usbSetInterrupt3(uchar *data, uchar len); #endif /* USB_CFG_HAVE_INTRIN_ENDPOINT */ #if USB_CFG_HID_REPORT_DESCRIPTOR_LENGTH /* simplified interface for backward compatibility */ #define usbHidReportDescriptor usbDescriptorHidReport -/* should be declared as: PROGMEM char usbHidReportDescriptor[]; */ +/* should be declared as: PROGMEM const char usbHidReportDescriptor[]; */ /* If you implement an HID device, you need to provide a report descriptor. * The HID report descriptor syntax is a bit complex. If you understand how * report descriptors are constructed, we recommend that you use the HID @@ -450,43 +450,43 @@ extern volatile schar usbRxLen; #ifndef __ASSEMBLER__ extern #if !(USB_CFG_DESCR_PROPS_DEVICE & USB_PROP_IS_RAM) -PROGMEM +PROGMEM const #endif char usbDescriptorDevice[]; extern #if !(USB_CFG_DESCR_PROPS_CONFIGURATION & USB_PROP_IS_RAM) -PROGMEM +PROGMEM const #endif char usbDescriptorConfiguration[]; extern #if !(USB_CFG_DESCR_PROPS_HID_REPORT & USB_PROP_IS_RAM) -PROGMEM +PROGMEM const #endif char usbDescriptorHidReport[]; extern #if !(USB_CFG_DESCR_PROPS_STRING_0 & USB_PROP_IS_RAM) -PROGMEM +PROGMEM const #endif char usbDescriptorString0[]; extern #if !(USB_CFG_DESCR_PROPS_STRING_VENDOR & USB_PROP_IS_RAM) -PROGMEM +PROGMEM const #endif int usbDescriptorStringVendor[]; extern #if !(USB_CFG_DESCR_PROPS_STRING_PRODUCT & USB_PROP_IS_RAM) -PROGMEM +PROGMEM const #endif int usbDescriptorStringDevice[]; extern #if !(USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER & USB_PROP_IS_RAM) -PROGMEM +PROGMEM const #endif int usbDescriptorStringSerialNumber[]; @@ -719,6 +719,7 @@ typedef struct usbRequest{ #define USBDESCR_HID_PHYS 0x23 //#define USBATTR_BUSPOWER 0x80 // USB 1.1 does not define this value any more +#define USBATTR_BUSPOWER 0 #define USBATTR_SELFPOWER 0x40 #define USBATTR_REMOTEWAKE 0x20 diff --git a/firmware/usbdrv/usbdrvasm.S b/firmware/usbdrv/usbdrvasm.S index 45fcf18..4e6158c 100755 --- a/firmware/usbdrv/usbdrvasm.S +++ b/firmware/usbdrv/usbdrvasm.S @@ -5,7 +5,7 @@ * Tabsize: 4 * Copyright: (c) 2007 by OBJECTIVE DEVELOPMENT Software GmbH * License: GNU GPL v2 (see License.txt), GNU GPL v3 or proprietary (CommercialLicense.txt) - * Revision: $Id: usbdrvasm.S 785 2010-05-30 17:57:07Z cs $ + * Revision: $Id$ */ /* diff --git a/firmware/usbdrv/usbdrvasm12.inc b/firmware/usbdrv/usbdrvasm12.inc index c116758..cb74ceb 100755 --- a/firmware/usbdrv/usbdrvasm12.inc +++ b/firmware/usbdrv/usbdrvasm12.inc @@ -5,7 +5,7 @@ * Tabsize: 4 * Copyright: (c) 2007 by OBJECTIVE DEVELOPMENT Software GmbH * License: GNU GPL v2 (see License.txt), GNU GPL v3 or proprietary (CommercialLicense.txt) - * This Revision: $Id: usbdrvasm12.inc 740 2009-04-13 18:23:31Z cs $ + * This Revision: $Id$ */ /* Do not link this file! Link usbdrvasm.S instead, which includes the diff --git a/firmware/usbdrv/usbdrvasm128.inc b/firmware/usbdrv/usbdrvasm128.inc index bcd6621..122cc75 100755 --- a/firmware/usbdrv/usbdrvasm128.inc +++ b/firmware/usbdrv/usbdrvasm128.inc @@ -5,7 +5,7 @@ * Tabsize: 4 * Copyright: (c) 2008 by OBJECTIVE DEVELOPMENT Software GmbH * License: GNU GPL v2 (see License.txt), GNU GPL v3 or proprietary (CommercialLicense.txt) - * This Revision: $Id: usbdrvasm128.inc 758 2009-08-06 10:12:54Z cs $ + * This Revision: $Id$ */ /* Do not link this file! Link usbdrvasm.S instead, which includes the diff --git a/firmware/usbdrv/usbdrvasm15.inc b/firmware/usbdrv/usbdrvasm15.inc index 401b7f8..ce10391 100755 --- a/firmware/usbdrv/usbdrvasm15.inc +++ b/firmware/usbdrv/usbdrvasm15.inc @@ -5,7 +5,7 @@ * Tabsize: 4 * Copyright: (c) 2007 by OBJECTIVE DEVELOPMENT Software GmbH * License: GNU GPL v2 (see License.txt), GNU GPL v3 or proprietary (CommercialLicense.txt) - * Revision: $Id: usbdrvasm15.inc 740 2009-04-13 18:23:31Z cs $ + * Revision: $Id$ */ /* Do not link this file! Link usbdrvasm.S instead, which includes the diff --git a/firmware/usbdrv/usbdrvasm16.inc b/firmware/usbdrv/usbdrvasm16.inc index 207b6e4..4c00faa 100755 --- a/firmware/usbdrv/usbdrvasm16.inc +++ b/firmware/usbdrv/usbdrvasm16.inc @@ -5,7 +5,7 @@ * Tabsize: 4 * Copyright: (c) 2007 by OBJECTIVE DEVELOPMENT Software GmbH * License: GNU GPL v2 (see License.txt), GNU GPL v3 or proprietary (CommercialLicense.txt) - * Revision: $Id: usbdrvasm16.inc 760 2009-08-09 18:59:43Z cs $ + * Revision: $Id$ */ /* Do not link this file! Link usbdrvasm.S instead, which includes the diff --git a/firmware/usbdrv/usbdrvasm165.inc b/firmware/usbdrv/usbdrvasm165.inc index 79b3c61..d8a95ba 100755 --- a/firmware/usbdrv/usbdrvasm165.inc +++ b/firmware/usbdrv/usbdrvasm165.inc @@ -5,7 +5,7 @@ * Tabsize: 4 * Copyright: (c) 2007 by OBJECTIVE DEVELOPMENT Software GmbH * License: GNU GPL v2 (see License.txt), GNU GPL v3 or proprietary (CommercialLicense.txt) - * Revision: $Id: usbdrvasm165.inc 740 2009-04-13 18:23:31Z cs $ + * Revision: $Id$ */ /* Do not link this file! Link usbdrvasm.S instead, which includes the diff --git a/firmware/usbdrv/usbdrvasm18-crc.inc b/firmware/usbdrv/usbdrvasm18-crc.inc index f83347d..dde09da 100755 --- a/firmware/usbdrv/usbdrvasm18-crc.inc +++ b/firmware/usbdrv/usbdrvasm18-crc.inc @@ -5,7 +5,7 @@ * Tabsize: 4 * Copyright: (c) 2008 by Lukas Schrittwieser and OBJECTIVE DEVELOPMENT Software GmbH * License: GNU GPL v2 (see License.txt), GNU GPL v3 or proprietary (CommercialLicense.txt) - * Revision: $Id: usbdrvasm18-crc.inc 740 2009-04-13 18:23:31Z cs $ + * Revision: $Id$ */ /* Do not link this file! Link usbdrvasm.S instead, which includes the diff --git a/firmware/usbdrv/usbdrvasm20.inc b/firmware/usbdrv/usbdrvasm20.inc index 303abaf..0c74679 100755 --- a/firmware/usbdrv/usbdrvasm20.inc +++ b/firmware/usbdrv/usbdrvasm20.inc @@ -6,7 +6,7 @@ * Tabsize: 4 * Copyright: (c) 2008 by Jeroen Benschop and OBJECTIVE DEVELOPMENT Software GmbH * License: GNU GPL v2 (see License.txt), GNU GPL v3 or proprietary (CommercialLicense.txt) - * Revision: $Id: usbdrvasm20.inc 740 2009-04-13 18:23:31Z cs $ + * Revision: $Id$ */ /* Do not link this file! Link usbdrvasm.S instead, which includes the diff --git a/firmware/usbdrv/usbportability.h b/firmware/usbdrv/usbportability.h index 476184d..a1ea93b 100755 --- a/firmware/usbdrv/usbportability.h +++ b/firmware/usbdrv/usbportability.h @@ -5,7 +5,7 @@ * Tabsize: 4 * Copyright: (c) 2008 by OBJECTIVE DEVELOPMENT Software GmbH * License: GNU GPL v2 (see License.txt), GNU GPL v3 or proprietary (CommercialLicense.txt) - * This Revision: $Id: usbportability.h 785 2010-05-30 17:57:07Z cs $ + * This Revision: $Id$ */ /*