VZTECH / Mbed 2 deprecated header_main

Dependencies:   EthernetInterface NTPClient mbed-rtos mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers rtpbuf.cpp Source File

rtpbuf.cpp

00001 #include <stdlib.h>
00002 
00003 #include "debug.h"
00004 #include "rtpbuf.h"
00005 
00006 static void xmemcpy32(uint32_t * dest, uint32_t * src, uint16_t size) {
00007   size >>= 2;
00008   while (size--) *dest++ = *src++;
00009 }
00010 
00011 static void xmemcpy(uint8_t * dest, uint8_t * src, uint16_t size) {
00012   while (size--) *dest++ = *src++;
00013 }
00014 
00015 /*
00016 rtpbuf_t * rtpbuf_init(void) {
00017     }
00018 void rtpbuf_destroy(rtpbuf_t ** self) {
00019   free(*self)
00020 *self = NULL;
00021 }
00022 */
00023 
00024 void rtpbuf_clear (rtpbuf_t * self) {
00025   self->size = 0;
00026 }
00027 
00028 void rtpbuf_put (rtpbuf_t * self, int size, uint8_t * data){
00029   if ((size + self->size) <= RTPBUF_BUFSIZE){
00030     xmemcpy((uint8_t*)self->b+self->size,data,size);
00031     self->size += size;
00032     //debug_msg("put %d -> %d",size,self->size);
00033   } else {
00034     //debug_msg("put-failed %d -> %d",size,self->size);
00035   }
00036 }
00037 
00038 uint8_t * rtpbuf_get (rtpbuf_t * self) {
00039   if (self->size < RTPBUF_PKGSIZE) {
00040     //debug_msg("get-failed %d", self->size);
00041     return NULL;
00042   }
00043   //debug_msg("get %d", self->size);
00044   return (uint8_t*) self->b;
00045 }
00046 
00047 void rtpbuf_next (rtpbuf_t * self) {
00048   if (self->size < RTPBUF_PKGSIZE) {
00049     //debug_msg("next-failed %d", self->size);
00050   } else {
00051     //int i;
00052     //i = self->size;
00053     self->size -= RTPBUF_PKGSIZE;
00054     if (self->size > 0) {
00055       xmemcpy32(self->b, (self->b)+(RTPBUF_PKGSIZE>>2), self->size);
00056       //debug_msg("nextA %d -> %d", i, self->size);
00057     } else {
00058       //debug_msg("nextB %d -> %d", i, self->size);
00059     }
00060   }
00061 }