1010#include < klib/usb/usb/video/descriptor.hpp>
1111
1212namespace klib ::usb::device {
13- template <uint32_t Width, uint32_t Height, uint32_t InterruptEndpoint = 6 , uint32_t Endpoint = 8 >
13+ template <uint32_t Width, uint32_t Height, uint32_t InterruptEndpoint = 6 , uint32_t IsoEndpoint = 8 , uint32_t MaxIsoEndpointSize = 1023 >
1414 class camera {
1515 protected:
1616 /* *
@@ -228,7 +228,7 @@ namespace klib::usb::device {
228228 sizeof (video::video_mjpeg_format) +
229229 sizeof (video::video_mjpeg_frame<video::continuous_frame_intervals>)
230230 ),
231- .bEndpointAddress = 0x80 | Endpoint ,
231+ .bEndpointAddress = 0x80 | IsoEndpoint ,
232232 .bmInfo = 0x00 ,
233233 .bTerminalLink = static_cast <uint8_t >(unit_index::output_unit),
234234 .bStillCaptureMethod = 0x01 ,
@@ -272,9 +272,9 @@ namespace klib::usb::device {
272272 .iInterface = 0x00 ,
273273 },
274274 {
275- .bEndpointAddress = 0x80 | Endpoint ,
275+ .bEndpointAddress = 0x80 | IsoEndpoint ,
276276 .bmAttributes = static_cast <uint8_t >(klib::usb::descriptor::transfer_type::isochronous),
277- .wMaxPacketSize = 1023 ,
277+ .wMaxPacketSize = MaxIsoEndpointSize ,
278278 .bInterval = 0x01
279279 }
280280 };
@@ -296,7 +296,7 @@ namespace klib::usb::device {
296296 // serial number string descriptor
297297 const __attribute__ ((aligned(4 ))) static inline auto serial = string_descriptor(" 00001337" );
298298
299- __attribute__ ((aligned(4 ))) static inline uint8_t video_buffer[1023 ] = {};
299+ __attribute__ ((aligned(4 ))) static inline uint8_t video_buffer[MaxIsoEndpointSize ] = {};
300300
301301 // configuration value. Value is set in the set config function
302302 static inline uint8_t configuration = 0x00 ;
@@ -524,7 +524,7 @@ namespace klib::usb::device {
524524 >(), " invalid interrupt selected" );
525525
526526 static_assert (Usb::template is_valid_endpoint<
527- Endpoint ,
527+ IsoEndpoint ,
528528 klib::usb::descriptor::transfer_type::isochronous
529529 >(), " invalid isochronous selected" );
530530 }
0 commit comments