3030
3131
3232def swapbyteorder (data : bytearray ) -> bytearray :
33+ """
34+ @note Since v0.4.2
35+
36+ @details
37+ Function swaps byte array pair: 0 with 1, 2 with 3, 4 with 5 and so on.
38+ If byte count is odd then last byte is left unchanged.
39+
40+ @return Input `data` reference
41+ """
3342 for j in range (0 , len (data ) // 2 ):
3443 i = j * 2
3544 data [i ], data [i + 1 ] = data [i + 1 ], data [i ]
@@ -242,6 +251,8 @@ def setbytes(self, byteoffset:int, value:type[bytes|bytearray])->None:
242251 c = self ._countbytes - byteoffset
243252 else :
244253 c = count
254+ if not isinstance (value , bytes ):
255+ value = bytes (value )
245256 self ._shm .lock ()
246257 memmove (self ._pmembytes [byteoffset ], value , c )
247258 memset (self ._pmaskbytes [byteoffset ], - 1 , c )
@@ -418,7 +429,11 @@ def getbitstring(self, bitoffset:int, bytecount:int)->str:
418429 @param[in] bitoffset Bit offset (0-based).
419430 @param[in] bytecount Count of byte of `utf-8` string encoding to read.
420431 """
432+ ## @cond
433+ if self ._byteorder == 'big' :
434+ return swapbyteorder (self .getbitbytearray (bitoffset , bytecount * 8 )).decode ()
421435 return self .getbitbytes (bitoffset , bytecount * 8 ).decode ()
436+ ## @endcond
422437
423438 def setbitstring (self , bitoffset :int , value :str )-> None :
424439 """
@@ -434,10 +449,13 @@ def setbitstring(self, bitoffset:int, value:str)->None:
434449 register with offset 1 is bit offset 16-31, etc.
435450
436451 @param[in] bitoffset Bit offset (0-based).
437- @param[in] value Written string value.
452+ @param[in] value String value to be written .
438453 """
439454 ## @cond
440- b = value .encode ()
455+ if self ._byteorder == 'big' :
456+ b = swapbyteorder (bytearray (value .encode ()))
457+ else :
458+ b = value .encode ()
441459 self .setbitbytes (bitoffset , len (b )* 8 , b )
442460 ## @endcond
443461
@@ -457,7 +475,11 @@ def getbytestring(self, byteoffset:int, bytecount:int)->str:
457475 @param[in] byteoffset Byte offset (0-based).
458476 @param[in] bytecount Count of bytes to read.
459477 """
478+ ## @cond
479+ if self ._byteorder == 'big' :
480+ return swapbyteorder (self .getbytearray (byteoffset , bytecount )).decode ()
460481 return self .getbytes (byteoffset , bytecount ).decode ()
482+ ## @endcond
461483
462484 def setbytestring (self , byteoffset :int , value :str )-> None :
463485 """
@@ -474,9 +496,15 @@ def setbytestring(self, byteoffset:int, value:str)->None:
474496 register with offset 1 is byte offset 2 and 3, etc.
475497
476498 @param[in] byteoffset Byte offset (0-based).
477- @param[in] value Written string value.
499+ @param[in] value String value to be written .
478500 """
479- self .setbytes (byteoffset , value .encode ())
501+ ## @cond
502+ if self ._byteorder == 'big' :
503+ b = swapbyteorder (bytearray (value .encode ()))
504+ else :
505+ b = value .encode ()
506+ self .setbytes (byteoffset , b )
507+ ## @endcond
480508
481509 def getregstring (self , regoffset :int , bytecount :int )-> str :
482510 """
@@ -496,7 +524,11 @@ def getregstring(self, regoffset:int, bytecount:int)->str:
496524 @param[in] regoffset 16-bit register offset (0-based).
497525 @param[in] bytecount Count of bytes to read.
498526 """
527+ ## @cond
528+ if self ._byteorder == 'big' :
529+ return swapbyteorder (self .getbytearray (regoffset * 2 , bytecount )).decode ()
499530 return self .getbytes (regoffset * 2 , bytecount ).decode ()
531+ ## @endcond
500532
501533 def setregstring (self , regoffset :int , value :str )-> None :
502534 """
@@ -514,9 +546,16 @@ def setregstring(self, regoffset:int, value:str)->None:
514546 register with offset 1 is byte offset 2 and 3, etc.
515547
516548 @param[in] regoffset 16-bit register offset (0-based).
517- @param[in] value Written string value.
549+ @param[in] value String value to be written .
518550 """
519- self .setbytes (regoffset * 2 , value .encode ())
551+ ## @cond
552+ if self ._byteorder == 'big' :
553+ b = swapbyteorder (bytearray (value .encode ()))
554+ else :
555+ b = value .encode ()
556+ self .setbytes (regoffset * 2 , b )
557+ ## @endcond
558+
520559
521560class _MemoryBlockBits (_MemoryBlock ):
522561 """Class for the bit memory objects: mem0x, mem1x.
0 commit comments