code: def unpackSeptets(septets, numberOfSeptets=None, prevOctet=None, shift=7):
          
      result = bytearray()    
      if type(septets) == str:
          septets = iter(rawStrToByteArray(septets))
      elif type(septets) == bytearray:
          septets = iter(septets)    
      if numberOfSeptets == None:        
          numberOfSeptets = MAX_INT # Loop until StopIteration
      i = 0
      for octet in septets:
          i += 1
          if shift == 7:
              shift = 1
              if prevOctet != None:                
                  result.append(prevOctet >> 1)            
              if i <= numberOfSeptets:
                  result.append(octet & 0x7F)
                  prevOctet = octet                
              if i == numberOfSeptets:
                  break
              else:
                  continue
          b = ((octet << shift) & 0x7F) | (prevOctet >> (8 - shift))
          
          prevOctet = octet        
          result.append(b)
          shift += 1
          
          if i == numberOfSeptets:
              break
      if shift == 7:
          b = prevOctet >> (8 - shift)
          if b:
              # The final septet value still needs to be unpacked
              result.append(b)        
      return result
docs: Unpacks the specified septets into octets 
      
      :param septets: Iterator or iterable containing the septets packed into octets
      :type septets: iter(bytearray), bytearray or str
      :param numberOfSeptets: The amount of septets to unpack (or None for all remaining in "septets")
      :type numberOfSeptets: int or None
      
      :return: The septets unpacked into octets
      :rtype: bytearray