Skip to content
Snippets Groups Projects
Select Git revision
1 result Searching

C_CodeGen.jrag

Blame
  • labcomm.c 11.24 KiB
    #include <errno.h>
    #include <string.h>
    #include <stdio.h>
    #ifndef __VXWORKS__
    #include <strings.h>
    #endif
    #include <stdlib.h>
    #ifdef __VXWORKS__
    #if (CPU == PPC603)
    #undef _LITTLE_ENDIAN
    #endif
    #if (CPU == PENTIUM4)
    #undef _BIG_ENDIAN
    #endif
    #endif
    #include "labcomm.h"
    #include "labcomm_private.h"
    
    typedef struct labcomm_sample_entry {
      struct labcomm_sample_entry *next;
      int index;
      labcomm_signature_t *signature;
      labcomm_decoder_typecast_t decoder;
      labcomm_handler_typecast_t handler;
      labcomm_encode_typecast_t encode;
      void *context;
    } labcomm_sample_entry_t;
    
    typedef struct labcomm_encoder_context {
      labcomm_sample_entry_t *sample;
      int index;
    } labcomm_encoder_context_t;
    
    typedef struct labcomm_decoder_context {
      labcomm_sample_entry_t *sample;
    } labcomm_decoder_context_t;
    
    static labcomm_sample_entry_t *get_sample_by_signature_address(
      labcomm_sample_entry_t *head,
      labcomm_signature_t *signature)
    {
      labcomm_sample_entry_t *p;
      for (p = head ; p && p->signature != signature ; p = p->next) {
    
      }
      return p;
    }
    
    static labcomm_sample_entry_t *get_sample_by_signature_value(
      labcomm_sample_entry_t *head,
      labcomm_signature_t *signature)
    {
      labcomm_sample_entry_t *p;
      for (p = head ; p ; p = p->next) {
        if (p->signature->type == signature->type &&
    	p->signature->size == signature->size &&
    	strcmp(p->signature->name, signature->name) == 0 &&
    	bcmp((void*)p->signature->signature, (void*)signature->signature,
    	     signature->size) == 0) {
          break;
        }
      }
      return p;
    }
    
    static labcomm_sample_entry_t *get_sample_by_index(
      labcomm_sample_entry_t *head,
      int index)
    {
      labcomm_sample_entry_t *p;