⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 manip.c

📁 这是有名的<<嵌入式系统TCP/IP应用层协议>>,M.Tim Jones 著
💻 C
字号:
/* *  Embedded SLP Message Manipulation Functions * *  ./software/ch10/emslp * *  mtj@cogitollc.com * */#include <stdio.h>#include "manip.h"/* *  emitByte() * *  Emit an octet into an slpMsg stream. * */void emitByte( slpMsgType *slpMsg, uint8_t value){  if (slpMsg == NULL) return;  slpMsg->buffer[slpMsg->index++] = value;  slpMsg->len++;}/* *  emitShort() * *  Emit a short (16 bits) into an slpMsg stream. * */void emitShort( slpMsgType *slpMsg, uint16_t value){  if (slpMsg == NULL) return;  slpMsg->buffer[slpMsg->index++] = (unsigned char )(value >> 8);  slpMsg->buffer[slpMsg->index++] = (unsigned char )(value & 0xff);  slpMsg->len+=2;}/* *  emitString() * *  Emit a variable length string into an slpMsg stream. * */void emitString( slpMsgType *slpMsg, const char *string){  int i, len = strlen(string);  if ((slpMsg == NULL) || (string == NULL)) return;  for (i = 0 ; i < len ; i++) emitByte(slpMsg, string[i]);}/* *  getByte() * *  Get an octet from an slpMsg stream. * */int getByte( slpMsgType *slpMsg, uint8_t *value){  int ret = -1;  if (slpMsg == NULL) return -1;  if (slpMsg->index < slpMsg->len) {    if (value) {      *value = slpMsg->buffer[slpMsg->index++];    } else {      slpMsg->index++;    }    ret = 0;  }   return ret;}/* *  getShort() * *  Get a short from an slpMsg stream. * */int getShort( slpMsgType *slpMsg, uint16_t *value){  int ret = -1;  if (slpMsg == NULL) return -1;  if (slpMsg->index+1 < slpMsg->len) {    if (value) {      *value  = slpMsg->buffer[slpMsg->index++] << 8;      *value |= slpMsg->buffer[slpMsg->index++];    } else {      slpMsg->index+=2;    }    ret = 0;  }  return ret;}/* *  getTriOctet() * *  Get a 3 octet word from the slpMsg stream. * */int getTriOctet( slpMsgType *slpMsg, uint32_t *value){  int ret = -1;  if (slpMsg == NULL) return -1;  if (slpMsg->index+2 < slpMsg->len) {    if (value) {      *value  = slpMsg->buffer[slpMsg->index++] << 16;      *value |= slpMsg->buffer[slpMsg->index++] <<  8;      *value |= slpMsg->buffer[slpMsg->index++];    } else {      slpMsg->index+=3;    }    ret = 0;  }   return ret;}/* *  getString() * *  Get a variable length string from an slpMsg stream. * */int getString( slpMsgType *slpMsg, int len, char *string){  int i, ret = -1;  if (slpMsg == NULL) return -1;  if (slpMsg->index+len < slpMsg->len) {    if (string) {      for (i = 0 ; i < len ; i++) {        string[i] = slpMsg->buffer[slpMsg->index+i];      }      string[i] = 0;    }    slpMsg->index += len;    ret = 0;  }  return ret;}/* *  Copyright (c) 2002 Charles River Media.  All rights reserved. *  *  Redistribution and use in source and binary forms, with or  *  without modification, is hereby granted without fee provided  *  that the following conditions are met: *  *    1.  Redistributions of source code must retain the above  *        copyright notice, this list of conditions and the  *        following disclaimer. *    2.  Redistributions in binary form must reproduce the above *        copyright notice, this list of conditions and the  *        following disclaimer in the documentation and/or other  *        materials provided with the distribution. *    3.  Neither the name of Charles River Media nor the names of  *        its contributors may be used to endorse or promote products  *        derived from this software without specific prior  *        written permission. *  * THIS SOFTWARE IS PROVIDED BY CHARLES RIVER MEDIA AND CONTRIBUTERS  * 'AS IS' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL CHARLES * RIVER MEDIA OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,  * INCIDENTAL, SPECIAL, EXEMPLARAY, OR CONSEQUENTIAL DAMAGES (INCLUDING,  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS  * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED  * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE  * POSSIBILITY OF SUCH DAMAGE. */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -